Undergraduate catalog 2009 - 2010, Computer Science

Note: 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 "Offerings" links.
Note: All courses taken towards the major or minor must be taken on a letter grade basis, not pass/fail.
CS 110: Computer Science FundamentalsCredits: 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 150: Intro To Computers&ProgrammingCredits: 4− Description
CS 153: Computing for BioinformaticsCredits: 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 ApplicationsCredits: 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 mathematical foundations.
CS 170: Introduction to Computer Science ICredits: 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 IICredits: 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: RobotsCredits: 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 WebCredits: 4− Description
CS 224: Mathematical Foundations of Computer ScienceCredits: 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 251: Comp Org & Assembler ProgCredits: 4− Description
CS 255: Computer Organization and Architecture ICredits: 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 AlgorithmsCredits: 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 IntelligenceCredits: 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 353: Data Struct & File Org IICredits: 4− Description
CS 355: Computer ArchitectureCredits: 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 LanguagesCredits: 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 370: Software Engineering with PracticumCredits: 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 377: Database SystemsCredits: 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 MiningCredits: 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 ComputingCredits: 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 ProgrammingCredits: 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 SystemsCredits: 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 NetworksCredits: 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 ConstructionCredits: 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 ProgrammingCredits: 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 DesignCredits: 4− Description
Particulars: May be repeated for credit when topics varies.
CS 485: Topics in Computer Science: Fund. of Genome BioinformaticsCredits: 4− Description
CS 485: Topics in Computer Science: Software EngineeringCredits: 4− Description
CS 495R: HonorsCredits: 4− Description
Content: By permission, normally taken in the semester of the honors thesis defense. Fulfills Continuing Writing Requirement.
CS 497R: Undergraduate Directed StudyCredits: 1 - 4− Description
Content: Credit, one to four hours, as arranged with the department.