Undergraduate catalog 2009 - 2010, Computer Science
The class catalog is published every two years. Courses
listed in the catalog may not be offered in a given term.
For class offerings for each semester please click on the
Note: All courses taken towards the major or minor must be taken on a letter grade basis, not pass/fail.
|CS 110: Computer Science Fundamentals||Credits: 4||− Description|
Content: Fall, spring. A general introduction to computer science including an overview of
hardware systems, programming essentials, algorithm design, data handling, and
networking. Not intended for students needing a programming background for further
work in computer science.
|CS 153: Computing for Bioinformatics||Credits: 4||− Description|
Content: Spring. An introduction to tools of computer science that are relevant to bioinformatics,
with a focus on fundamental problems with sequence data. Practical topics
will include Perl programming, data management, and web services. Computational
concepts are emphasized with only a sketch of the underlying biology.
|CS 155: Computer Science with Business Applications||Credits: 4||− Description|
Content: Fall. An introduction to tools and concepts of computer science that are most relevant
to business (enterprise) computing and e-commerce. Students will be introduced to
basic programming principles, page layout and visual interface design, client/server
computing, simple techniques for accessing databases, and their algorithmic and
|CS 170: Introduction to Computer Science I||Credits: 4||− Description|
Content: Fall, spring. An introduction to computer science for the student who expects to
make serious use of the computer in course work or research. Topics include: fundamental
computing concepts, general programming principles, the Unix Operating
System, the X-window system, and the Java programming language. Emphasis will
be on algorithm development with examples highlighting topics in data structures.
|CS 171: Introduction to Computer Science II||Credits: 4||− Description|
Content: Fall, spring. Prerequisite: CS 170. A continuation of CS170. Emphasis is on the use
and implementation of data structures, introductory algorithm analysis, and object
oriented design and programming with Java. The course will also introduce the
basics of procedural programming with C.
|CS 190: Freshman Seminar: Robots||Credits: 4||− Description|
Content: Computers are ubiquitous and take a variety of interesting forms such as robots, mobile phones, electronic music players, toys, and biomedical devices. This course provides an introduction to Computer Science by programming and exploring such embedded computer systems and robotics, culminating in a competition among student- designed robots. Although the course is self-contained, a strong interest in learning or experience in programming is helpful.
|CS 190: Freshman Seminar: The Web||Credits: 4||− Description|
|CS 224: Mathematical Foundations of Computer Science||Credits: 4||− Description|
Content: Fall. Prerequisite: Mathematics 112. Corequisite: Computer Science 170. This course
introduces elementary mathematics necessary for the computer science curriculum.
Topics include proof-writing, sets, functions, logic, quantifiers, graphs, automata,
languages, and asymptotic notation.
|CS 255: Computer Organization and Architecture I||Credits: 4||− Description|
Content: Fall. Prerequisite: Computer Science 171. Binary and hexadecimal number systems,
logic gates, combinational and sequential circuits, ALU and control unit organization,
instruction formats, addressing modes, and assembly language programming.
|CS 323: Data Structures and Algorithms||Credits: 4||− Description|
Content: (Formerly CS 253). Spring. Prerequisites: Computer Science 171 and 224. Analysis, design, and implementation
of data structures and algorithms. Algorithms include divide-and-conquer,
dynamic programming, greedy methods, tree and graph traversal, with analysis
emphasizing lower bounds, worst-case, and expected time complexity.
|CS 325: Artificial Intelligence||Credits: 4||− Description|
Content: (Formerly CS 458). Alternate years. Prerequisites: Computer Science 171. Foundations and problems of
machine intelligence, application areas, representation of knowledge, control paradigms,
the LISP programming language, expert systems, design of an intelligent system.
|CS 355: Computer Architecture||Credits: 4||− Description|
Content: Spring. Prerequisites: Computer Science 171 and 255. Digital circuits, efficient algorithms
for computer arithmetic, floating point accelerators, micro-programming,
memory technology and hierarchies, I/O subsystems, interrupt processing and DMA
strategies, communications interfaces, and advanced architectures, including RISC
and cache organization.
|CS 356: Programming Languages||Credits: 4||− Description|
Content: (Formerly CS 470). Alternate years. Prerequisite: Computer Science 171. Introduction to syntax and
semantics of computer programming languages. An overview of various language
paradigms with case studies in declarative languages, object-oriented languages, and
logic programming as constrasted with imperative languages. An overview of translation
issues and methods.
|CS 370S: Software Engineering with Practicum||Credits: 4||− Description|
Content: Spring. Prerequisites: any two computer science courses at the 200 level or higher.
This course introduces basic concepts and techniques of software engineering, and
applies these in the context of a semester-long group programming project.
|CS 375: Independent Software Development||Credits: 1 - 4||− Description|
Content: Prerequisite: permission of instructor. Credit, variable. An independent study course
devoted to the development of software projects.
|CS 377: Database Systems||Credits: 4||− Description|
Content: (Formerly CS 457). Prerequisite: Computer Science 171. Introduction to storage hierarchies, database
models, consistency, reliability, and security issues. Query languages and their implementations,
efficiency considerations, and compression and encoding techniques.
|CS 378: Data Mining||Credits: 4||− Description|
Content: Alternate years. Prerequisite: CS 171; CS 377, or some database experience is recommended.
Introduction to data mining techniques including data preprocessing, data
warehousing and management, association analysis, clustering, and text mining.
|CS 424: Theory of Computing||Credits: 4||− Description|
Content: Spring. Prerequisites: Computer Science 224 and 323. This course gives mathematical
methods to classify the complexity of computational problems. Topics include
regular languages, grammars, decidability, and NP-completeness. Models of computing
such as automata, circuits, and Turing machines are related.
|CS 450: Systems Programming||Credits: 4||− Description|
Content: (Formerly CS 351). Fall. Prerequisites: Computer Science 171 and 255. System programming topics are
illustrated by use of the UNIX operating system. Topics include: file i/o, the TTY
driver, window systems, processes, shared memory, message passing, semaphores,
signals, and interrupt handlers.
|CS 452: Operating Systems||Credits: 4||− Description|
Content: (Formerly CS 451). Spring. Prerequisite: Computer Science 450. The structure and organization of
computer operating systems. Process, memory, and I/O management; device drivers,
exception handling, and interprocess communication. Students write an operating
system as a course-long project.
|CS 455: Introduction to Computer Networks||Credits: 4||− Description|
Content: Prerequisite: CS 450. An introduction to computer networks based on internal
structure using the OSI layer model. Topics include: physical layer (encoding and
protection), data link layer (point-to-point and broadcast networks, transparent
bridging, and spanning tree), the network layer (routing algorithms, the IP protocol,
tunneling), and transport layer (UDP and TCP protocols, NS2 network simulation).
Network programming will be done using the Berkeley socket and pthreads APIs.
|CS 456: Compiler Construction||Credits: 4||− Description|
Content: Fall. Prerequisites: Computer Science 255, 323, and 424. Languages and their grammars,
lexical analysis and parsing, code generation, and optimization.
|CS 459: X Window System Programming||Credits: 4||− Description|
Content: Alternate years. Prerequisites: Computer Science 171. Corequisite: Computer Science
450. Introduction to bitmap graphics using the X Window System. Topics include:
client/server paradigm, event-driven programming, two-dimensional graphics,
graphical user interfaces, toolkits, and object-oriented programming.
|CS 485: Topics in CS: Database Models, Techniques, and Design||Credits: 4||− Description|
Particulars: May be repeated for credit when topics varies.
|CS 485: Topics in Computer Science: Fund. of Genome Bioinformatics||Credits: 4||− Description|
|CS 485: Topics in Computer Science: Software Engineering||Credits: 4||− Description|
|CS 495R: Honors||Credits: 4||− Description|
Content: By permission, normally taken in the semester of the honors thesis defense.
Fulfills Continuing Writing Requirement.
|CS 497R: Undergraduate Directed Study||Credits: 1 - 4||− Description|
Content: Credit, one to four hours, as arranged with the department.