(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