(Preparatory Course)
Course No.: COSC 301
Course Title: Computer Problem Solving and Programming
Credit hours: 6
Course Description: This course is designed for graduate students with deficiencies
in programming concepts. Topics include: Structured problem solving, algorithm
development, data representation, basic data structures and their implementation,
sort and search techniques, computer systems concepts, and introduction to
software development.
Course Objectives:
Upon the completion of this course students must:
1. understand and use the concepts of structured problem solving,
2. understand the use of abstraction in problem solving,
3. learn to program using a high-level programming language,
4. understand and use the basics of software development principles,
5. be familiar with concepts used in algorithm analysis,
6. understand and implement linear and nonlinear data structures,
7. know several different sort and search algorithms, and
8. understand and use the concept of recursive algorithms.
Suggested Textbooks:
1. Deitel/Deitel, C: How to Program, Prentice-Hall, 1995.
2. T. A. Standish, Data Structures, Algorithms, and Software Principles in C,
Addison-Wesley, 1995.
Course Topics:
Structured Problem Solving (1 week)
Problem definition
Input/output analysis
Solution design
Solution testing
Algorithm Development/Design (1 week)
Modular design
Top-down design
Structured design
Algorithm metrics
Structure
Efficiency
Correctness
Feasibility
Reliability
Problem Solution Structures and Representation (2 weeks)
Pseudocode representation
Data declaration
Sequential statements
Selection structures
Two-way
N-way
Iteration structures
Condition-controlled
Counter-controlled
Procedures
Functions
Structures Programming Using a Modern High-level Programming Language (4 weeks)
Simple data definition
Simple Type definition
Control structures
Subprograms
Recursive programming
User-defined data type
Data abstractions
Introduction to algorithm analysis
Data Structures: their Implementation and Applications (4 weeks)
Arrays
Records
Files
Strings
Linked lists
Stacks and queues
Introduction to trees
Binary trees
Sort and Search techniques (2 weeks)
Exchange sort
Bubble sort
Shell sort
Quick sort
Binary search tree
Linear search algorithm
Binary search algorithm
Merge sort
Program Development Consideration (1 week)
Program design
Program structure, readability, and appearance
Program documentation
Program logic and modularity
Course Requirements:
Programming Assignments 40%
Exams 60%
Grading:
This course is graded as Satisfactory/Unsatisfactory. A minimum score of 75% is
needed for satisfactory completion of the course.
Back to course list
(Preparatory Course)
Course No.: COSC 302
Course Title: Computer Systems Architecture
Credit Hours: 6
Prerequisite: COSC 301 and Department Permission
Course Description: This course is designed for students admitted to the
Graduate program in Computer Science who have deficiencies in Fundamentals of
Computer System Architecture. The topics covered in this course include: principles
of an assembly language programming, introduction to computer architecture, internal
representation of data and instruction, memory organization, microprogramming,
multi-level machines, super computers and parallel computers.
Suggested Textbooks:
1. W. C. Runnion, Structured Programming in Assembly Language for the IBM PC and
OS/2, 2nd Edition, PWS Publishing, 1995.
2. Tanenbaum A., Structured Computer Organization, 3rd Ed. Prentice Hall, 1990.
Suggested References:
1. ACM Transactions on Computer Systems
2. ACM - Special Interest Group on Microprogramming
3. Communications of the ACM
4. Computer (IEEE)
Course Topics:
Introduction to Computer Architecture (1 week)
Central Processing Unit
Memory
Memory address
Absolute, virtual and relative memory addressing
Input/Output Devices (1 week)
Data Representation in Computers (1 week)
Integer data
Floating point data
Character data
Introduction to Assembly Languages (4 weeks)
Addressing modes
I/O instruction
Bit manipulation instruction
Control instructions
Subroutines and Stacks
Program segmentation and linkage
Macros
Floating point instructions
Character manipulating instructions
Combinational design procedures (1 week)
Switching algebra, logic gates, manipulation of
switching expressions, multiplexer and decoder circuits
Sequential machines and design procedures (1 week)
Sequential circuits, flip flops, design examples and
implementation, shift registers and counters
Design of digital computer components (2 weeks)
Processor instruction sequencing, instruction decoding
and execution; basic arithmetic and logic circuits,
arithmetic and logic circuit organization, tristate
logic circuits, address decoding circuits, and memory
circuits: RAM and ROM
Computer organization microprogramming level (2 weeks)
Memory organization (for example: 8x64k ram chips)
Microinstruction, microprogram counter
Data flow and control
Horizontal and Vertical microprogramming
Computer organization conventional machine level (1 week)
Instruction set, data types, registers
Addressing and access methods
Paging, segmentation, cache memory
Privileged instructions and O.S. considerations
Comparative computer systems
Processor/Memory organization (1 week)
Performance evaluation, RISC machines
Examples might be chosen from: 68000, IBM 370, VAX
Laboratory Experiments:
The objective of doing the experiments is to understand the design of a computer.
The goal is to build some of the sections of a control computer using digital logic
circuits, memory, and other related hardware. Students will reach that goal through
small experiments in a systematic sequence. The experiments will be selected from
the following three groups:
1. Computer Control Circuits
Measurement of voltage and current in series and parallel
circuits. Implementation of clock and control circuits using
resistors, capacitors, and timer integrated circuits.
2. Combinational Circuits
Implementation of combinational circuits using; inverters,
buffers, AND, OR, NAND, NOR gates; multiplexers and decoders;
half or full adders; ALU or shift registers.
3. Sequential Circuits
Perform experiments involving address decoding and reading
and writing to a simple static memory device. Implement an
Algorithmic State Machine using multiplexers, decoders,
EPROM, or other IC chips. Experiment with address decoding
and device control through the output port of a PC.
Programming Assignments:
Assembly language programming will be assigned to illustrate the computer
organization concepts discussed in the course.
Course Requirements:
Midterm Exam 30%
Final Exam 30%
Programming assignments 20%
Lab Assignments 20%
Grading: The course is graded as satisfactory/Unsatisfactory. A minimum
score of 75% is required for satisfactory completion of the course.
Back to course list
Course No.: COSC 519
Course Title: Operating Systems Principles
Credit Hours: 3
Prerequisite: COSC 336/COSC 301
Course Description: An overview of the principles of operating systems. Topics
include multiple processes, process synchronization and intercommunicaton, resource
allocation, memory management, processor scheduling, and I/O device management.
Course Objectives:
1. Study of concepts used to implement operating systems
2. Study of processor, memory and device management
3. Study of operating system user interface
4. Class Project - design and implementation of a small multitasking
operating sytem
Suggested Textbook:
Andrew S. Tanenbaum, Modern Operating Systems, Prentice-Hall, 1992.
Suggested References:
1. Silberschatz and Galvin, Operating Systems Concepts, Addison-Wesley,
1994
2. Harvey M. Deitel, An Introduction to Operating Systems, Addison
Wesley, 1994
Course Topics:
Introduction
Course discussion and expectations (1 week)
Hardware
Review of computer hardware concepts (1 week)
Discussion of class project (2 weeks)
Architecture and design of operating systems (9 weeks)
Processor management
Memory management
Virtual Memory
I/O Device Management
File Management
Nucleus/process interaction
Virtual Machines
User Interfaces
Case studies (1 week)
Laboratory Projects:
Design and Implementation (or simulation) of a small multitasking operating
system.
Course Requirements:
Mid-term Exam 20%
Class Project 30%
Assignments 20%
Final Exam 30%
Back to course list
Course No: COSC 553
Course Title: Compiler Design I
Credit Hours: 3
Prerequisite: COSC 336/COSC 301
Course Description: Principles, techniques, algorithms, and structures
involved in the design and construction of compilers. Topics include: lexical
analysis, formal grammars, syntax, and semantics analysis, error recovery, code
generation and optimization.
Course Objectives:
a. To provide students with detailed knowledge of paring techniques.
b. To provide students with detailed knowledge of error detection and
recovery using different parsing techniques.
c. To provide students with introductory concepts in semantic and syntax
analysis of a programming language.
d. To provide students with introductory concepts in intermediate code
generation.
Suggested Textbooks:
1. Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools,
Addison-Wesley, 1985.
2. Levine, Mason, Brown, Lex & Yacc, 2nd edition, O'Reilly & Associates, Inc.
3. Class notes (150 to 200 pages)
Suggested References:
1. W. M. Waite and G. Goos, Compiler Construction Springer-Verlag, 1984.
2. Lewis II, Rosen Krantz, Stearns, Compiler Design Theory, Addison-Wesley,
1977.
3. Tremblay & Sorenson, The Theory and Practice of Compiler, McGraw Hill, 1985.
4. Jim Holmes, Object-oriented Compiler Construction, Prentice-Hall, 1995.
5. C. Fraser, D. Hanson, A Retractable C Compiler: Design and Implementation,
Benjamin/Cummings, 1995.
6. Hans Zima, Super Compilers for Parallel and Vector Computers, Addison-Wesley,
1990.
7. J. P. Bennett, Introduction to Compiling Techniques: A First Course Using
ANSI C, LEX and YACC, McGraw-Hill, 1990.
8. Allen I. Holub, Compiler Design in C, Prentice-Hall, 1990.
9. C. N. Fisher and R. J. LeBlanc Jr. Crafting a Compiler in C , Benjamin Cummings,
1991.
10. A. T. Schreiner and H. G. Friedman, Jr. Introduction to Compiler
Construction with UNIX, 2nd edition, Prentice-Hall, 1990.
Course Topics:
Overview of a Compiler
An Example of a One-pass Compiler
Lexical Analysis
Token recognition and specification
Finite state machines
Deterministic finite state automata
Non deterministic finite state automata
Push-down machines
Regular expressions
Lex- A Lexical Analyzer Generator
Lex source
Lex actions
Ambiguous source rules
Lex source definitions
Lex and yacc
Lex applications
Examples
Syntax Analysis
Context-free grammars
Ambiguous grammars
Parse trees
LL(1) grammars
LR(1) grammarsA
Attributed grammars
Top-down Parsing
Push-down parsers
LL(1) Parsers
Implementing LL(1) Parsers
Bottom-up Parsing
LR parsers
Creating LR parse tables
SLR(1) parsing
LALR(1) parsing
Implementing LALR(1) parsers
Translation (Syntax-directed)
Intermediate Codes
Three and four-tuples
Translation of arithmetic expressions
Translation of Boolean expressions
Translation of jump instructions
Translation of array reference in arithmetic operation
Translation of procedure calls
Translation of declaration and specification statements
Translation of care structure
Error Detection and Recovery
Lexical errors
Syntax errors
Recovery from syntax errors and selection of error messages
Execution errors
Automatic error correction
An overview of code optimization
Basic Blocks
Common subexpressions
Constant folding
Strength reduction
Dead code elimination
Code motion
Loop optimization
Storage management and symbol tables (if time permits)
Simple stack allocation
Storage allocation in FORTRAN
Storage allocation in block-structured languages
Symbol tables
Course Requirements:
Term project/homework 20%
Mid-term Exam 40%
Final Exam 40%
Back to course list
Course No: COSC 571
Course Title: Computer Performance Evaluation
Credit Hours: 3
Prerequisite: COSC 439/COSC 519
Course Description: Computer system performance evaluation methodologies,
techniques and tools including different types of monitors as a measurement tool,
work-load characterization, important performance indices, analytic modeling with
particular emphasis on the application of the operational queuing networking
modeling techniques to performance analysis, and technical aspects of computer
selection.
Course Objectives:
1. To introduce the fundamental concepts of computer systems performance
evaluation.
2. To provide instruction on the difficulties in planning, in light of
extremely rapid decreases in hardware costs.
3. To compare and evaluate the problems associated with management of
different configurations, including those in downsizing from mainframe
equipment.
Suggested Textbook:
1. Menasce D., Capacity Planning and Performance Modeling, Prentice-Hall,
1994.
Suggested References:
1. Ferrari, Serazzi and, Zeigner, Measurement and Tuning of Computer Systems,
Prentice Hall, 1981.
2. Tanenbaum, Andrew, Modern Operating Systems, Prentice Hall, 1992.
Course Topics:
Management Aspects of Capacity Planning (2.5 weeks)
Measurement Techniques (3 weeks)
Analytic Techniques (2.5 weeks)
Simulation Techniques (2.5 weeks)
Benchmarking (2.5 weeks)
Client/Server Systems Performance Evaluation (2 weeks)
Laboratory Projects:
Measurement Techniques (2 weeks)
Simulation (5 weeks)
Benchmarking (1 week)
Course Requirements:
Problem sets 40%
Class Participation (Talk on Project) 20%
Project 20%
Final Exam 20%
Back to course list
Course No: COSC 578
Course Title: Database Management Systems
Credit Hours: 3
Prerequisite: COSC 336
Course Description: Data models and sublanguages. Security and integrity
problems. The functions of the database administrator. The implementation and
use of a database management system. A comparison of widely used DBMS packages.
Course Objectives:
1. Study the theoretical aspects of database management systems.
2. Understand the database management system applications in real-world.
3. Identify the existing database management systems and their related tools.
4. Learn data modeling and apply to real-world database applications.
6. Learn programming skills in SQL, PL/SQL using Oracle DBMS.
7. Learn Oracle DBMS tools.
8. Study Object-Oriented architectures and one sample OODBMS (ObjectStore).
9. Identify database applications and develop database design methodologies.
Suggested Textbooks:
1. Ramez Elmasri and Shamkant B. Navathe, Fundamentals of Database Systems,
Second Edition, The Benjamin/Cummings Publications Company, Inc., 1994.
2. George Koch and Kevin Loney, Oracle, The Complete Reference, Third Edition,
Oracle Press.
Course Topics:
Introduction to Database Systems 1 week
database applications, users and their roles
database system concepts and classifications
database architectures and models
database system environment
commercially available DBMSs.
Relational Data Model 2 weeks
concepts
constraints
relational algebra
set theoretical operations
division operation
example queries.
SQL -- A Relational Database Language 3 weeks
data definition in SQL
data manipulation in SQL
query examples
views
embedded SQL, PL/SQL.
Entity Relationship diagrams 1 week
concepts
E/R diagrams
semantic models
examples.
The Relational Calculus 1 week
predicate calculus
tuple relational calculus
domain relational calculus
example queries.
Oracle Database Management System 1 week
basic architecture
SQL, PL/SQL
tools.
Normalization 2 weeks
functional dependencies
key formulations
normalization
examples.
Data Modeling 2 weeks
overview of database design
system catalog
mapping strategies
examples.
Object-Oriented DBMS 2 weeks
OO concepts
motivation
architectures and implementations
ObjectStore
code examples.
Course Requirements:
homework 25%
project 20%
class participation 5%
examinations. 50%
Group Project:
Students will participate in a group project to develop a real-world database
application. This project involves database analysis, design, modeling, and
implementation. The implementation will be done in either the Oracle DBMS or any
other DBMS of student's choice. Two to four students will form a team to work on
each non-overlapping project.
Back to course list
Course No: COSC 581
Course Title: Introduction to Artificial Intelligence
Credit Hours: 3
Prerequisites: COSC 336/COSC 301
Course Description: A survey of the problems and techniques involved in
producing or modeling intelligence in computers. Particular emphasis will be placed
on representation of knowledge and basic paradigms of problem solving. Topics
include game playing, theorem proving, natural language and learning systems.
Course Objectives:
1. study of concepts, techniques, applications, and theories of artificial
intelligence.
2. study of artificial intelligence programming languages
3. study of search and knowledge representation
4. study of AI problem solving methods.
Suggested Textbook:
G. F. Luger and W. A. Stubbfield, Artificial Intelligence Structures and Strategies
for Complex Problem Solving, 2nd ed, Addison-Wesley, 1993.
Suggested References:
1. P. H. Winston, Artificial Intelligence, Second Edition, Addison-Wesley,
1984.
2. S. L. Tanimoto, The Elements of Artificial Intelligence, Computer Science
Press, 1987.
3. M. W. Firebaugh, Artificial Intelligence, Boyd & Fraser Publishing Company,
1988.
4. N. J. Nilsson, Principles of Artificial Intelligence, Tioga, 1980.
Course Topics:
AI history and application areas: (1 week)
game playing
automated reasoning and theorem proving
expert systems
natural language understanding and semantic modeling
modeling human performance
planning and robotics
languages and environments
machine learning
Predicate Calculus and search (1 week)
knowledge representation and problem solving as search
predicate calculus
prepositional calculus
syntax and semantics of predicate calculus
inference rules to produce predicate calculus expressions
Prolog and Strategies for State Space Search (2.5 weeks)
prolog language
state space search strategies
data-driven and goal-driven search
graph search implementation
DFS and BFS
iterative deepening
using the state space and predicate calculus
state space description of a logical system
AND/OR graphs and search
Prolog and Implementation of State Space Search (1 week)
prolog language
control and implementation of state space search
recursive search
pattern-directed search
production systems (definition, control and features)
Lisp and Heuristic Search (2.5 weeks)
Lisp language
heuristic search
best-first search
beam search
hill-climbing algorithm
dynamic programming
branch-bound method
A* algorithms
heuristic evaluation functions
Rule-based Expert Systems (2 weeks)
Lisp language
overview
organize and apply expert knowledge
organization of expert systems
uncertainty measures
control strategies of expert systems
conflict resolution strategies
examples
Knowledge Representations (1 week)
semantic network representation
rule representation
frame representation
constraint method
conceptual hierarchies
inheritance and exception handling
Problem Solving and Automated Reasoning (1 week)
weak methods
GPA and difference
blackboard systems
case-based systems
resolution theorem proving
clauses
proof
techniques
Natural Languages and Advanced Topics * (2 weeks)
machine learning
natural language understanding
robotics
* done to the extent that time permits
Course Requirements:
Project 30%
Presentation 5%
Mid-term Exam 30%
Final Exam 35%
Project Descriptions:
The primary requirement will be a construction of an intelligence system, either in
PROLOG or in LISP. The project should hone programming skills in AI programming languages
and gain a feel for the complexity of AI systems and as well as a understanding of the
differences between AI programming and conventional programming.
Back to course list
Course No: COSC 583
Course Title: Design aAnd Analysis of Algorithms
Credit Hours: 3
Prerequisites: COSC 336/COSC 301
Course Description: Algorithm design methods such as heuristics, backtrack
programming, branch and bound, recursion, simulation, divide-and-conquer, balancing
and dynamic programming. Efficiency of algorithms-Np-complete problems.
Course Objectives:
1. Understand the major techniques for algorithm design
2. Drive time and space complexity for a given problem
3. Understand the concept of tractability includingthe significance of NP-
completeness
Suggested Textbook:
Brassard, Gilles and Bratley, Paul, Fundamental of Algorithmics, Prentice-Hall,
1996.
Suggested References:
1. E. Horowitz, S. Sahni, Fundamental of Computer Algorithm, CSP.
2. Aho, Hopcroft, Ullman, The Design and Analysis of Computer Algorithms,
Addison-Wesley, 1980.
3. Mander, Udi, Intruduction to Algorithms, Addison-Wesley, 1989.
4. Knuth, Donald, The Art of Computer Programming, (3 vol), Addison-Wesley,.
Course Topics:
1. Basic Algorithm Analysis Techniques (2 weeks)
2. Advanced Data Structures (2 weeks)
3. Divide and conquer (2 weeks)
4. Greedy Algorithms (2 weeks)
5. Dynamic Programming (2 weeks)
6. Review of Searching (1 week)
7. Backtracking (1 week)
8. Branch and bound (1 week)
9. NP-completeness (1 week)
10. Parallel, probabilistics and Approximate Algorithms (1 week)
Laboratory Projects:
1. Divide and Conquer (2 weeks)
2. Greedy Algorithms (2 weeks)
3. Dynamic programming (2 weeks)
4. Backtracking (2 weeks)
5. Branch and bound (2 weeks)
Course Requirements:
Homework 25%
Exams 75%
Back to course list
Course No: COSC 586
Course Title: Computer Graphics
Credit Hours: 3
Prerequisite: COSC 336/COSC 301
Course Description: An introduction to the field of computer generated
and/or displayed graphics data. Covers the topics of representation,
transformations, curve and 3-D problems, graphics hardware, and programming
considerations.
Course Objectives:
1. To study components of computer graphics hardware and software.
2. To understand concepts used in 2 and 3-Dimensional coordinate geometry,
viewing operations, and data structures for computer graphics.
3. To introduce algorithms for clipping, hidden line/hidden surface removal,
shading, and concepts of animation and ray-tracing.
4. To obtain experience in the implementation of various programming projects
in 2 and 3- Dimensional applications.
Suggested Textbook:
1. Hearn, Donald and Baker, M. Pauline, Computer Graphics, 2nd ed., Prentice
Hall, 1994.
Suggested Reference:
1. Mason Woo, et.al, Open GL Programmer's Guide, 2nd ed., Addison-Wesley, 1997.
2. Open GL Architecture Review Board: Open GL Reference Manual, Addison-Wesley,
1997.
Course Topics:
1. Overview of graphics systems (1 week)
2. 2D graphics primitives (1 week)
3. 2D graphics viewing and clipping (2 weeks)
4. Interactive graphics (1.5 weeks)
5. 2D transformations and modeling (1.5 weeks)
6. 3D graphics primitives and data representation (2 weeks)
7. 3D graphics viewing and projections (2.5 weeks)
8. Hidden Line/hidden surface removal (2.5 weeks)
9. Raytracing (1 week)
Laboratory Projects:
1. Draw a box usingOpen GL (1 week)
2. Draw a line-graph using Open GL (1 week)
3. Viewing program--pan and zoom (1 week)
4. Transformations--clock with moving hands (1 week)
5. Tree structured data--robot movements (1 week)
6. Tree structured data-- robot using Open GL (1 week)
7. Raytracing using POV-Ray 3.0 (1 week)
8. Animation using raytracing (1 week)
Course Requirements:
Laboratory assignments 30%
Student Project 10%
Exams 60%
Back to course list
Course No.: COSC 600
Course Title: Advanced File and Data Organizations
Credit Hours: 3
Prerequisite: Computer Science Graduate Standing
Course Description: Data abstraction, linear data structures, file
organization and access methods, memory management, advanced internal and external
sort and search algorithms, and the trade-offs involved in the use of different
data organization.
Course Objectives:
Upon completion of this course students should be able to fully understand and apply
the following concepts in their computing-related work environment.
1. Data abstraction and information hiding.
2. Linear data structures and their applications in problem solving and
programming.
3. Nonlinear data structures and their applications in problem solving and
programming.
4. Different file organizations and their applications in system development
and databases.
5. Internal and external sort and search techniques.
Suggested Textbooks:
1. Horowitz and Sahni, Fundamental of Data Structures, 4th Ed., CSP, 1994,
(Pascal, C , C++ or Generic version)
2. Alan L. Tharp, File Organization and Processing, Wiley, 1988.
Suggested References:
1. Rick Decker, Data Structures, Prentice-Hall, 1989.
2. Nancy E. Miller, File Structures Using Pascal, Benjamin Cummings, 1988.
3. Aho, Hopcroft, Ullman, Data Structures and Algorithms, Addison Wesley,
1983.
4. T. A. Standish, Data Structure and Techniques, Addison Wesley, 1980.
5. R. G. Claybrook, File Management Techniques, Wiley, 1983.
6. R. L. Kruse, Data Structures and Program Design, 3rd ed., Prentice-Hall,
1994.
7. Oven Hanson, Design of Computer Data Files, 2nd edition, CPS, 1988.
8. T. A. Standish, Data Stuctures, Algorithms, and Software Principles, Eddison-
Wesley, 1994.
9. Mark Allen Weiss, Data Structures and Algorithm Analysis, Benjamin Cummings,
1993( Pascal, C, C++ and Ada versions)
10. H. R. Lewis and L. Denenberg, Data Structures and their Algorithms, Harper
Collins Publisher,1991.
11. T. H. Cromen, C. E. Leiserson and R. L. Rivest, Introduction to Algorithms,
MIT Press and McGraw-Hill Book Company, 1992.
12. Mary E. S. Loomis, Data Management and File Structures, 2nd ed., Prentice-
Hall, 1989.
13. Clifford A. Shaffer, A Practical Introduction to Data Structures and Algorithm
Analysis, Prentice-Hall, 1997.
14. Kruse, Tondo and Leung, Data Structures and Program Design in C, 2nd edition,
Prentice-Hall, 1997.
Course Topics:
Data Abstraction and Algorithm Analysis ( 2 weeks)
Data types/objects/structures
Abstract definition of data structures
Representation and implementation
Time requirements of algorithms
Space requirements of algorithms
Review of Linear Data Structures ( 3 weeks)
Array application and representation
Polynomials
Sparse matrices
String-pattern Matching
Stack and Queues
Needs and justification of the study of the structures
Representation and implementation
Multiple stacks and queues
Implementation of recursion using stack
Linked Lists
Needs for the structure and justification of the study
Representation and Implementation
Doubly linked list
Circular linked list
Linked list application
Memory Management
Static memory management
Dynamic memory management
Nonlinear Data Structures ( 3 weeks)
Trees
Definitions, terminologies and properties
Binary tree representation ,traversals and applications
Threaded binary trees
Binary Search Trees
AVL Trees
M-way Search Trees
B-trees, B*-trees, B+-trees
Optimum binary search trees
Multidimensional binary search trees
Graphs
Definition, terminologies and properties
Graph representations
Minimum spanning trees
Depth-first search
Breadth-first search
Networks
Priority Queues
Heap Structures
Binomial Heaps
Leftist Heaps
Sort and Search Algorithms (2 weeks)
Heap sort
Merge sort
Quick-sort
Hashing
General radix sort
Symbol tables
Sequential search
Binary search
Interpolation search
Tries
File organization and processing (4 weeks)
Sequential files:
Organization, creation, update and maintenance
Relative files: Organization
Hashing techniques
Approaches to collision problem
Creation, retrieval and update
Indexed sequential files:
Organization , creation, update and maintenance
Multi-key files
Inverted file
Multi-list file
Alternate key
Tree structured files
B-trees
AVL-trees
Tries
Course Requirements:
Four programming assignments 100 points
Midterm Exam 75 points
Comprehensive Final Exam 75 points
Homework problems (5 sets) 50 points
Back to course list
Course No.: COSC 605
Course Title: Human Factors and Human-Computer Interaction
Prerequisite: TSU Graduate standing or consent of instructor
Course Description: Design of information systems interfaces. Discussion
of how information systems components and work environments can be constructed to
make people more effective, productive, and satisfied with their work life. Output
and input design, arrangement of displays and controls, case studies in human
factors.
Course Objectives:
1. To learn the importance of human factors within the field of computer
and information systems
2. To study the differences between how people and how machines process
information
3. To study how to design computer and machine environments that better fit the
user
4. To learn about the different types of computer interface systems
5. To evaluate how current software packages are presenting their interface
6. To investigate current research in the field of human factors and human-computer
interaction
7. To discuss the future of human factors and human computer interaction
Suggested Textbook: Carey, J., Human Factors in Information Systems, Ablex
Publishing Corporation, Norwood, N.J., 1993.
Suggested References:
1. ACM SIGCHI, Curricula for Human-Computer Interaction, The Association of
Computing Machinery, New York, N.Y., 1992.
2. Burke, M., Ergonomics Analysis and Problem Solving Manual, Lewis Publishers,
Boca Raton, Florida, 1993.
3. Carey, J., Human Factors in Information Systems: An Organization Perspective,
Ablex Publishing Corporation, Norwood, N.J., 1991.
4. CHI (Computer-Human Interaction) Proceedings of the ACM: Human Factors in
Computing Systems, Addison-Wesley, Reading, Mass., 1990, 1991, 1992, 1993.
5. Cox, K. and Walker, D., User Interface Design, Prentice Hall, Englewood, N.J.,
1993.
6. CSCW (Computer-Supported Cooperative Work) Conference Proceedings, ACM Press,
1990, 1991, 1992, 1993.
7. Shneiderman, B., Designing the User Interface, Addison-Wesley, Reading, Mass.,
1992.
Reference Journals:
Applied Ergonomics Behaviour and Information Technology
Communications of the ACM Computers in Human Behavior
Human-Computer Interaction Human Factors
Human Factors Society Bulletin IEEE Trans. on Sys., Man, and Cybernetics
Information Systems Research Int. Journal in Human-Computer Interaction
Int. Journal of Man-Machine Studies MIS Quarterly
Psychology Today SIGCHI Bulletin
Course Topics:
Introduction to Human Factors and HCI (3 hours)
Definition of human factors
Definition of human-computer interaction
History of human factors and HCI
Examples such as automated banking machines, E-Mail, spreadsheets,
voice mail, and word processors
How Humans Process Information (3 hours)
Discussion of memory, motor skills, perception, etc.
Models of human decision making
Steps humans perform while solving problems
Applications and examples
The Relationship Between People and Machines (3 hours)
How machine displays and controls should be designed
Fatigue and health issues related to machines and computers
How machines can be designed to help the disabled
Applications and examples
How Machines and People Adapt (3 hours)
How machines can be adapted to fit different user types
How users have adapted to machines and computers
Examples of system adaption such as screen displays
Examples of user adaption such as computer-based training
How People and Computers Communicate (3 hours)
Command driven systems
Graphical user interfaces
Menu-based systems
Voice Recognition Systems
Window-based systems
EXAM #1 (3 hours)
How Systems Can be Designed for the User (3 hours)
Software engineering design models
Prototyping and iterative design
User support and assistance
Documentation
Training
Design examples
Issues in Interface Design and Implementation (3 hours)
Input and output devices
System response time
Interface standards
Interface issues such as color, sound, etc.
User interface development tools
Applications and examples
Interface Quality and Evaluation (3 hours)
How to measure the quality of a user interface
How to conduct and analyze a usability study
Applications and examples
Organizational Impacts of Information Systems (3 hours)
How information flows within an organization
How groups make decisions
The advantages and disadvantages of using computers to monitor worker
performance
Avoiding information overload
The Future of Human Factors and HCI (3 hours)
Computers and the disabled
Natural language processing and speech recognition
Neural networks
Social Issues
Virtual reality
EXAM #2 (3 hours)
Case Studies in Human Factors and HCI (6 hours)
Course requirements:
Exam #1 25%
Exam #2 25%
Presentations 20%
Term Paper 30%
Grading: A 90 - 100%
B 80 - 89%
C 70 - 79%
F 0 - 69%
Back to course list
Course No. COSC 611
Course Title: Computer Simulation
Course Hours: 3
Prerequisite: COSC 600
Course Description: Continuous and discrete event systems simulation
application, implementation, role of modeling and languages, experimental design,
data collection, verification, validation, object-oriented simulation, random
variable generation, Monte Carlo methods for performance evaluation, sensitivity
analysis, and optimization.
Course Objectives:
This course will cover a variety of important basic concepts of computer simulation
and interpretation of outputs. SIMSCRIPT II.5 will be used.
Suggested Textbook:
Neelamkavil, F., Computer Simulation and Modelling, John Wiley & Sons,
1991.
Recommended Textbook:
Hoover and Perry, Simulation: A Problem-Solving Approach, Addison-Wesley,
1990.
Course Topics:
Simulation in Brief (including elements of simulation analysis)
Modeling and Simulation (including static and dynamic discrete-event simulation)
SIMSCRIPT II.5 Language
Building Simulation Models
Output Analysis (including Optimization, "What-If" and Sensitivity Analysis)
Variance Reduction Techniques
Course Outline:
Discrete Event Static System
Shortest path in a network
Hand simulation
Precision (C.I.,A absolute, half-length, relative, C.V.)
SIMSCRIPT (small, large size samples)
Test for randomness
Goodness-of-fit tests
Input Distribution
Test for randomness
Identification (skewness, kurtosis)
Justification (K-S, K-S-L, Chi-squared, Tabular and Graphical)
SIMSCRIPT implementation
Barber Shop
A Discrete Event Dynamic Systems (DEDS)
Walking through the SIMSCRIPT Program (line by line)
SIMSCRIPT as a high level programming language
A quadratic equation solver
Continuous simulation
Generation of Random variate
Inverse function
Relationship among distributions
Test for randomness, Goodness-of-fit
Experiment on M/M/1 queue: Steady-State behavior
Warm-up determination
Independent replication
Method of batch means
A comparison of batch mean vs. independent replications
Validation and Verification methods
t-test (ANOVA)
Programming verification methods
Output analysis
Surface response
Comparison of different configurations
What if scenarios
Optimization (introduction)
Sensitivity Analysis (introduction)
Stability Analysis
Variance Reduction Techniques: effectiveness and experiments
Antithetic sampling
Common random variables
Importance sampling
Linear control variables
Nonlinear control variate
Experimental Design for Simulation
Sample size determination
Variance reduction methods
Budget and performance (accuracy of the estimate)
How things can go wrong in simulation
Monte-Carlo Integration (Expectation)
Direct method
Using a Variance Reduction Technique
Course Requirements:
Midterm exam 30%
Final exam 30%
Assignments 20%
Project 15%
Paper Presentation 5%
Back to course list
Course No. : COSC 612
Course Title: Software Engineering I
Credit Hours: 3
Prerequisite: COSC 600
Course Description: Formal software engineering principles and practices
and their application to the development of computer based systems.
Course Objectives :
For the first semester the objectives are to develop a sense of how the software
engineering discipline fits into the overall system development process and identify
specific products, interfaces, and responsibilities of contributing disciplines and
organizations. Stress will be placed on identification and description of the many
software and engineering fields that are directly or indirectly involved in a
successful software system development. A comprehensive description of the software
engineering process will be presented along with a discussion of the approaches,
methodologies and tools available to the practicing software engineer.
Suggested Textbook:
A. Behforooz, F.J. Hudson, Fundamentals of Software Engingeering, Oxford
University Press, 1996.
Suggested References:
A. Textbooks:
1. Berzins and Luqi, Software Engineering with Abstraction, Addison-Wesley,
1991.
2. Barry W. Boehm, Software Engineering Economics, Prentice-Hall, 1981.
3. C. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of Software
Engineering, Prentice-Hall, 1992.
4. R. A. Radice, R. W. Phillips, Software Engineering: An Industrial Approach,
Vol. 1, Prentice-Hall, 1988.
5. Demillo et al, Software Engineering and Evaluation, Benjamin/ Cummings ,
1987.
6. Mark C. Paulk, Editor, The Capability Maturity Model, Guidelines for
Improving the Software Process, SEI, Addison Wesley, 1995.
7. J. R. Bourne, Object-Oriented Engineering, Irwin, 1992.
8. Grady Booch, Object-Oriented Design with Applications, 2nd ed, Benjamin/
Commings, 1995.
9. Bernard Londeix, Cost Estimation for Software Development, Addison Wesley,
1987.
10. Edited by N. Gehani and A. D. McGettrick, Software Specification Techniques,
Assdison Wesley, 1986.
11. R. C. Backhouse, Program Construction and Verification, Prentice-Hall,1986.
12. J. D. Bakker, Mathematical Theory of Program Correctness, Prentice-Hall,
1980.
13. David Gries, The Science of Programming, Springer-Verlag, 1981.
14. Edited by S. S. Muchick and N. D. Jones, Program Flow Analysis: Theory and
Practice, Prentice-Hall, 1981.
15. R. W. Jensen, C. C. Tonies, Software Engineering, Prentice-Hall, 1979.
16. R. L. Glass, Software Reliability Guidebook, Prentice-Hall, 1979.
17. R. L. Glass, Modern Programming Practice, Prentice-Hall, 1982.
18. P. B. Hansen, The Architecture of Concurrent Programs, Prentice-Hall, 1977.
19. M. Ben-Ari, Principles of Concurrent Programming, Prentice-Hall, 1982.
20. Edited by N. Gehani, and A. D. McGettrick, Concurrent Programming, Addison
-Wesley, 1988.
21. Sang H. Son, Editor, Advances in Real-Time Systems, Prentice-Hall, 1995.
22. C. D. Sigwart, G. L. VanMeer, J. C. Hansen, Software Engineering: A Project
Oriented Approach, Franklin, Beedle & Associates, 1990.
23. R. L. Glass, Software Engineering and Computer Science: How Do They Differ?
Springer-Verlag, 1987.
24. Bertrand Meyer, Reusable Software, The Base Object-Oriented Component
Libraries, Prentice-Hall, 1995.
25. D. Tkach, and R. Puttick, Object Technology in Application Development
Benjamin/Cummings, 1994.
26. R. Wirfs-Brock, B. Wilkerson, L. Wiener, Designing Object-Oriented Software,
Prentice-Hall, 1990.
27. S. J. Sahni, Software Development in Pascal, Camelot, 1985.
28. B. Liskov, J. Guttag, Abstraction and Specification in Program Development,
MIT Press/McGraw-Hill, 1986.
29. H. Abelson, G. J. Sussman, Structure and Interpretation of Computer Programs,
MIT Press/McGraw-Hill, 1985.
30. E. Yourdon, L. L. Constantine, Structured Design: Fundamentals of a Discipline
of Computer Program and System Design, Prentice-Hall, 1979.
31. David Marce, Applying Software Engineering Principles, Little, Brown, 1984.
32. D. A. Lamb, Software Engineering: Planning for Change, Prentice-Hall,
1988.
33. R. Fairley, Software Engineering Concepts, McGraw-Hill, 1985.
34. C. B. Jones, Software Development: A Rigorous Approach, Prentice- Hall,
1980.
35. D. V. Steward, Software Engineering with System Analysis and Design, Brooks/
Cole, 1987.
36. Edited by Raymond T. Yeh, Current Trends in Computer Programming Methodology,
Volume I Software Specification and Design, Prentice-Hall, 1977.
37. Edited by Raymond T. Yeh, Current Trends in Computer Programming Methodology,
Volume II Program Validation, Prentice-Hall, 1977.
38. Edited by K. Manichandy and Raymond T. Yeh, Current Trends in Computer
Programming Methodology, Volume III Software Modeling, Prentice-Hall, 1978.
39. Edited by Raymond T. Yeh, Current Trends in Computer Programming Methodology,
Volume IV Data Structures, Prentice-Hall, 1978.
40. Edited by C. Anderson and M. Dorfman, Aerospace Software Engineering, Progress
in Astronautics and Aeronautics, vol. 136, 1991.
41. R. S. Pressman, Software Engineering: a Practitioner's Approach, 4rd edition,
McGraw- Hill, 1997.
42. I. Sommerville, Software Engineering, 5th edition, Addison-Wesley, 1997.
43. Lou Mazzuchelli, Lou Mazzuchelli On Software Engineering, Computer
Design, August 1991.
44. Fred L. Farmer, Form Precedes Function, Computer Word, Sept. 5, 1988.
45. Robert Haavind, Software New Object Lesson, Technology Review, February/March
1992.
46. Martin L. Shooman, Software Engineering: Design/Reliability/Management,
McGraw- Hill, 1983.
47. Fred Brooks, Mythical Man Month, 2nd Edition, Addison-Wesley, 1995.
48. Connie U. Smith, Prformance Engineering of Software Systems, Addison-Wesley,
1990.
49. J. Rumbaugh, et. al., Object_Oriented Modeling and Design, Prentice-Hall,
1991.
50. Watts S. Humphrey, Managing the Software Process, Addison-Wesley, 1989.
51. Will Tracz, Confessions of a Used Program Salesman: Institutionalizing
Software Reuse, Addison Wesley, 1995.
52. Anton Eliens, Principles of Object-Oriented Software Development, Addison
Wesley, 1995.
53. Robert Rist and Robert Terwillinger, Object-Oriented Programming in EIFFEL,
Prentice-Hall, 1995.
54. Alan Burns, Geoff Davies, Concurrent Programming, Addison Wesley, 1993.
55. I. B. Wordsworth, Software Development with Z, A Practical Approach to Formal
Methods in Software Engineering, Addison Wesley, 1992.
56. Coleman et. al., Object-Oriented Development: The Fusion Method, Prentice-
Hall, 1994.
57. Ian Graham, Migration to Object Technology, Addison Wesley, 1995.
58. Mark C. Paulk, et. al., Capability Maturity Model: Guidelines for Improving
the Software Process, Addison-Wesley, 1995.
B. Periodicals
1. IEEE/CS Software (Quarterly Publication)
2. IEEE/CS Transaction on Software Engineering (Monthly publication)
3. IEEE/CS Computers (Monthly publication)
4. ACM/SIGSOFT Software Engineering Notes (Quarterly publication)
Detailed Topics :
OVERVIEW OF SYSTEM AND SOFTWARE DEVELOPMENT LIFE CYCLES ( 1 week)
System: Definition and Discussion
System Characteristics
Some Recurring Problems and Suggested Solutions in Large System
Development
Major Problems in System Development
Some Suggested Solutions
System Engineering
System Analysis
System Architecture and Design
System Level Project Planning
The System Development Plan
Task Description
Bottom up Resource and Schedule Estimation
Staffing
Technical Reviews
Risk Assessment
Change Control
Appendices and References
Keeping the Plan Current
The Software Development Plan
System Development Life Cycle Definition and Overview
System Development Life Cycle Models
DOD type System Development Life Cycle
MIS Oriented System Development Life Cycle
Software Development Life Cycle A brief Overview
The DOD Model
The NASA Model
The Rapid throwaway Model
The Incremental Development Model
The Evolutionary Prototype Model
The Reuse and Automated Development Model
The resource and Schedule Driven Model
The Cleanroom Approach
The Software Engineering Process
PROJECT DEFINITION (1 week)
The XYZ Project: Problem Statement
The XYZ Project: Analysis
The Bidder Perspective
The Proposal
We Win
The ABC Project: Problem Statement
The Truck/Driver Monitoring problem
TECHNICAL PLANNING (1 week)
Software Development Planning
Introduction
Resource and Schedule Estimates
Organizing and Staffing
Work breakdown Structure, Work Packages and Cost Accounts
Technical Management and Control
Change Management
Risk Containment
Cost and Schedule Control
Issue Resolution
Standards and Procedures
Reviews, Audits and Walkthroughs
The Development Environment
Technical Performance Measurements
Documentation
Verification and Validation
Maintenance
Human Factors
Delivery, Installation and Acceptance
Appendices and References
The use of SDP as a Management Tool
Attribute Estimation
SOFTWARE SPECIFICATIONS (1 week)
People Involved in the Software Development process
Software Requirement Specifications (SRS)
Introductory Section of SRS
General Description Section of SRS
"Design-to" Specifications (Section 3 of SRS)
Software Requirements Classification
An Example of SRS Preparation
Other Software Specification Documents
Software Specification Attributes
SOFTWARE SPECIFICATION TOOLS (2 weeks)
Data Dictionary
Decision Support Tools
Data Flow Diagrams
Entity-Relation Diagrams
Finite State Machines
Petri Nets
Petri Net State Space
Using Petri Net to Model a System
Exercises
Mathematical Logic
Problem Specification Using Logic
SOFTWARE DEVELOPMENT ENVIRONMENT (1 week)
Software Development Environment Configuration
Software Development Platform (SDPF)
Essential Tools in a SDPF
Very Useful Tools in a SDPF
Useful Tools in a SDPF
Computer-Aided Software Engineering Tools
CASE Tools Categorization
Graphic Modeling
CASE Repositories
CASE Tools as an Aide to Re-engineering
The Impact of Object-Oriented Methodology on CASE
An Ideal Software Development Platform
SOFTWARE DESIGN (1 week)
An Overview of the Software Design Process
Design requirements and Criteria
Design Levels and Their Objectives
IPO Approach
Design Tools
Software Design
The Seven Generic Design Steps
The Component Design
Preparing the Software Design Specification
A Design Example
The Design Process
OBJECT-ORIENTED ANALYSIS AND DESIGN (2 weeks)
Object-Oriented Paradigm
Basic Definitions and Symbols
Objects
Object Classes
Relationship Among Objects
Binary Relation
n-ary Relation
Inheritance and Generalization
Messages
Object-Oriented Analysis (OOA)
Find Object Classes
Find the Association Among Objects
Determine Attributes of each Object Class
Refine the Object Classes into Super and Sub Classes
Check the Access Path Through Object Classes
An Example of Object-oriented Analysis
Object-Oriented Design
Determine External Inputs for Each Object Class
Determine External Outputs of Each Object Class
Define Services for Each Object Class
Determine Instances and Connections for each Object Class
Define Message Connections for Each Object Class
An Example of Object-oriented Design
Software Reuse
FUNDAMENTALS OF CODING (1 week)
Programming Languages
Programming Languages Classification
Procedural Languages
Nonprocedural Languages
Imperative Languages
Declarative Languages
Functional Languages
Logic Languages
Object-oriented Languages
Fourth Generation Languages
Fifth Generation Languages
Specific Features of Programming Languages
Preprocessor, Naming Constraints, Named Constant,
User-defined Data Type, Subprograms, Scoping,
Recursive Subprograms, Available Operations, Variety of
Control Structures, Data Structure Support,
Data Abstraction and Information Hiding, Memory
Allocation,
File Handling Utilities, Access to other System Utilities,
Compiler Capabilities, Programming Language Library,
Exception Handling, Real-time Considerations, Concurrency Considerations, and Parallelism Consideration
Selecting a Programming Language for Implementation
Programming Style and Program Quality
Some Simple Style Rules
Comment Statements
Program Quality
Readability, Understandability and Comprehensibility
Logical Structure, Physical Layout, Robustness,
CPU Efficiency,
Memory Efficiency, Complexity, Human Factors, System
Interfaces and Reusable Code
A Programming Example
Preliminary Design
Analysis of the Preliminary Design
Data Flow Diagram
Main Data Structures
High Level Program Design
Detailed Design
SOFTWARE SYSTEM TEST AND INTEGRATION (1 week)
Basic Concepts in Testing
The Need for Planning
The Test Phase
Verification and Validation
Reliability Models in testing
Software Engineers Find a Career in Testing
An Overview of System and Software Test and Integration
The Incremental Build of Modules into Systems
System Test and Integration Plan
The Build Test Plan and Specification
Perspective on Build Testing
Alpha and Beta Testing
MODULE LEVEL TESTING (2 weeks)
Module Test Planning
Test Requirement Matrices
The Module Test Plan
Static Testing
Static Testing Tools
Dynamic Testing
Black Box Testing
White Box Testing
An Example
Computing Cyclomatic Complexity
Dynamic Test Tools
Formal Testing
Correctness of Program Structures
Iteration Termination
Correctness of Procedure Calls
Remarks on Formal Testing
Test Case Execution
Test Log Document
Test Anomaly or Test Incident Document
Test Summary Document
Closing Arguments
DEBUGGING (1 week)
The Debugging Process
Information gathering
Fault Isolation
Binary Partition Approach
Structured Question and Answer Approach
Involving Others Approach
New Test Case Approach
Fault Confirmation
Documentation
Fixing the Fault
New Testing
Recommendation
A Debugging Example
Test Case and Results
Correcting the Program Module Faults
New Testing
SOFTWARE MAINTENANCE AND MAINTAINABILITY (1 week)
Software Maintenance
Maintenance Support Documents/Tools
Using the Support Documentation
Software Maintenance Process
Maintenance Resource Estimation
Directly Specified Maintenance Attributes
Reverse Engineering
Re-engineering a Software Product
Course Requirements:
Exams 60%
Project 40%
Students will be expected to gain a comprehensive understanding of the major
elements of the software and system development life cycle of a "typical" embedded
software system development. Students will develop a balanced, mature outlook
relative to the roles, responsibilities and products of the many participants in
such a development process, with emphasis on the role and responsibilities of
software engineers.
It is expected that students will gain a broader appreciation of the importance of
software and software engineering practice in an embedded computer system development.
It is also expected that students understand and appreciate the complex interrelation
ships that exist among the many technical and management disciplines. Students must
develop, through team-work on class project, an appreciation for the team-work
required to produce a "good" software system.
Laboratory Component/ Team-Oriented Project
As a direct adjunct to this course, class project will be conducted using students
in the role of software engineers, programmers and testers. The project will follow
an accepted embedded computer system development processes. The project source data
will be drawn from either a contemporary real-world project or from a scripted case
study using an already completed "real- world" project. The project will be initiated
based on existing system level functional and performance requirements documents,
operational description documents, system design descriptions and rationale documents
and system requirement allocation to software. The project team will be expected
to read the documentation, perform the technical work and produce the following
documents:
Team building and specific tasks of each team member
Software Architecture Design
Software Requirements Specification (functional and performance)
Priliminary Software Size, Resource and Schedule Estimation
Software Design Specification
Hardware Specification (software driven component)
Students will be encouraged to commit to two consecutive semesters in order to
maintain project continuity. However, the projects will be designed to accommodate
student turnover by establishing a review at the close of the first semester at a
logical project hand-off point.
The objective of the project is to apply the methods and techniques developed in
lectures to "real-world" situations to accentuate some of the application problems
that must be resolved in order to bridge theory to practice.
Back to course list
Course No. : COSC 614
Course Title: Software Engineering II
Credit Hours: 3
Prerequisite: COSC 612
Course Description: Formal process leading to requirements, design and
test specifications, quantitative measures of useful software parameters, review
of software systems components and complete design and test process.
Course Objectives :
For the second semester the major objective is to explore those software attributes
that can be quantified and used as metrics in the treatment of software products.
Specifically: software reliability models; software resource estimation models
(Cost of development deployment and maintenance in effort and support facilities);
schedule estimation and planning; economic justification studies and strategies;
and software quality measures are among software metrics that we will explore. A
second objective is to present a comprehensive treatment of software system test
and integration approaches using a real-world application project.
Suggested Textbooks:
1. A. Behforooz, F. J. Hudson, Fundamentals of Software Engineering, Oxford
University Press, 1996.
2. W. S. Humphrey, A Discipline for Software Engineering, Addison-Wesley,
1995.
Suggested References:
A. Textbooks:
1. Berzins and Luqi, Software Engineering with Abstraction, Addison-Wesley,
1991.
2. Barry W. Boehm, Software Engineering Economics, Prentice-Hall, 1981.
3. C. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of Software Engineering,
Prentice- Hall, 1992.
4. R. A. Radice, R. W. Phillips, Software Engineering: An Industrial Approach,
Vol. 1, Prentice-Hall, 1988.
5. Demillo et al, Software Engineering and Evaluation, Benjamin/ Cummings ,
1987.
6. Mark C. Paulk, Editor, The Capability Maturity Model, Guidelines for Improving
the Software Process, SEI, Addison Wesley, 1995.
7. J. R. Bourne, Object-Oriented Engineering, Irwin, 1992.
8. Grady Booch, Object-Oriented Design with Applications, 2nd ed, Benjamin/
Commings, 1995.
9. Bernard Londeix, Cost Estimation for Software Development, Addison Wesley,
1987.
10. Edited by N. Gehani and A. D. McGettrick, Software Specification Techniques,
Assdison Wesley, 1986.
11. R. C. Backhouse, Program Construction and Verification, Prentice-Hall,1986.
12. J. D. Bakker, Mathematical Theory of Program Correctness, Prentice-Hall,
1980.
13. David Gries, The Science of Programming, Springer-Verlag, 1981.
14. Edited by S. S. Muchick and N. D. Jones, Program Flow Analysis: Theory and
Practice, Prentice-Hall, 1981.
15. R. W. Jensen, C. C. Tonies, Software Engineering, Prentice-Hall, 1979.
16. R. L. Glass, Software Reliability Guidebook, Prentice-Hall, 1979.
17. R. L. Glass, Modern Programming Practice, Prentice-Hall, 1982.
18. P. B. Hansen, The Architecture of Concurrent Programs, Prentice-Hall, 1977.
19. M. Ben-Ari, Principles of Concurrent Programming, Prentice-Hall, 1982.
20. Edited by N. Gehani, and A. D. McGettrick, Concurrent Programming, Addison-
Wesley, 1988.
21. Sang H. Son, Editor, Advances in Real-Time Systems, Prentice-Hall, 1995.
22. C. D. Sigwart, G. L. VanMeer, J. C. Hansen, Software Engineering: A Project
Oriented Approach, Franklin, Beedle & Associates, 1990.
23. R. L. Glass, Software Engineering and Computer Science: How Do They Differ?
Springer-Verlag, 1987.
24. Bertrand Meyer, Reusable Software, The Base Object-Oriented Component
Libraries, Prentice-Hall, 1995.
25. D. Tkach, and R. Puttick, Object Technology in Application Development
Benjamin/Cummings, 1994.
26. R. Wirfs-Brock, B. Wilkerson, L. Wiener, Designing Object-Oriented Software,
Prentice-Hall, 1990.
27. S. J. Sahni, Software Development in Pascal, Camelot, 1985.
28. B. Liskov, J. Guttag, Abstraction and Specification in Program Development,
MIT Press/McGraw-Hill, 1986.
29. H. Abelson, G. J. Sussman, Structure and Interpretation of Computer
Programs, MIT Press/McGraw-Hill, 1985.
30. E. Yourdon, L. L. Constantine, Structured Design: Fundamentals of a
Discipline of Computer Program and System Design, Prentice-Hall, 1979.
31. David Marce, Applying Software Engineering Principles, Little, Brown,
1984.
32. D. A. Lamb, Software Engineering: Planning for Change, Prentice-Hall,
1988.
33. R. Fairley, Software Engineering Concepts, McGraw-Hill, 1985.
34. C. B. Jones, Software Development: A Rigorous Approach, Prentice- Hall,
1980.
35. D. V. Steward, Software Engineering with System Analysis and Design,
Brooks/Cole, 1987.
36. Edited by Raymond T. Yeh, Current Trends in Computer Programming
Methodology, Volume I Software Specification and Design, Prentice-Hall,
1977.
37. Edited by Raymond T. Yeh, Current Trends in Computer Programming Methodology,
Volume II Program Validation, Prentice-Hall, 1977.
38. Edited by K. Manichandy and Raymond T. Yeh, Current Trends in Computer
Programming Methodology, Volume III Software Modeling, Prentice-Hall, 1978.
39. Edited by Raymond T. Yeh, Current Trends in Computer Programming Methodology,
Volume IV Data Structures, Prentice-Hall, 1978.
40. Edited by C. Anderson and M. Dorfman, Aerospace Software Engineering,
Progress in Astronautics and Aeronautics, vol. 136, 1991.
41. R. S. Pressman, Software Engineering: a Practitioner's Approach, 4rd
edition, McGraw-Hill, 1997.
42. I. Sommerville, Software Engineering, 5th edition, Addison-Wesley, 1997.
43. Lou Mazzuchelli, Lou Mazzuchelli On Software Engineering, Computer
Design, August 1991.
44. Fred L. Farmer, Form Precedes Function, Computer Word, Sept. 5, 1988.
45. Robert Haavind, Software New Object Lesson, Technology Review, February/
March 1992.
46. Martin L. Shooman, Software Engineering: Design/Reliability/Management,
McGraw-Hill, 1983.
47. Fred Brooks, Mythical Man Month, 2nd Edition, Addison-Wesley, 1995.
48. Connie U. Smith, Prformance Engineering of Software Systems, Addison-Wesley,
1990.
49. J. Rumbaugh, et. al., Object_Oriented Modeling and Design, Prentice-Hall,
1991.
50. Watts S. Humphrey, Managing the Software Process, Addison-Wesley, 1989.
51. Will Tracz, Confessions of a Used Program Salesman: Institutionalizing
Software Reuse, Addison Wesley, 1995.
52. Anton Eliens, Principles of Object-Oriented Software Development, Addison
Wesley, 1995.
53. Robert Rist and Robert Terwillinger, Object-Oriented Programming in EIFFEL,
Prentice-Hall, 1995.
54. Alan Burns, Geoff Davies, Concurrent Programming, Addison Wesley, 1993.
55. I. B. Wordsworth, Software Development with Z, A Practical Approach to Formal
Methods in Software Engineering, Addison Wesley, 1992.
56. Coleman et. al., Object-Oriented Development: The Fusion Method, Prentice-Hall,
1994.
57. Ian Graham, Migration to Object Technology, Addison Wesley, 1995.
58. Mark C. Paulk, et. al., Capability Maturity Model: Guidelines for Improving
the Software Process, Addison-Wesley, 1995.
B. Periodicals
1. IEEE/CS Software (Quarterly Publication)
2. IEEE/CS Transaction on Software Engineering (Monthly publication)
3. IEEE/CS Computers (Monthly publication)
4. ACM/SIGSOFT Software Engineering Notes (Quarterly publication)
Course Topics:
SOFTWARE ATTRIBUTES AND THEIR ESTIMATION (2 weeks)
Identification Related Attributes
Size Related Attributes
Function Point Estimation
Feature Point Estimation
Converting Function Point Estimate to SLOC
Source Line of Code Estimation
Design and Development Attributes
Software Quality Attributes
Complexity related Attributes
Execution Time Attributes
Test Related Attributes
Documentation Related Attributes
Performance Related Attributes
Labor Related Attributes
Operating Environment Attributes
Data Collection Attributes
SOFTWARE DEVELOPMENT RESOURCE ESTIMATION (1 week)
Software Product Cost and Schedule Estimation
Cost and Schedule Estimation Models
Constructive Cost Models (COCOMO)
Basic COCOMO
Intermediate COCOMO
Estimation Process
Organic Mode Characteristics
Semidetached Mode Characteristics
Embedded Mode Characteristics
Grass Roots Resource and Schedule Estimation
An Example of Schedule Development
Closing Comments
SOFTWARE DEVELOPMENT RISK ASSESSMENT AND CONTAINMENT (1 week)
Software Development Risk Areas
The Risk Model
Risk Containment and Risk Management
Technical Performance Management
Examples to Illustrate Software Development Risk Analysis
RELIABILITY (2 weeks)
Overview
Review of Probability Theory
Axiomatic Probability
Axioms of Probability
Conditional Probability
Bayes Rule
Random Variables, Probability Distributions and Density Functions
Distribution Functions
Binomial Distribution
Poisson Distribution
Continuous Random Variables
Normal Distribution
Exponential Distribution
Uniform Distribution
Joint Distribution of Random Variables
Expectation of Random Variables --Moments
Markov Process
Reliability Definitions
Reliability Models
Software Faults
Design Rules
System Reliability and Availability
Availability
Applications of a Software Reliability Model
Redundancy and Fault Tolerance
Failure Modes and Effects and Other Analysis Tools
SOFTWARE QUALITY AND QUALITY ASSURANCE (1 week)
Software Quality Assurance Planning
Review as Quality Gates
A Generic Software Quality Assurance Plan
Software Quality Assurance Process
Software Quality Attributes
Statistical Software Quality Assurance
Guidelines and Checklists
Software Safety
REAL-TIME SOFTWARE (1 week)
Real-time Requirements Specification
Design Guidelines for Real-time Software
Schedulability Concerns
Task Synchronization
Priority Inversion
Testing Real-time Software
HUMAN FACTORS IN SOFTWARE ENGINEERING (1 week)
Human Factors History
HCI Requirements and Design Process
System Function Allocation
Operational Timelines
Operator Task Analysis
HCI Design Approach
HCI Testing
The Human as an Information System Component
Operator Task Development
Operator Requirements Specification
Operator Characteristics
COMMUNICATION SKILLS (1 week)
(class project is used)
Written Communications
Determine the Audience
Set Goals and Objectives
Review the Results of Steps 1 and 2
Outline and Story-board
Review and Revise the Outline and the Story-board
Expand the Story-board
The Oral Presentation
Making the Oral Presentation
Meeting
Brainstorming
Software Engineering Notebook
Learning How to Listen
COST BENEFIT ANALYSIS AND TRADE-OFFS
(class project is used )
Cost and Benefit
Problem Definition
Define Alternatives
Evaluate Alternatives
Sensitivity Analysis
An Illustrative Example
REVIEWS ( 1 week)
(class project is used)
Formal Software related reviews
Peer Reviews (Walkthroughs)
PROJECT PRESENTATIONS AND MEETINGS (2 weeks)
Course Requirements:
Exams 40%
Project 50%
Presentation 10%
Students will be expected to gain a comprehensive understanding of the major
elements of the software and system development life cycle of a "typical" embedded
software system development. Students will develop a balanced, mature outlook
relative to the roles, responsibilities and products of the many participants in
such a development process, with emphasis on the role and responsibilities of
software engineers.
It is expected that students will gain a broader appreciation of the importance of
software and software engineering practice in an embedded computer system development.
It is also expected that students understand and appreciate the complex interrelation-
ships that exist among the many technical and management disciplines. Students must
develop, through team-work on class project, an appreciation for the team-work
required to produce a "good" software system.
Laboratory Component/Project:
As a direct adjunct to this course, class project will be conducted using students
in the role of software engineers, programmers and testers. The project will follow
an accepted embedded computer system development processes. The project source data
will be drawn from either a contemporary real-world project or from a scripted case
study using an already completed "real- world" project. The project will be initiated
based on existing system level functional and performance requirements documents,
operational description documents, system design descriptions and rationale documents
and system requirement allocation to software. The project team will be expected to
read the documentation, perform the technical work and produce the following documents:
COSC 614 Project
Software Test and Integration Plans and Procedures, including Test Cases
Software Quality Assurance Plans
Final Software Resource and Schedule Estimations
Software Reliability Projections
Real-time considerations, if applicable
Coding and unit testing (Source code is the output here)
Debugging
Test and Integration (Test Anamoly Document is the Output)
Acceptance test (Acceptance test document and verification of it should be
the output)
System Delivery
Students will be encouraged to commit to two consecutive semesters in order to
maintain project continuity. However, the projects will be designed to accommodate
student turnover by establishing a review at the close of the first semester at a
logical project hand-off point.
The objective of the project is to apply the methods and techniques developed in
lectures to "real-world" situations to accentuate some of the application problems
that must be resolved in order to bridge theory to practice.
Back to course list
Course No.: COSC 615
Course Title: Compiler Design II
Credit Hours: 3
Prerequisite: COSC 415/COSC 553 and COSC 600
Course Description: Project-oriented course applying the theory to design
a full compiler for a subset of a high-level language. Parsing techniques, symbol
table handling, intermediate code generation, run-time memory management, error
handling and code optimization techniques.
Course Objectives:
Upon completion of this sequence students must have a clear understanding of the
following topics:
a. grammars and formal languages and their applications in compiler writing;
b. the process involved in the design of a high-level programming language;
c. a variety of parsing techniques;
d. semantic and syntax analysis of a programming language;
e. error detection and recovery;
f. intermediate code generation;
g. code optimization;
h. memory management; and
i. code generation
Suggested Textbooks:
1. Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools, Addison-
Wesley, 1985.
2. Levine, Mason, Brown, Lex & Yacc, 2nd edition, O'Reilly & Associates, Inc.
3. Class notes (150 to 200 pages)
Suggested References:
1. Michael Wolfe, High Performance Compiler for Parallel Computing, Addison-
Wesley, 1995.
2. R. Wilhelm and D. Maurer, Compiler Design, Addison-Wesley, 1995.
3. Tremblay & Sorenson, The Theory and Practice of Compiler, McGraw Hill,
1985.
4. Jim Holmes, Object-Oriented Compiler Construction, Prentice-Hall, 1995.
5. C. Fraser, D. Hanson, A Retractable C Compiler: Design and Implementation,
Benjamin/Cummings, 1995.
6. Hans Zima, Supercompilers for Parallel and Vector Computers, Addison-Wesley,
1990.
7. J. P. Bennett, Introduction to Compiling Techniques: A First Course Using
ANSI C, LEX and YACC, McGraw-Hill, 1990.
8. Allen I. Holub, Compiler Design in C, Prentice-Hall, 1990.
9. C. N. Fisher and R. J. LeBlanc Jr. Crafting a Compiler in C , Benjamin
Cummings, 1991.
10. A. T. Schreiner and H. G. Friedman, Jr., Introduction to Compiler
Construction, with UNIX, 2nd edition, Prentice-Hall, 1990.
11. W. M. Waite and G. Goos, Compiler Construction Springer-Verlag, 1984.
Course Topics:
Overview of a Compiler
An Example of a One-pass Compiler
Lexical Analysis
Syntax Analysis
Context-free Grammars
LL and LR Grammars
Top-down Parsing
Push-down machines
LL(1) Grammars and their Limitations
Implementing LL(1) Parsers
Bottom-up parsing
LR parsers
Representing LR parse Tables
Implementing LALR(1) parsers
Syntax-Directed Translation
Basic definitions and notations
Attributed grammars
S-attributed definitions
Bottom-up evaluations
L-attributed definitions
Top-down translation
Inherited attributes
Bottom-up evaluation
Recursive evaluators
Handling attribute values at compile time
Type checking
Type systems
Equivalence of type expressions
Type conversions
Type unifications
Run-Time Environment
Storage organization
Storage allocation strategies
Dynamic storage allocation techniques
Static storage allocation techniques
Symbol tables
Parameter passing
Global vs local names
Intermediate Code Generation
Declaration statements
Assignment statements
Boolean expressions
Case statements
Procedure calls
Code Generation
Introduction to code generators
Run-time storage management
Basic blocks
Flow graphs
Next-use definition
The directed acyclic graph(DAG) representation of basic blocks
Generating code from DAGs
Register allocation
Code Optimization
Examples of optimization
Parser optimization
Linear optimization
Strength reduction
Constant folding/propagation
Dead variables/codes
Structural optimization
Common subexpression
Loop unwinding
Loop invariant code motion
Loop induction
Optimization of basic blocks
Flow graphs
Loops in flow graphs
Global data-flow analysis
Code improving transformations
Elimination of global common subexpressions
Copy propagation
Detecting loop-invariant computations
Elimination of induction variables
Data-flow analysis
Efficient data-flow algorithms
A tool for data-flow analysis
Project:
Students are to develop a compiler for a simplified version of a high-level
programming language. The intermediate code generated by this compiler may be
executed via a rear-end processor. In the first course the project has covered the
lexical analysis of a compiler. The main project for the second compiler course
covers parsing, intermediate code generation and code optimization . The detail of
the project involved in this course will be discussed in the lectures.
Course Requirements:
Midterm 30%
Project 70%
Back to course list
Course No.: COSC 638
Course Title: Advanced Computer Architectures
Credit Hours: 3
Prerequisites: COSC 302 or COSC 338
Couse Description: Memory system design: framework of memory hierarchies,
cache memory and virtual memory. Pipeline structures: pipelined data path, pipelined
control, pipeline/vector computer system architectures. RISC architectures. Parallel
architectures: SIMD and MIMD system design and performance evaluation, multiprocessor
systems with interconnection networks.
Course Objectives:
1. Study the basic concepts of memory hierarchies
2. Study the architecture of pipelined systems
3. Study RISC architectures with case studies on Pentium and PowerPC
4. Study parallel system architectures.
5. Study various interconnection networks for multiprocessor systems
Suggested Textbooks:
1. M. Zargham, Computer Architecutre:Single and Parallel Systems, Prentice Hall,
1996.
2. D. Patterson and J. Hennessy, Computer Organization & Design: The Hardware/
Software Interface, Morgan Kaufmann Publishers, 94.
Course Topics:
Brief review of Von Neumann Architecture (1 week)
Memory system design (2 weeks)
Memory hierarchy
Associative memory system
Cache memory
virtual memory
Pipelining (2 weeks)
Instruction pipeline
Arithmetic pipeline
Pipeline control: schedulinG
Pipeline computer systems
RISC Architectures (3 weeks)
Comparison of RISC and CISC architectures
Design priciples for RISC
Case study I: PowerPC processor
Case Study II: Intel Pentium processor
Programming considerations
Multiprocessor Parallel Systems (3 weeks)
Interconnection networks
Cache coherence schemes
multicomputers
Data Flow Computers (1 week)
Class Presentations (1 week)
Project Descriptions:
Each student will be assigned to read two recent papers and design a simulation
or design an application algorithm for multiprocessor system or RISC machine.
Course Requirements:
Mid-term Exam 30%
Final Exam 40%
Project 30%
Back to course list
Course No.: COSC 639
Course Title: Operating Systems II
Credit Hours: 3
Prerequisites: COSC 519 or equivalent
Course Description: Implementation of operating systems for on-line multi-
programming environment. Primary and secondary storage management techniques, file
security, data integrity and a detailed study of operating systems such as UNIX.
Course Objectives:
Upon the completion of this course student will have a clear understanding of:
a. advanced techniques in process management and synchronization
b. clock, stack, and other algorithms for memory management;
c. use of resource allocation graphs for deadlock management
d. trends in operating systems design, e.g. GUI and distributed O/S
e. contemporary O/S case studies
Suggested Textbooks:
1. Maekawa et al, Operating Systems: Advanced Concepts, Addison-Wesley, 1987.
2. Tanenbaum, A. S., Distributed Operating Systems, Prentice Hall,
1995.
Suggested References:
1. Watson, M., Portable GUI Development with C++, McGraw Hill, 1993.
2. R. W. Turner, Operating Systems Design and Implementation,
Macmillan.
3. James L. Peterson and Abraham Silberschatz, Operating Systems Concepts, Addison-
Wesley, 1986.
Course Topics:
Review of basic operating system concepts (3 weeks)
File management
Processor management
Scheduling objectives
Scheduling criteria
Scheduling strategies
Multiple processor scheduling
Scheduling algorithms
Storage hierarchies
Virtual memory
Virtual storage management
Introduction to process management
Introduction to processor management
Introduction to memory management
Device management
More on Process and Processor Management (2 weeks)
Asynchronous concurrent processes
Monitors
Deadlocks
Multiprocessing
Parallel Execution
More on storage management (1 week)
Real storage
Virtual storage organization
Virtual storage management
Auxiliary storage management
Graphical User Interfaces (GUI) and Windows Programming (3 weeks)
Performance (2 weeks)
Performance management
Monitoring
Evaluation
Network operating systems and security problems
Operating systems security
Case Studies (2 weeks)
UNIX, VAX/VMS, CP/M, MVS , VM and others
Class Presentation of the Project (1 week)
Course Requirements:
Case study presentation 10%
Project and assignments 50%
Exams 40%
Back to course list
Course No.: COSC 650
Course Title: Data Communications and Computer Networks
Credit Hours: 3
Prerequisite: COSC 600
Course Description: Data communications concepts and design. Network
layers, protocols, security, privacy, design and performance. LAN and public
networks.
Course Objectives:
a. To develop an understanding of data communication concepts.
b. To develop an understanding of network layers and their protocols.
c. To provide software tools for implementing protocols.
d. To demonstrate the concepts of network design and performance measurements.
Suggested Textbook:
Tanenbaum, A. S., Computer Networks, Prentice-Hall, 1996.
Suggested References:
1. Stallings, William, Data and Computer Communications, Macmillan Publishing
Co., New York. 1997.
2. Hallsall, Fred, Introduction to Data Communications and Computer Networks,
Addison-Wesley Publishing Co. Inc., 1996.
Course Topics:
Data Communication Concepts (3 weeks)
Transmissions Media
Fiber Optics Communication
Noise
Modulation
Multiplexing
Fourier Analysis of a Digital Signal
Asynchronous and Synchronous Transmission
Modems
UARTs/USARTs
Concentrators
Protocol Converters
Data Codes
Code Conversion
Error Detection
Cyclic Redundancy Check
Parity Check and Correction
Network Architectures (1 week)
OSI model
Application Layer
Representation Layer
Session Layer
Transport Layer
Network Layer
Datalink Layer
Physical Layer
DoD Internet model
Proprietary Architectures
Physical Layer (1 week)
Interchange Circuits
EIA RS-232
RS-449, RS-422
RS-423 interfaces
CCITT X.21 protocol
Datalink Layer (2 weeks)
Data link services
Data link protocols
stop-and-wait,
sliding windows
X.25 link access procedures
Bi-sync
x-modem
y-modem
Kermit protocols
Network Layer (1 week)
Network routing concepts
Routing algorithms
CCITT X.25 protocol
Internetworking
Transport, Session and Presentation Layers (1 week)
ISO 8073 transport protocol
ISO 8327 session protocol
ISO file transfer protocol
Data compaction algorithms
Local Area Networks (LAN) (2 weeks)
LAN Topology
Synchronization and Flow Control
Access Methods
LAN vs. Private Branch Exchange (PBX)
Network Integration
Protocols and Standards
Leading Commercial Products
ETHERNET
Token Ring
Wide-Area Networks (2 weeks)
Circuit Switching and Packet Switching
Protocols and Standards
Leading Commercial Products
ARPANET
TYMNET
DATAPAC
The Internet
Network Security and Privacy (1 week)
Layers of protection
Types of security exposure
Traditional cryptography
Data encryption standards
The key distribution problem
Public key and cryptography
Authentication and digital signatures
Course Requirements:
Examinations 50%
Projects 50%
Back to course list
Course No.: COSC 655
Course Title: Advanced Topics in Programming Languages
Credit Hours: 3
Prerequisite: COSC 600
Course Description: Concepts and structures in design and implementation
of widely used programming languages. Characteristics of different forms of
programming languages such as functional, object-oriented, concurrent and logic
programming.
Course Objectives:
Upon the completion of this course students should have a clear understanding of:
a. the steps in the design of a procedure-oriented high-level language;
b. the Object-Oriented Programming environment;
c. the Functional Programming Environment;
d. the Logic Programming Environment;
e. the Concurrent Programming Environment; and
f. the advantages and the disadvantages of different programming environments.
Suggested Textbooks and References:
1. T. W. Pratt, Programming Languages: Design and Implementation, 2nd
Edition, Prentice-Hall, 1984.
2. Ravi Sethi, Programming Languages Concepts and Constructs, Addison Wesley,
1989.
3. J. Cox, Object-Oriented Programming, Addison Wesley, 1986.
4. C. Ghezzi, M. Jazayeri, Programming Languages Concepts, 2nd Edition,
John Wiley, 1987.
5. D. DeGroot, G. Lindstrom, Logic Programming: Functions, Relations and
Equations, Prentice-Hall, 1986.
6. Nancey, France, Functional Programming Languages and Computer
Architecture, Springer-Verlag, Lecture note 201, 1985.
7. Ellis Horowitz, Fundamentals of Programming Languages, 2nd Edition,
Computer Science Press, 1984.
8. B. J. MacLennan, Principles of Programming Languages:Design, Evaluation,
and Implementation, 2nd Edition, , HRW, 1987.
9. D. Gelernter and S. Jagannathan, Programming Linguistics, MIT Press,
1990.
10. B. Meyer, Introduction to the Theory of Programming Languages, Prentice
-Hall, 1990.
11. H. G. Mayer, Programming Languages, MacMillan Publishing Co., 1988.
12. K. Slonneger and B. Kurtz, Formal Syntax and Semantics of Programming
Languages, Addison Wesley, 1995.
13. Coplien Schmidt, Pattern Languages of Program Design, Addison Wesley,
1995.
14. Gary Cornell and Cay Horstmann, Core Java, Second Edition, Prentice-Hall,
1996.
15. W. Lalonde and J. Pugh, Inside Smalltalk, Prentice-Hall, 1991.
16. ACM Transactions on Programming Languages and Systems
17. ACM SIGPLAN Notices
18. Computing Surveys
19. Communications of the ACM
Course Topics:
Introduction (1 week)
History of Programming Languages
Elements of Programming Languages
Expression notations
Expression evaluation
Function declarations and applications
Recursive functions
Procedure declarations and applications
Recursive procedures
Scope
Types
Traditional Programming Languages (2 weeks)
Evaluation of imperative languages
Evaluation and effect of an assignment
Data types/structures in Modula-2, C, Ada
Control flow in Modula-2, C, Ada
Type names and type equivalence in Modula-2, C, Ada
Procedure declaration in Modula-2, C, Ada
Parameter passing
Lexical scope
Block structure
Pointers and dynamic allocation
Object-Oriented Programming (4 weeks)
Introduction to Object -Oriented Programming
The SmallTalk-80
Vocabulary
Elements of SmallTalk-80
Inheritance in SmallTalk-80
An extended example in SmallTalk-80
The C++ Language
Classes in C++
Classes in Objective C++
Inheritance in C++
An extended example in C++
The Java Language
Java Class Library
Inheretance & Polymorphism
An extended example in Java
Functional Programming (2 weeks)
Underlying Characteristics of Functional Programming
Standard ML programming language
Lisp
Storage allocation
ML: static type checking
Exception handling in ML
An extended example
Logic Programming (2 weeks)
Underlying characteristic of Logic programming
Computing with Relations
Introduction to Prolog
Data structures in Prolog
Control flow in Prolog
Programming techniques relevant to Logic Programming
An extended example
Concurrent Programming (2 weeks)
Parallelism in hardware
Implicit synchronization
Safe access to shared data
Concurrency in Ada
Synchronized access to shared variables
An extended example
Principles of Language Design (2 weeks)
Lexical definitions
Syntax definitions
Semantic definitions
Data structures
Data types
Memory management
Course Requirements:
Projects 15%
Presentation 5%
Assignments 20%
Literature Review 10%
Exams 50%
Back to course list
Course No.: COSC 657
Course Title: Database Management Systems II
Credit Hours: 3
Prerequisite: COSC 457/COSC 578
Course Description: Relational database systems application,
implementation, management, administration, design, advanced data modeling,
object-oriented databases, deductive databases, query optimization, functional
dependencies, concurrency, security and integrity.
Course Objectives:
1. Understand the real-world data heterogeneity problems.
2. Study multidatabase/heterogeneous database systems and design issues.
3. Learn advanced data models.
4. Study the state-of-the art research directions in multidatabase
implementations.
5. Study advanced topics of database systems including: transactions,
security, recovery, and distributed database systems.
6. Review state-of-the art papers in database management systems.
7. Understand the implications of the Internet and Database applications.
8. Understand the future direction in database management systems.
Suggested Textbooks:
1. Ramez Elmasri and Shamkant B. Navathe, Fundamentals of Database Systems,
Second Edition, The Benjamin/Cummings Publications Company, Inc., 1994.
2. Michael Stonebraker, Readings in Database Systems, Morgan Kaufmann
Publishers, Second Edition.
Suggested References:
1. ACM Computing Surveys
2. ACM Transactions on Database Systems
3. Other related publications
Course Topics:
Advanced Data Models 1 week
database roles
relational data model overview
OO data model
object-relational data model.
Heterogeneous/Multidatabase systems 2 weeks
heterogeneity
taxonomy
multidatabase conflicts
multidatabase models
multidatabase solutions
multidatabase prototypes and systems
Query Processing and Optimization 2 weeks
indexing
hashing
tree data structures
query processing strategies
query representations
query improvement
query processing examples
Transaction processing concepts 1 week
types of failures
system log
checkpoint
schedules, conflicts, serializability, and recoverability
examples
Concurrency Control Techniques 1 week
mechanisms
two-phase locking
granularity
issues
Recovery Techniques 1 week
recovery strategies
centralized databases
transaction states
backups, and logs
Security, Integrity, and Control 1 week
threats
defense mechanisms
integrity rules
authentication
authorization.
Object-Oriented Database Systems 1 week
object data model
OO architectures
product examples.
Distributed Database Systems 1 week
concepts
architectures
product examples.
Client/server Database Systems 1 week
concepts
architectures
Deductive Databases 2 weeks
deductive database model
query evaluation
constraints
deductive database system architectures
Multimedia Databases 1 week
concepts
database issues
Course Requirements:
project 50%
proposal and problem foumulation (15%)
implementation and demonstration (50%)
report, its quality and organization (20%)
presentation (15%)
examinations. 50%
Group Project:
Students will participate in a group to develop a multidatabaseproject. This project
involves database analysis, design, modeling, and implementation of a multidatabase
application. The implementation will be done in one or more database systems in addition
to the Oracle DBMS. Two to four students will form a team to work on each non-
overlapping project. Each team will select a particular technique to solve a particular
multidatabase issue and demonstrate their approach to the class. Research papers will
be reviewed to select a technique and a particular approach is reviewed and mutually
agreed between the team and the faculty. A class presentation and a demo will be given
to the class at the end of the semester. A report of the project by each team is also
submitted for grading. The project grade will be based on initial proposal, implementation
and demonstration, project report, and presentation.
Back to course list
Course No.: COSC 661
Course Title: Artificial Intelligence Programming and
Adaptive Systems
Credit Hours: 3
Prerequisites: COSC 461/COSC 581
Course Description: Major differences between AI and conventional
programming, symbolic programming techniques and adaptive systems, PROLOG
and LISP.
Course Objectives:
1. understand AI programming methods
2. apply AI techniques and concepts to solve real problems
3. design and implement an AI adaptive system
Suggested Textbook:
A. J, Gonzalez and D. D. Dankel, The Engineering of Knowledge-Based Systems:
Theory and Practice, Prentice-Hall, 1993.
Suggested References:
1. M. W. Firebaugh, Artificial Intelligence: A knowledge-Based Approach,
Boyd & Fraser Publishing Company, 1988.
2. G. L. Steele Jr., Common LISP, Digital Press, 1984.
3. K. Weiskamp and T. Hengl, Artificial Intelligence Programming with Turbo
Prolog, John Wiley & Sons Inc., 1988.
4. J. B. Rogers, A PROLOG Primer, Addison-Wesley Company,, 1986.
Course Topics:
Differences between AI programming and conventional programming and the goals of
AI programming (1 week)
Advanced topics in LISP, such as flexible functions, lambda, non-standard flow of
control, packages, system functions, vectors, structures, and internal and
external LISP functions. (2.5 weeks)
Advanced topics in PROLOG, such as alternative resolution strategies, soundness
and completeness, and negation as failure, parallelism, cut/fail, logic and
control, programming environment, debugging techniques, and building large
systems. (2.5 weeks)
Design of adaptive systems using AI languages properties of adaptive systems
. techniques and methods
. efficiency (2 weeks)
Case study (1)
discuss several adaptive AI systems selected from recent research
journals and conference proceedings (2 weeks)
Case study (2)
discuss CSM and ADVISOR, two adaptive systems developed by H. Zhou, which
can provide some ideas for the students' projects. (1.5 weeks)
Project Design and implementation work as a small group to design and implement
projects (1.5 weeks)
Project demonstration and paper presentation student presentation (1 week)
Course Requirements:
Mid-term exam 30%
Assignments 20%
Project 50%
Project Descriptions:
The primary requirements of the projects are a construction of an adaptive
system, probably a reconstruction of an existing system that is described in
the literature. The developed systems should demonstrate the ability of adapting
its behavior in response to the environmental changes and improve its performance
over time.
Back to course list
Course No.: COSC 665
Course Title: Expert System Design and Development
Credit Hours: 3
Prerequisites: COSC 461/COSC 581 or equivalent
Course Description: Approaches and methods employed in expert system
design and development analysis of selected expert systems, prototyping and
presentation.
Course Objectives:
1. Study the expert system organization
2. Compare selected expert systems
3. Each student is expected to understand one expert system in depth
4. Develop hand-on experience by building a prototype of expert systems in
a selected domain
5. Understand the advantages and weaknesses of expert systems
Suggested Textbooks:
1. A. J. Gonzalez & D. D. Dankel, The Engineering of Knowledge-Based Systems.
Prentice Hall, 1993.
2. Hayes-Roth, F.; Waterman, D. A. and Lenat, D. B., Building Expert Systems.
Addison-Wesley, 1983.
3. Buchanan, B. and Shortliffe, E. H., Rule-based Expert Systems, Addison-
Wesley, 1983.
4. Hayes-Roth, F. Knowledge-Based Expert Systems, IEEE Computer, 17(10):
263-273, 1984.
5. Selected papers provided by the instructor
Course Topics:
Introduction to expert systems (1 week)
features of expert systems
why need expert systems
who is involved in building expert systems
Organization of expert systems (1 week)
major components
organizing knowledge
representing knowledge
differences between expert systems and conventional programs
Knowledge representations in expert systems (1 week)
using rules
using semantic nets
using frames
What have expert systems been used for (1 week)
basic activities of expert systems
the types of problems expert systems solve
Case study: PROSPECTOR (1 week)
what is PROSPECTOR
PROSPECTOR at work
how does PROSPECTOR do it
What has PROSPECTOR accomplished
Expert system tools (1 week)
programming languages for expert system applications
nowledge engineering languages and examples
EMYCIN
EXPERT
OPS5
ROSIE
support facilities
system-building aids
questions to ask when selecting a tool
evaluating the tool
Stages in the development of expert system tools (1 week)
what representation and programming methods do the tools support
experimental systems
research systems
commercial systems
students select a project
Building an expert system (1 week)
how to choose a domain
feasibility study
tasks in building expert systems
stages of expert system development
demonstration
research prototype
field prototype
production model
commercial model
acquiring knowledge from an expert
the knowledge acquisition process
interviewing the expert
An example of the expert-system-building process (0.5 week)
the problem
characterizing the problem
what concepts are needed to produce a solution
how can the knowledge be formally represented
implementing a prototype system
validating the rules
Pitfalls in the expert system development (1 week)
choosing an appropriate problem
resources for building the system
choosing the expert system building tool
choosing the domain expert
interacting with the expert
system implementation
system testing and evaluation
Student presentations (4 weeks)
Each student (or a group of students) is set the goal of
understanding at least one system in detail. The student becomes the expert on,
and the representative of, the system. The student is given a paper describing a
particular expert system from a research journal or conference proceedings. The
student is expected to give a presentation based on the following outline and
make a copy of his or her report for every member of the class:
the domain
main general function
system name
dates
researchers
location
main references
language or tool used
machine on which the system was developed
brief summary describing the system
related systems
characterization of input and output
theoretical commitment
completeness: has the system been fully implemented?
use: has the system been used?
performance: any performance measurement used?
phases
overall organization
characterization of the knowledge
search space
search-control strategy used
failure methods
uncertainty
knowledge representation method
knowledge representation generality
alternative solution method used?
interaction
data format
learning: does the system learn?
explanation
strength
weakness
other comments
Course Requirements:
In-class discussion 10%
mid-term exam 30%
paper presentation 10%
project 50%
Project Descriptions:
The primary requirement of the project will be a construction of an expert system,
either using an expert system development tool, such as OPS5, or one of the AI
languages (LISP and PROLOG). The problem domain will be selected from the real-world.
The project will also include the interview with the expert in the field, the knowledge
engineering phrase, and the testing and evaluation phase. The major objectives are to
learn how to apply AI techniques on practical problems and understand the limitations
of AI approaches.
Back to course list
Course No. COSC 680
Course Title: Seminar in Computer Science
Credit Hours: 1
Prerequisite: Consent of Instructor
Course Description: Presentation and discussion of research trends and
advanced topics in computer science. Students may enroll in this course up to
three times for a total of 3 credit hours.
Suggested Textbooks and Reading Materials:
Each seminar will have its own list of reading materials. Normally the list of
reading materials, however, will come from conference proceedings, Computer-
related Journals and Transactions on specific topics in computer science.
Course Topics:
Details of the topic covered vary from one seminar to another. The general
consensus is the topics be of interest to both graduate students and faculty.
Course Requirements:
Students taking this course for credit hours will be required to participate in
the presentation and preparation of course materials. They are also responsible
in preparing a separate research report on the main topic of the course.
Grading:
The course will be graded on Satisfactory/Unsatisfactory basis.
Back to course list
Course No.: COSC 682
Course Title: Advanced Topics in AI: Machine Learning
Credit Hours: 3
Prerequisites: COSC 661
Course Description: Learning approaches methods, and design, selected
learning systems and survey of current literature.
Course Objectives:
1. understand machine learning approaches and systems
2. study the methodologies of the field and the research currently being
conducted
3. extract a general area of interest and begin working on a prototype,
resulting ideally in a survey paper (of Master paper, or publication
quality).
Suggested References
1. R. S. Michalski and etc, Machine Learning: An Artificial Intelligence
Approach, Tioga, 1983.
2. R. S. Michalski, and etc, Machine Learning (II), Morgan Kaufmann Pub. Inc.
1986.
3. Selected AI publications (provided by the instructor)
Course Topics:
Introduction to Machine Learning differing methodological perspective in AI
research;
understanding the nature of learning (1 week)
Learning distributed concept representation (1 week)
parallel networks that learn to pronounce English
a Boolean complete neural network
induction of decision trees
Symbolic approaches to concept learning (1 week)
generalization as search
comparative review of selected methods for learning from examples
Learning search heuristics from examples (1 week)
from weak methods to domain-specific heuristics
learning by experimentation
Episodic and macro learning (1 week)
a weak method for learning
selectively generalizing plans for problem-solving
Problem-solving architectures that support learning (1 week)
chunking
knowledge compilation - the general learning mechanism
Untutored learning: conceptual clusting (1 week)
learning from observation
knowledge acquisition via incremental conceptual clusting
Analogical reasoning (1 week)
study the paper "Understanding Analogical Reasoning" by Hall
Explanation-based learning (1 week)
study the paper "Explanation-based generalization: a unifyingview"
by Mitchell, keller and kedar-cabelli
Exploiting knowledge during exploration and discovery (1 week)
automated theory formation in mathematics
Why AM and Eurisko appear to work
Genetic algorithms and classifier systems (3 weeks)
genetic algorithms
classifier systems
applications
Student presentation (1 week)
Course Requirements:
In-class discussion 10%
Paper 10%
Mid-term exam 30%
Project 50%
Project Descriptions:
The primary requirement will be a reconstruction of an existing learning system
that is described in the literature, or extend the research the instructor is
currently conducting. As well as insuring that the student thoroughly understand
an existing system, this project should hone writing and programming skills and
give him (her) a feel for the complexity of the research and application in the
field of artificial intelligence.
Back to course list
Course No. COSC 695
Course Title: Independent Study in Computer Science
Credit Hours: 3
Prerequisite: Nine hours at the graduate or upper division level
Course Description: Independent study in selected areas of Computer Science.
Course Objective:
To provide an opportunity for a student to pursue study of a topic not covered in a
regular course offering or to study in greater depth material introduced in a regular
course offering. Student will work closely with an assigned faculty member to insure
adequate guidance. Use of a proposal and well-defined objectives is recommended. A
minimum requirement is a formal paper or project report on the topic(s) studied.
Back to course list
Course No. : COSC 715
Course Title: Robotics
Credit Hours: 3
Prerequisite: COSC 600 or equivalent
Course Description: Physical mechanisms of robotics, issues of modelling,
planning, control, and programming. Principles underlying the design and analysis
of robotic systems.
Course Objectives:
1. To study the history, philosophy and application of robotics.
2. To study the subsystems and physical components used to construct a robot.
3. To study the mathematical modelling of manipulator position, motion, and
force using vectors and homogeneous matrices.
4. To study the mobile robot kinematics, dynamics and algorithmic solutions
to problems.
5. To study the Robot programming languages.
Suggested Textbooks:
1. Fu, K.S., Gonzalez, R.C. and Lee, C.S.G., Robotics: Control, Sensing,
Vision, and Intelligence, McGraw Hill, 1987.
2. Craig, J.J., Robotics: Mechanics and Control, Addison Wesley, 1989.
Suggested References:
1. Groover, M.P., Fundamentals of Modern Manufacturing: Materials,
Processes, and Systems, Prentice Hall, 1996.
2. Craig, J., Adaptive Control of Mechanical Manipulators, Addison Wesley,
1988.
3. Snyder, W.E., Industrial Robots: Computer Interfacing and Control,
Prentice-Hall, 1985.
4. Song, S.M., and Waldron, K.J., Machines That Walk, MIT Press, 1988.
5. IEEE Journal of Robotics and Automation
6. International Journal of Robotics Research
7. IEEE Transactions on Man, System, and Cybernetics
Course Topics:
Introduction 1 week
Background
Historical Development
Robot Arm Kinematics and Dynamics
Manipulator Trajectory Planning and Motion Control
Robot Sensing
Robot Programming Languages
Machine Intelligence
Robot Arm Kinematics 1 week
Introduction
The Direct Kinematics Problem
The Inverse Kinematics Solution
Arm Dynamics 1 week
Introduction
Lagrange-Euler Formulation
Newton-Euler Formation
Generalized D'Alembert Equations of Motion
Planning of Manipulator Trajectories 1 week
Introduction
General Considerations on Trajectory Planning
Joint-interpolated Trajectories
Planning of Manipulator Cartesian Path Trajectories
Control of Robot Manipulators 1 week
Introduction
Control of the Puma Robot Arm
Computer Torque Technique
Variable Structure Control
Resolved Motion Control
Adaptive Control
Sensing 2 weeks
Introduction
Range Sensing
Proximity Sensing
Touch Sensor
Force and Torque Sensing
Low-Level Vision 2 weeks
Introduction
Image Acquisition
Illumination Techniques
Imaging Geometry
Some Basic Relationships Between Pixels
Preprocessing
Higher-Level Vision 1 week
Introduction
Segmentation
Description
Segmentation and Description of Three-Dimensional Structures
Recognition
Interpretation
Robot Programming Language 2 weeks
Introduction
Characteristics of Robot-Level Languages
Characteristics of Task-Level Languages
Robot Intelligence and Task Planning 2 weeks
Introduction
State Space Search
Problem Reduction
Use of Predicate Logic
Means-Ends Analysis
Problem-Solving
Robot Learning
Robot Task Planning
Basic Problems in Task Planning
Expert Systems and Knowledge Engineering
Course Requirements:
Exam #1 30%
Exam #2 30%
Homework 40%
Grading:
A 90-100%
B 80- 89%
C 65-79%
F 0-64%
Back to course list
Course No. : COSC 716
Course Title: Object-Oriented Methodology
Credit Hours: 3
Prerequisite: COSC 600 or equivalent
Course Description: Object-oriented approach to modeling, problem
solving, requirement analysis, system design, system implementation, database
design, system engineering and software engineering.
Suggested Textbooks:
1. J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorensen, Object-
Oriented Modeling and Design, Prentice-Hall, 1991.
Suggested References:
1. Peter Coad and Jill Nicola, Object-Oriented Programming, Prentice-Hall,
1993.
2. Mark Lorenz, Object-Oriented Software Development: A Practical Approach,
Prentice-Hall, 1993.
3. Grady Booch, Object-Oriented Analysis and Design with Applications, 2nd
edition, Benjamin/Cummings, 1994.
4. Derek Coleman, et. al., Object-Oriented Development: The Fusion Method,
Prentice-Hall, 1994.
5. Dennis de Champeaux, Object-Oriented Development Process and Metrics,
Prentice-Hall, 1997.
6. Setrag Khoshafian, Object-oriented Databases, Wiley, 1993.
7. Robert C. Martin, Designing Object-Oriented C++ Applications Using The
Booch Method, Prentice-Hall, 1995.
8. Edited by Won Kim, Frederick H. Lochovsky,Object-Oriented Concepts,
Databases, and Applications, Addison-Wesley, ACM Press.
9. Bran Selic, Garth Gullekson, and Paul Ward, Real-time Object-Oriented
Modeling, Wiley, 1994.
10. Cay S. Horstmann, Mastering Object-Oriented Design in C++, Wiley, 1995.
11. Anton Eliens, Principles of Object-Oriented Software Development,Addison
-Wesley, 1995.
12. Henry F. Ledgard, The Little Book of Object-Oriented Programming, Prentice-
Hall, 1996.
13. Robert Rist and Robert Terwilliger, Object-Oriented Programming in EIFFEL,
Prentice-Hall, 1995.
14. Ole Lehrmann Madsen, Briger Moller-Pedersen and Kristen Nygaard, Object-
Oriented Programming in BETA Programming Language, Addison-Wesley, 1993.
15. Daniel Tkach and Richard Puttick, Object-Oriented Technology in Application
Development, Benjamin/Cummings, 1994.
16. Proceeding of The Technical Annual Conference on Object-Oriented Programming,
Systems, Languages and Applications (OOPSLA), 1987-1995.
17. Peter Coad and Adward Yourdon, Object-Oriented Analysis,Prentice-Hall, 1991.
18. Mark Lorenz and Jeff Kidd, Object-Oriented Software Metrics, Prentice-Hall,
1994.
19. Wilf Lalonde, Discovering Smalltalk, Benjamin/Cummings, 1994.
20. Adele Goldberg and David Robson, Smalltalk-80: The Language and Its
Implementation, Addison-Wesley, 1983.
21. Adele Goldberg, Smalltalk-80: The Interactive Programming Environment,
Addison-Wesley, 1984.
Course Topics:
Object-Oriented Paradigm Lecture 1
Object-Oriented Modeling Lectures 2 and 3
Chapters 2, 3 and 4 of textbook
Dynamic Modeling Lecture 4
Chapter 5 of textbook
Functional Modeling Lecture 5
Chapter 6 of textbook
Object-Oriented analysis and Design Lectures 6,7 and 8
Chapters 8, 9 and 10 of textbook
Object-Oriented Implementation Issues Lectures 9 and 10
Midterm Exam
Object-Oriented programming Languages
Smalltalk Lecture 11
Team 1 presentation
C++ Lecture
Team 2 Presentation
EIFFEL Lecture
Team 3 presentation
Ada 95 Lecture
Team 4 Presentation
Object-oriented Implementation CASE Tools
CASE Tools Lecture
Team 5 Presentation
Object-oriented Software Metrics ( time allowed)
Project: Each team will be asked to work on a project of their choice to
demonstrate their understanding of modeling, analysis, design and implementation of a
small software system using object-oriented methodology. A list of 5 projects is provided
in this course syllabus. If more than one team shows interest in a given project we will
draw names.
Course requirements:
Paper/presentation/participation 25%
Examination 40%
Project 35%
Back to course list
Course No. COSC 720
Course Title: Computational Complexity
Credit Hours : 3
Prerequisite: COSC 583
Course Description: Computational complexity, time and storage cost of
polynomial, Non-polynomial (NP) and NP-complete problems, randomize computation,
cryptography and approximability.
Course Objectives:
1. Study the cost of implementing computational algorithms.
2. Understand why some problems are so hard to solve.
3. Learn to solve some of the computationally hard problems using probabilistic
methods.
4. Study the characteristics of solvable and unsolvable problems.
5. Study the algorithmic concepts of cryptography as a computational problem.
Suggested Textbook:
1. Michael Sipser, Introduction to the Theory of Computation, PWS, 1997.
Suggested References:
1. Christos H. Papadimitriou, Computational Complexity, Addison-Wesley, 1995.
2. Daniel I. A. Cohen, Introduction to Computer Theory, Wiley, 1986.
3. Dino Mandrioli, Carlo Ghezzi, Theoretical Foundation of Computer Science,
Wiley, 1987.
4. Derick Wood, Theory of Computation, Harper & Row, 1987.
5. Zohar Manna and Richard Waldinger, The Deductive Foundations of Computer
Programming, Addison-Wesley, 1993.
6. Fred Hennie, Introduction to Computability, Addison-Wesley, 1977.
Course Topics:
Introductory Definitions, Notations and Mathematics (5 weeks)
Algorithm Complexity
Turing Machine as an Algorithm
Other Abstract Machines as Algorithm
Finite Automata
Pushdown Machines
Computability
Universal Turing Machine
The Halting Problem
Boolean Logic
First-order Logic
Turing Computability
Logical Undecidability
Complexity Classes and Categories (5 weeks)
Reduction and Completeness
Polynomial Problems
Non-polynomial (NP) Problems
NP-Complete Problems
Graph-theoretic Problems
Satisfiability Problem
coNP and Function Problems
A Polynomial vs a Nonpolynomial Problem
The Polynomial Hierarchy
Optimization Problem
Other Computational Problems (4 weeks)
Randomize Computations
Cryptography
Approximation Problem
Nonapproximability
Logarithmic Space
Polynomial Space
Space-Complete Problems
Course Requirements:
Paper/presentation/participation 30%
Examinations 70%
Back to course list
Course No. COSC 725
Course Title: Process Control and Real-Time Systems
Course Hours: 3
Prerequisite: A Course in Computer Architecture
Course Description: Analog to Digital and Digital to Analog conversions,
signal conditioning and processing, direct digital control of processes, adaptive
control of non-linear systems, real-time programming considerations - response time,
survival time, recovery time, and throughput, executive system calls, memory related
system calls, task-synchronization system calls, multiprocessing, interrupts, task
scheduling and task concurrency.
Suggested Textbook:
William Rigby and Terry Dalby, Computer Interfacing--Data Acquisition and Control,
Prentice-Hall, 1995.
Course Objectives:
Data acquisition: (3 weeks)
A/D and D/A conversion,
input grounding,
shielding,
signal conditioning error analysis,
analog multiplexers,
quantization and sampling,
sample holds.
Conversion system design with computer assisted analysis (1 week)
system design considerations,
low data rate I/O systems,
high data rate I/O systems,
computer assisted interface analysis software.
Direct digital control (3 weeks)
adaptive control of non-linear systems,
processor interfacing methods.
Real-time systems considerations: (2 weeks)
response time,
survival time,
recovery time, and throughput,
real-time operating systems,
real-time programming languages.
Real-time hardware demands: (1 week)
high operating speed,
interrupts,
direct memory access (DMA),
multiprocessing and fault tolerance.
Real-time software demands: (2 weeks)
task scheduling and synchronization,
task concurrency and multi-tasking,
fast context switching,
fast inter-task communication,
bus protocol in multiprocessor systems.
Data management and analysis software: (2 weeks)
integrated packages for data acquisition and control,
simulation packages for process control.
Laboratory Requirements: Laboratory work is required for this course.
Students will be required to submit a detailed laboratory report. Students
will perform experiments including:
temperature measurement of a thermistor;
control the speed and direction of a stepper motor;
control the speed and direction of a D.C. motor;
closed loop control of a servo motor;
In addition to the above hands-on experiments, students will be provided with high
level software tools to simulate real-time processes. Each student will do a project
and present it in class.
Course Requirements:
Home Work Assignments 10%
Project 10%
Laboratory Projects 30%
Examinations 50%
Back to course list
Course No: COSC 730
Course Title: Network Management Systems
Credit Hours: 3
Prerequisite: COSC 650 or equivalent
Course Description: The study of various network management configurations,
architectures, protocols, design complexities, their software implementation and
network system_s pivotal role in the global information superhighway applications.
Course Objectives:
1. Study the data communication networks terrestrial, celestial, and hybrid.
2. Understand the information superhighway and its implications in network
management systems.
3. Study the various faucets of network management systems (ANSI, ISO standards).
4. Study the configurations, architectures, protocols, and technology related to
integrated network management systems.
5. Learn the software building blocks and the current design issues with respect
to network management systems.
6. Learn and participate in building a group project for a network management
system.
Suggested Textbooks:
1. Kornel Terplan, Communication Network Management, Prentice Hall, Second
Edition, 1992.
2. Subodh Bapat, 1994, Object-Oriented Networks: Models for Architecture,
Operations, and Management, PTR Prentice Hall, Englewood Cliffs, NJ.
Suggested References:
1. William Stallings, 1993, SNMP, SNMPv2 and CMIP: The Practical Guide to
Network Management Standards, Addison-Wesley, Reading, MA.
2. Rainer Handel, Manfred N. Huber, and Stephan Schroder, ATM Networks,
Concepts, Protocols, Applications, Addison Wesley, 1995.
Journal References:
1. Computer Communications
2. Computer Communication Review
3. Data Communications
4. International Journal of Network Management
5. IEEE Network
6. IEEE Communications Magazine
7. IEEE Journal on Selected Areas in Communications
8. Computer Networks and ISDN Systems
Course Topics:
Communication Network Technology (1 week )
Functional Requirements
Integrated Network Systems
Open Systems Standards
Architectures and Systems for Network Management
Commercially available and research prototypes
Network Building Blocks (3 weeks )
Configuration Management
Performance Management
Fault Management
Security Management
Accounting Management
Planning Management
Automated Information Management (2 weeks)
Managing Networks by Managing Databases
Network Information Modeling
Management Information Base (MIB II)
Network Management with OOA
Distributed Network Management Systems
Understanding Data Integration Problems
Expert Systems Applications to Network Management Systems (1 Week)
Applying AI techniques to the Management of Heterogeneous Networks
Integration of Human and Machine Intelligence in Network Management and
Control
Studying some prototypes
User Interfaces (1 week)
GUI Issues in Network Management Systems
Case Studies (Hughes, Loral, etc..)
Network Routing (2 weeks)
Network Routing Evolution
Advanced Routing Techniques
Control of Multi-domain Networks
ATM Network Routing
Simple Network Management Protocol (SNMP) (2 weeks)
Network Management in the TCP/IP Protocol Suite
An integrated architecture for LAN/WAN Management
MIB II and SNMP Interoperability
SNMP Security
Case Studies (2 weeks)
Course Requirements:
Term paper and presentation 20%
Group project 30%
Examinations