Department of Computer Science

Professor Daniel E. Cooke, Chairperson.

Professors Bagert, Marcy, and Oldham; Associate Professors Lakhani and Lopez-Benitez; Assistant Professors Mengel and Temkin.

This department offers study in the following graduate degree programs: COMPUTER SCIENCE, Master of Science and Doctor of Philosophy and SOFTWARE ENGINEERING, Master of Science. Admission requirements and details of programs are posted on the departmental Web site at <>.

Entering students may be required to complete (without program credit) leveling courses or remedial courses as may be designated by the graduate faculty of the computer science program.

The computer science curriculum is organized in five areas. These denote the teaching and research concentration. Note that there are some overlapping courses:

Computer EngineeringCS 5355, 5365, 5367, 5372, 5375, 5380, 5393, 6396;

Computer System FoundationsCS 5352, 5353, 5355, 5356, 5357, 5361, 5377, 5381, 5382, 5383;

Intelligent SystemsCS 5341, 5368, 5388, 5389;

Parallel and Distributed SystemsCS 5352, 5365, 5376, 5377, 5379, 5380; and

Software EngineeringC S 5355, 5358, 5359, 5360, 5362, 5363, 5364, 5366.

Computer Science Majors. Students pursuing a degree in computer science may take any computer science course for credit. However, the degree plan of a master's student should include at least two courses from two of the above five areas, and the degree plan of a doctoral student should include at least two courses from at least three areas. Software engineering majors should take all courses listed above in the software engineering area and the requirement regarding courses from different areas is not applicable to them.

Students seeking a Master of Science degree can opt for either a 30-hour thesis option (which includes 6 hours of C S 6000) or a 36-hour nonthesis option (which requires passing of a comprehensive examination in the last semester of study). The degree plan should be prepared after consulting the graduate advisor.

Noncomputer Science Majors. The computer science department does not offer any graduate-level service courses; undergraduate courses may be taken for this purpose. Students of other departments who wish to take computer sciences graduate courses should discuss their needs with their research advisors or consult the course instructors. Master students, who have already taken two computer science graduate courses, should consult with the graduate advisor of the department before registering for any additional courses (this limit is five for the doctoral students).

Courses in Computer Science. (CS)

5000. Practicum of Computing (V1-3). Industrial training in an approved field of graduate studies. Can be used only as an additional requirement on degree program.

5301, 5302. Foundations of Computer Science I, II (3:3:0 each). Prerequisite: Programming proficiency. An accelerated survey of computer science. Computer organization, high level and assembler languages, job control, software design, data structures, file organization, machines, and formal languages.

5303. Foundations of Computer Engineering (3:3:0). An accelerated introduction to the fundamentals of computer engineering for students without a computer hardware background. Boolean algebra, digital logic, digital devices and functions, digital system design, computer architecture.

5331. Special Problems in Computer Science (3). Individual studies in advanced computer science and technology.

5341. Pattern Recognition (3:3:0). Traditional and current approaches to the general problem of recognizing patterns in images, signals, and other domains. Includes Bayes decision theory, supervised learning, and nonparametric techniques.

5352. Advanced Operating Systems Design (3:3:0). Prerequisite: C S 3352 and 3364, equivalent, or consent of instructor. Topics on distributed operating systems, such as synchronization, communication, file systems, and memory sharing are discussed. Several programming projects are implemented.

5353. Compiler Construction (3:3:0). Prerequisite: C S 3364, equivalent, or instructor consent. Implementation aspects of compiler construction, automata for formal grammar, semantics of procedural languages, automatic generation of parser, and assembly code generation. A prototype of a compiler is developed.

5355. Real Time and Time Sharing Systems (3:3:0). Prerequisite: C S 2350, 3352, and 5364. Study of the functional needs in real time and time sharing systems. Basic techniques and display concepts, random-access fields, computer networks, simultaneous operations, multiprogramming, and multiprocessing.

5356. Advanced Database Management Systems (3:3:0). Prerequisite: C S 3364, equivalent, or consent of instructor. Systems aspects of relational databases are emphasized. Topics include relational database design, index and access structures implementation and performance evaluation, query processing and optimization, transaction management, and concurrency control.

5357. Multimedia Systems (3:3:0). Prerequisite: C S 3364, equivalent or consent of instructor. Multimedia digital audio processing; image and video data compression; and processing for multimedia presentations. Time-based media representation and synchronization; multimedia communication systems; and hypertext and programming.

5358. Software Studio I (3:3:0). Prerequisite: C S 5362 and 5363. Capstone design and implementation experience of a major software project applying comprehensive software engineering techniques.

5359. Software Studio II (3:3:0). Prerequisite: C S 5358. A continuation of software engineering projects begun in C S 5358.

5360. Software Construction and Evolution (3:3:0). Prerequisite: C S 5362, 5363, and 5364. Theory and practice of the construction, testing, and maintenance of software. Emphasis placed on techniques to evolve software over time to meet the changing needs of users during the life of the software.

5361. Theory of Computing Languages (3:3:0). Prerequisite: C S 3461 and 3383, equivalent, or consent of instructor. General language theory with emphasis on computing languages, Chomsky typology, syntactical and semantic specifications. Standard and experimental methods for specification of languages. Current research on translation of natural language instructions to machine instructions.

5362. Software Specification and Design (3:3:0). Prerequisite: C S 2365, equivalent, or consent of instructor. Examination of the development of the specifications, architecture, and design of software. Analysis, software architecture, design patterns, architectural design and detailed design.

5363. Software Project Management (3:3:0). Prerequisite: C S 2365, equivalent, or consent of instructor. Methodologies for the management of projects involving software components. The larger context of systems development is studied, along with business management and engineering principles. Technical as well as people issues are explored.

5364. Software Metrics (3:3:0). Prerequisite: C S 2365, I E 3341, equivalent or consent of instructor. In-depth study of the use and application of software measurement to improve software products, resources, and processes. Topics include investigative techniques, data collection, and analysis.

5365. Principles of Multiple-Processor Systems (3:3:0). Prerequisite: C S 3375, equivalent, or consent of instructor. Comprehensive introduction to the field of parallel and distributed computing systems. Algorithms, architectures, networks, systems. Theory and applications.

5366. Software Process Improvement (3:3:0). Corequisite: C S 5363 and 5364. Theory and practice for software process improvement and certification at the organizational, project team, and individual level.

5367. VLSI System Design (3:3:0). Prerequisite: E E 2372 and consent of instructor. Design methodologies for development of digital circuits, simulation, layout generation, hardware design language, and design styles. Computer-aided tools are used to develop VLSI cells.

5368. Intelligent Systems (3:3:0). Prerequisite: C S 3364 or consent of instructor. Comprehensive introduction to the field of artificially intelligent computer based systems. Theory and applications in artificial intelligence.

5372. Digital Computer Design (3:3:0). Prerequisite: E E 2372 and consent of instructor. Computer systems are discussed in terms of functional blocks consisting of both hardware and software. The logical organization of the machines is stressed in terms of usage and capability

5375. Computer Systems Organization and Architecture (3:3:0). Prerequisite: C S 3375 or consent of instructor. Introduction to the architecture, organization, and design of computer systems. Topics include processor, control and memory design, computer arithmetic, I/O, and a brief introduction to multiprocessors.

5376. Communication Networks (3:3:0). Networks in the context of parallel and distributed systems. Information theory applied to networks. Network topology. Problems and approaches in design, development, and management of communications networks.

5377. Distributed Computing (3:3:0). Prerequisite: C S 4352, equivalent, or consent of instructor. Introduction to distributed systems. Topics include communications, distributed operating systems, fault-tolerance, and performance issues. Case studies and term projects supplement this course.

5379. Parallel Processors and Processing (3:3:0). Prerequisite: C S 3364 and 3375, equivalent, or consent of instructor. Theory, architectures, and algorithms for the design and implementation of parallel computing systems. Operating system and programming language requirements for parallel computing; approaches and applications.

5380. Fault-Tolerant Computer Systems (3:3:0). Prerequisite: C S 2365 and I E 3341 or consent of instructor. Introductory course to methodologies for specifying, designing, and modeling fault-tolerant computer systems. Includes fault classification, design techniques for fault detection and recovery, and reliability modeling techniques.

5381. Analysis of Algorithms (3:3:0). Prerequisite: C S 3364 or equivalent. Theoretical analysis of algorithms for sorting, searching, sets, matrices, etc.; designing efficient algorithms for data structures, recursion, divide-and-conquer, dynamic programming; nondeterminism, NP-completeness and approximation algorithms.

5382. Theory of Graphs (3:3:0). Basic concepts in graphs. Fundamental algorithms for path traversal and searching; networks; trees; matchings and planarity testing; NP-completeness in graph theory.

5383. Theory of Automata (3:3:0). Prerequisite: C S 3383, equivalent, or consent of instructor. Structured grammars, relation between grammars and automata, deterministic, and nondeterministic finite automata, push-down store, and linear-bounded automata, and Turing machines.

5388. Neural Networks (3:3:0). Neural network theory, models, and implementation. Applications to real-time systems, robotics, pattern recognition, computer vision, and event driven systems.

5389. Advanced Neural Networks (3:3:0). Prerequisite: C S 5388 or consent of instructor. Recurrent neural networks, information processing, dissipative systems, applications to time series analysis and chaotic systems.

5393. Small Computing Systems (3:3:0). Prerequisite: CS 2350, equivalent, or consent of instructor. Microcomputers and minicomputers are programmed, evaluated, interfaced, and used in practical applications. Applications are determined by research and development interests of faculty members.

6000. Master's Thesis (V1-6).

6396. VLSI Algorithm Design (3:3:0). Prerequisite: C S 3364, equivalent, or consent of instructor. Theory and algorithms related to computer-aided design of very large scale integrated circuits. Covers heuristics such as min-cut and branch and bound.

7000. Research (V1-12).

8000. Doctor's Dissertation (V1-12).

Return to Main Directory
Page Maintained by: Cheryl Hedlund

LAST UPDATE: 11-22-99