Course Descriptions

How to Read Course Descriptions

The numbers in parentheses following course titles indicate (1) hours per week of lecture, (2) hours per week of laboratory, and (3) semester credit hours. An asterisk (*) following these three figures indicates variable or alternative credit, and that the figure represents the maximum variation in semester credit hour in semester credit hours. In general, credit hours for these courses may range from one to the number indicated.


CS 105 Personal Computing (3-2-3), fall, spring. Personal computing emphasizing the interrelation of hardware with software on microcomputers. Includes instruction in the use of word processing, spreadsheet, database management, and communications programs. Laboratory graded and credited with course. For non-mathematics majors only.

CS 110 Computers and Society (3-0-3), fall, spring. An introduction to the computer as an information organizing and manipulating tool and to its responsible use. Familiarity with word processors and web browsers is assumed.

CS 120 Programming I: High Level (3-0-3), fall, spring. Programming, debugging, and small program development in a statically typed procedural language. Topics include sequential, selective, and iterative control flow, modularity, simple data types, arrays, formatted input and output, and text file processing. For students with little or no background in computer programming.

CS 125 Personal Web Development (3-0-3), fall, spring. Introduction to building a simple, personal web site using the office productivity software that typically accompanies a personal computer. Topics include an introduction to the Internet, web pages, HTML, server-side and client-side scripting, applets, databases, and security.

CS 130 Programming II: Low-Level (3-0-3), fall, spring. Detailed low-level manipulation of data and files in C and the UNIX environment.

CS 220 Machine Organization and Single-User Systems (3-0-3), fall, spring. An introduction to machine organization covering digital circuits, functional units, caches, virtual memory, devices, the interrupt mechanism, and bus arbitration in the context of a single-user system. Prerequisite: CS 130.

CS 221 Networks and Multi-User Systems (3-0-3), fall. An introduction to larger computer systems covering IP networks, services, security, process scheduling, resource sharing, deadlock, interrrupt handlers, client-server systems, and web-centric computing in the context of a multi-user system. Prerequisite: CS 130.

CS 240 Special Topics *, on-demand. Special Topics courses are offered as special needs dictate and/or available faculty allow. Special Topics courses are offered on a one-time basis, to take advantage of particular faculty expertise or to allow a department to develop a course for permanent inclusion in the inventory of courses.

CS 320 Introduction to Database Theory (3-0-3), fall, odd-years. Database theory with an emphasis on relational databases. Include data representation, relations, base tables, indexes, SQL, relational algebra, and relational calculus. Exercises will be done on a state-of-the-art relational database. Prerequisite: CS 110.

CS 330 The Human-Computer Interface (3-0-3), fall, spring. Introduction to both the programmatic and psychological considerations surrounding shaping the computer tool to the user. The course will cover the detals of implementing a graphical user interface, and how to make the interface as user-friendly as possible. Prerequisites: CS 110; two of CS 120, CS 125, CS 130; and 60 earned hours.

CS 332 Elementary Algorithms and Data Structures (3-0-3), fall. Design and scientific and mathematical study of algorithms. Analytic and experimental performance determination. Includes searching and sorting, trees, graphs, asymptotic (e.g., big-O) performance bounds, and the halting problem. Prerequisites: CS 110, CS 120, CS 130, MATH 127.

CS 341 Numerical Methods (3-0-3), fall, even years. Survey of elementary numerical methods used in scientific computing applications. Topics include computer representation of integer and real numbers, sequences, series approximations, finite differences, interpolation, curve fitting, numerical differentiation and integration, and roots of a single non-linear equation. Selected algorithms to be solved using the computer. Programming experience required. Prerequisites: MATH 186. Same as MATH 341.

CS 352 Programming Languages (3-0-3), fall. Students will improve their understanding of languages, increase their vocabulary of useful programming constructs and be able to learn or design a language more easily. Prerequisites: CS 120, CS 220.

CS 356 Operating Systems (3-0-3), spring, odd years. Topics include dynamic procedure activation, system structure, evaluation, memory and process management, and recrovery procedures. Prerequisites: CS 220, CS 221.

CS 365 Theory of Computation (3-0-3), spring, even years. Introduction to formal languages and automata, computability, and complexity. Topics include the DFAs, CFGs, pumping lemmas, Turing machines, the Church-Turning thesis, non-determinism, and NP-completeness. Prerequisites: CS 220, CS 332.

CS 374 Software Engineering (3-0-3), fall. A study of the development of large scale software systems. Includes an overview of currently used analysis and design methodologies, including both structured and object-oriented paradigms. Projects will afford practical experience in the development of interpersonal communctions skills needed for team software development. Prerequisite: CS 332.

CS 381 Computer Graphics (3-0-3), spring. A study of 2D and 3D rendering algorithms and representations, including homogeneous coordinate systems and their attendant transformations. Includes study of light and color and a survey of photo-realistic 3D rendering techniques. Prerequisites: CS 220, MATH 325.

CS 383 File Structures (3-0-3), fall, even years. Disk-based data management. Topics include sequential, indexed, indexed-sequential, hashed, and B-tree file organizations. Prerequisite: CS 130.

CS 420 Networks (3-0-3), fall, odd years. Investigation of real-world networking covering design, implementation, and security. Prerequisite: CS 220, CS 221, and CS 332.

CS 442 Numerical Analysis (3-0-3), spring, even years. Solution of linear systems of equations by direct and iterative methods, matrix inversion, and evaluation of determinants. Matrix solution of least-square problems. Approximation of eigenvalues. Selected algorithms to be solved using the computer. Prerequisites: CS 341, MATH 325. Same as MATH 442.

CS 455 Principles of Compiler Design (3-0-3), fall, odd years. A formal treatment of programming language translation and compiler design concepts. Emphasis is on scanners, parsers, and translation. Prerequisites: CS 332, CS 352.

CS 467 Introduction to Artificial Intelligence (3-0-3), fall. Survey of the search, reasoning, control, learning, and knowledge representation principles underpinning intelligent systems such as games, theorem provers, expert systems, neural networks, planning, machine learning, and natural language. Prerequisites: CS 332.

CS 474 Object-Oriented Design (3-0-3), spring. Systematic object-oriented design. Topics include interface design, design patterns, and the implementation of a medium-sized application. Prerequisite: CS 332.

CS 495 Computer Science Senior Seminar (2-0-2), spring. Supervised study of selected topics in the field of computer science that are not normally or not often available as part of the regular course offerings. A comprehensive term project is normally required. A writing-intensive course. For computer science majors; must be taken during the last spring semester before graduation.