Computer Science
CS 101 (3 Credits) Fall, Spring
Computers and Society (3+0)
Computer literacy for everyone. Overview of computing machines and automatic data processing. Interaction between social institutions and automated decision making. Introduction to business applications software and electronic mail. Some programming for understanding, not for skill development. (Prerequisite: Two years of high school mathematics, including at least one year of algebra.)
CS 103 (3 Credits) Fall, Spring
Introduction to Computer Programming (2+3)
Programming for non-majors and for those computer science students without the background for CS 201. Concepts of structured programming and algorithm design within the syntax of the PASCAL programming language. (Prerequisite: MATH 107X or 131X or 161.)
CS 201 (3 Credits) Fall, Spring
CS 202 (3 Credits) Fall, Spring
Computer Science I and II (3+0)
The discipline of computer science including problem solving, algorithm development, structured programming, top-down design, good programming style, object oriented programming, and elementary data structures. Concepts implemented with extensive programming experience in a structured language and with a group programming project. (Prerequisites: For CS 201: one year high school level programming or CS 103 and mathematics placement at the 200 level. For CS 202: CS 201.)
CS 205 (3 Credits) Alternate Spring
Programming in C (3+0)
The C programming language for students with some experience in other programming languages such as PASCAL or FORTRAN. (Prerequisite: One year high school programming, CS 103, 201, or ES 201. Next offered: 2002 - 03.)
CS 261 (3 Credits) As Demand Warrants
Programming in FORTRAN (3+0)
Syntax and principles of FORTRAN. Applications to problems in science and engineering including the solution of linear and nonlinear equations, interpolation, numerical integration, monte-carlo techniques and the use of mathematical subroutine libraries. (Prerequisites: MATH 200X or concurrent enrollment in MATH 200, previous programming experience or permission of instructor.)
CS 262 (3 Credits) Alternate Spring
Data Visualization (3+0)
Study of computer software and techniques for visualizing multidimensional time dependent data using graphs, contours, pseudocolor, shading, transparency, isosurfaces, volume visualization, transformations, and animation. (Prerequisites: CS 103 and MATH 200. Next offered: 2001 - 02.)
CS 290 (1-3 Credits) As Demand Warrants
Student Internship
Computer science project under the joint direction of a faculty member and participating industry or governmental agency. (Prerequisite: Acceptance in an approved internship program.)
CS 301 (3 Credits) Fall
Assembly Language Programming (3+0)
Organization of computer registers, I/O, and control. Digital representation of data. Symbolic coding, instructions, addressing modes, program segmentation, linkage, macros, and subroutines. (Prerequisite: CS 201.)
CS 302 (3 Credits) As Demand Warrants
Systems Programming (3+0)
Advanced assembly language programming including privileged instructions and system services. Applications to asynchronous I/O, process control and communication, device drivers and file management. (Prerequisite: CS 301.)
CS 311 (3 Credits) Fall
Data Structures and Algorithms (3+0)
Data structures and the algorithms for their manipulation. Object oriented programming, arrays, tables, stacks, queues, trees, linked lists, sorting, searching, and hashing. (Prerequisite: CS 202.)
CS 321 (3 Credits) Spring
Operating Systems (3+0)
Functions of files and operating systems. Review of required architectural features. The PROCESS concept. Storage management, access methods and control, interrupt processing, scheduling algorithms, file organization and management, and resource accounting. (Prerequisite: CS 301.)
CS 331 (3 Credits) Spring
Programming Languages (3+0)
Syntax and semantics of widely differing programming languages. Syntax specification, block structure, binding, data structures, operators, and control structures. Comparison of several languages such as ALGOL, LISP, SNOBOL, and APL. (Prerequisite: CS 311.)
CS 381 (3 Credits) Fall
Computer Graphics (3+0)
Design and implementation of visual interfaces using object oriented programming. Graphics input and output hardware, display programming, 2-D transformations, approximation techniques for curve and surface representation. (Prerequisites: CS 202 and MATH 200X. Recommended: MATH 314)
CS 402W,O (3 Credits) Spring
Senior Project and Professional Practice (3+0)
(Stacked with CS 602)
Students work on group projects in a simulated computer industry environment and produce appropriate documentation and reports. Nature, ethics, and legal considerations of the computer science profession are discussed. Additional topics include project management, design methodologies, technical presentation, human-machine interface and programming team interactions. (Prerequisites: Permission of CS advisor.)
CS 405 (3 Credits) Alternate Spring
Introduction to Artificial Intelligence (3+0)
Examine diverse branches of Al placing Al in larger context of computer science and software engineering. Knowledge representation formalism and search technology. Programming methodologies; procedural systems such as expert systems and blackboard systems and non-procedural systems such as neural networks. Software engineering aspects of problem selection, knowledge acquisition, verification and validation. Individual projects. (Prerequisite: CS 311 or permission of instructor. Next offered: 2001 - 02.)
CS 411 (3 Credits) Spring
Analysis of Algorithms (3+0)
Analysis of classic algorithms, their implementation, and efficiency. Topics from combinatorics (sets, graphs), algebra (integer arithmetic, primes, polynomial arithmetic, GCD, Diophantine equations, encryption), systems (parsing searching, sorting), and theory (recursion, Turing machines). The complexity classes P, NP, and NP complete. (Prerequisites: MATH 307, CS 311.)
CS 421W (3 Credits) Alternate Fall
Operating System Implementation (3+0)
Detail level study of operating system functions and associated implementation with the aid of C language source code for a version of UNIX. Operating system tuning methods and security. Multiprocessor and other advanced operating system concepts. Programming, documentation, and evaluation of operating system segments as projects. (Prerequisite: CS 321. Next offered: 2002 - 03.)
CS 425 (3 Credits) Alternate Spring
Data Base Systems (3+0)
Data independence, relationships, and organization. Hierarchical, network, and relational data models; canonical schema. Data description languages, query facilities, relational calculus. File organization and security, index organization, data integrity and reliability. Review of current database software packages. (Prerequisites: CS 311, 321. Next offered: 2002-03.)
CS 431W (3 Credits) Alternate Fall
Programming Language Implementation (3+0)
Design and implementation of major phases of high level language translators including scanning, parsing, translation, code generation and optimization. Students develop a compiler for a language in a group project which emphasizes good software engineering practices in structured design, testing and documentation. (Prerequisite: CS 331. Next offered: 2001 - 02.)
CS 441 (3 Credits) Alternate Spring
System Architecture (3+0)
Computer design fundamentals, performance and cost. Instruction set design. Implementation techniques. Pipelining, vector processors, and memory hierarchy design. Input/output. (Prerequisites: EE 342, CS 321. Next offered: 2001 - 02.)
CS 442 (3 Credits) Alternate Fall
Computer Communication and Networks (3+0)
Study of computer networks using the ISO/OSI layered model as a framework. Design issues and trade-offs, protocols and selected standards. Emphasis on ISO/OSI Layers 1 - 4 (Physical, Data Link, Network and Transport Layers), plus medium access sublayers (LAN's, etc.). (Prerequisite: CS 321. Next offered: 2002-03.)
CS 451 (3 Credits) Fall
Automata and Formal Languages (3+0)
Finite automata, regular languages, phrase structured grammars, context free language, push down automata, deterministic context free languages, recursive and recursively enumerable languages, Turing machines, decision problems, and undecidability. (Prerequisites: MATH 307, CS 201.)
CS 471W (3 Credits) Fall
Software Engineering (3+0)
(Stacked with CS 671)
Software development as an engineering discipline. Project planning, proposal writing, and management. Software requirements, design, implementation, test and documentation. Additional topics from object-oriented design, real time design, and validation. (Prerequisites: CS 311 and CS 321 or permission of instructor.)
CS 481 (3 Credits) Spring
Advanced Computer Graphics (3+0)
Creation of 3-D computer-generated images. Graphics data structures, geometric transformations, hidden surface techniques, color theory, lighting and shading algorithms, curve and surface representations, visual modeling of physical phenomena. (Prerequisites: CS 381 and MATH 314.)
CS 490 (1 - 3 Credits) Fall, Spring
Student Internship
Students work on computer science project under the joint direction of a faculty member and participating industry or governmental agency. (Prerequisites: Junior standing and acceptance in an approved internship program.)
CS 602 (3 Credits) Spring
Project Management and Professional Practice (3+0)
(Stacked with CS 402)
Work on group projects in a simulated computer industry environment to produce appropriate documentation and reports. Nature, ethics and legal considerations of the computer science profession are discussed. Includes project management, design methodologies, technical presentation, human-machine interface and programming team interactions. (Prerequisites: Acceptance into the CS graduate program, CS 671. Note: Projects will be more complex than in CS 402.)
CS 605 (3 Credits) Alternate Spring
Artificial Intelligence (3+0)
Study and writing of AI programs: expert systems, expert system shells, blackboard systems, neural networks. Representation of knowledge, pattern analysis, inference networks, neural network training. Study of software engineering aspects of AI software. (Prerequisite: Permission of CS graduate advisor. Next offered 2001 - 02.)
CS 611 (3 Credits) Spring
Complexity of Algorithms (3+0)
Theoretical analysis of various algorithms: topics include sorting, searching, selection, polynomial evaluation, NP completeness, decidability. (Prerequisites: CS 411.)
CS 621 (3 Credits) Alternate Fall
Advanced Systems Programming (3+0)
Multiprogramming and multiprocessing systems. File and program security. Scheduling optimization and system tuning, I/O processing, archiving and system recovery, and initialization. Study of current systems. (Prerequisites: CS 311 and CS 321. Next offered 2001 - 02.)
CS 622 (3 Credits) As Demand Warrants
Performance Evaluation (3+0)
A survey of techniques of modeling and testing concurrent processes and the resources they share. Includes levels and types of system simulation, performance prediction, benchmarking and synthetic loading, hardware and software monitors. (Prerequisites: CS 321 or permission of CS graduate advisor.)
CS 625 (3 Credits) Alternate Spring
Data Base Systems (3+0)
Data independence, relationships, and organization. Hierarchical, network, and relational data models: canonical schema. Data description languages, query facilities, relational calculus. File organization and security, index organization, data integrity and reliability. Review of current database software packages. Design and implementation of a data base applications project. (Prerequisites: CS 311, 321. Next offered 2002-03.)
CS 631 (3 Credits) Fall
Programming Language Implementation (3+0)
Formal treatment of programming language translation and compiler design. Parsing context free languages, translation specifications, machine independent code, NBF, scanners, symbol tables, parsers, and recursive descent. Programming of compiler or interpreter segments as projects. (Prerequisite: CS 331.)
CS 641 (3 Credits) Alternate Spring
Advanced Systems Architecture (3+0)
A study of computer systems which have been developed to make special types of processing more efficient or reliable. Examples include RISC machines and parallel machines. (Prerequisites: CS 321 or permission of CS graduate advisor. Next offered 2001 - 02.)
CS 642 (3 Credits) Alternate Fall
Advanced Computer Networks (3+0)
A study of networks of interacting computers. The problems, rationales, and possible solutions for both distributed processing and distributed databases will be examined. Major national and international protocols will be presented. (Prerequisite: Permission of CS graduate advisor. Next offered 2001 - 02.)
CS 651 (3 Credits) Fall
The Theory of Computation (3+0)
Languages and formal models of algorithms: Turing machines, phrase structured grammars and recursive functions. Undecidability, the halting problem, Rice's Theorem.
CS 661 (3 Credits) Alternate Fall
Optimization (3+0)
(Cross-listed with MATH 661)
Linear and nonlinear programming, simplex method, duality and dual simplex method, post-optimal analysis, constrained and unconstrained nonlinear programming, Kuhn-Tucker condition. Applications to management, physical, and life sciences. Computational work with the computer. (Prerequisites: Knowledge of calculus, linear algebra, and computer programming. Next offered: 2002-03.)
CS 670 (3 Credits) Alternate Spring
Computer Science for Software Engineers (3+0)
An overview and survey of the theoretical underpinnings of computer science. Topics are taken from the areas of algorithms and data structures; computer architecture; computer networks, communications, and operating systems; computability and formal languages; languages and compilation. (Prerequisite: admission to the Computer Science M.S. degree program. Not required for students with a B.S. degree in Computer Science. Next offered 2001 - 02.)
CS 671 (3 Credits) Fall
Software Engineering (3+0)
(Stacked with CS 471)
Software development as an engineering discipline. Project planning, proposal writing, and management. Software requirements, design, implementation, test and documentation. Additional topics from object-oriented design, real time design, and validation. (Prerequisites: Four years of experience as software practitioner or permission of instructor.)
CS 672 (3 Credits) Alternate Spring
Software Process Improvement (3+0)
Commonly applied methods for improving the software development process. Emphasis on the Software Engineering Institute's Capability Maturity Model (CMM), and specifically on the key process areas of Level 2 and Level 3 of that model. These include software configuration management, software quality assurance, and software standards. (Prerequisites: CS 671 or permission of instructor. Next offered 2002-03.)
CS 673 (3 Credits) As Demand Warrants
Software Requirements Engineering (3+0)
Focus on the requirements analysis phase of the software development life cycle. Study ways to obtain, analyze, and specify complete and correct sets of requirements. Critique of selected requirements analysis models. Study of current large scale software developments that have failed or are failing. Development of software requirements specifications for large and real software systems via team efforts. (Prerequisites: CS 671 or permission of instructor.)
CS 681 (3 Credits) Spring
Topics in Computer Graphics (3+0)
Hardware, software, and techniques used in computer graphics taken from topics such as refresh, storage, raster scan technology, volume rendering, particle systems, shading, image processing, computer aided design, video effects, animation and virtual environments. (Prerequisite: CS 481 and MATH 314.)
CS 690 (3 Credits) Fall
CS 691 (3 Credits) Spring
Graduate Seminar and Project (3+0)
A two-semester seminar in which students will, individually or in teams, work on and present the results of major programming or literature survey projects in computer science. Written and oral reports will be required. (Prerequisites: 12 credits in graduate computer science courses or permission of CS graduate advisor. CS 690 is prerequisite for CS 691.)