Undergraduate catalog 2006 - 2007, 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: The course will provide a basic understanding of the principles underlying computer systems and software. Topics include an overview of computer hardware, the design of algorithms and their role in problem solving, and programming in a high level language. Databases, networking and the world-wide web, and contemporary issues in information technology will also be discussed.
Particulars: Lectures will be supplemented by readings and some laboratory exercises; there will be several quizzes, a midterm, a final exam, and assignments. Computer-based assignments will account for approximately 25% of the grade but this is not primarily a programming course. CS110 is intended for students who do not expect to take additional computing courses. Students interested in further course work should instead start in CS170.
CS 150: Intro to Computers & ProgrammingCredits: 4− Description
CS 153: Computing for BioinformaticsCredits: 4− Description
Content: The course introduces 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. We will give only the barest sketch of the underlying biology, with instead an emphasis on computational concepts.
Particulars: Grades will be based on regular technical assignments (including some programming), a midterm, and a final exam. A likely text is Tisdall's "Beginning Perl for Bioinformatics". The course satisfies requirement II.A of the GER. There is no prerequisite to this course.
CS 155: Introduction to Business ComputingCredits: 4− Description
Content: This course covers tools and concepts of computer science that are most relevant to business (enterprise) computing and e-commerce, emphasizing the common 3-tier website model. Students will be introduced to basic programming principles, page layout and visual interface design, client/server computing, and simple techniques for accessing databases. Algorithmic and mathematical foundations of fundamental e-commerce techniques such as search engines, recommendation and reputation management systems, and online auctions will be studied. Teams of students will explore existing websites and design and implement extensions to a code framework. No background in computing is necessary but students with background are welcomed.
Particulars: Class meetings will be a mix of lectures and hands-on work in the Math/CS teaching lab using Microsoft Visual Basic .NET and related tools. Grades will be based on participation, presentations, project design and implementation, and a midterm and final exam. This class has a lab on Mondays from 4-5 pm.
CS 170: Introduction to Computer Science ICredits: 4− Description
Content: This course is 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.
Particulars: No previous programming experience is required for this course. Students expecting to take more advanced Computer Science courses should start here. The grade in this course will be based on programming assignments and examinations. Typically the programming assignments will count no more than 50%.
CS 171: Introduction to Computer Science IICredits: 4− Description
Content: 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.
Prerequisites: CS170
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 224: Mathematical Foundations of Computer ScienceCredits: 4− Description
Content: This course introduces elementary mathematics necessary for the computer science curriculum. Topics include functions, boolean logic, quantifiers, automata, languages, asymptotic notation, and reasoning about programs.
Particulars: The grade is based on regular homeworks, one or two midterms, and a final exam.
Prerequisites: Math 112 (or 112s or 112Z). Corequisite: CS 170.
CS 251: Comp Org & Assembler ProgCredits: 4− Description
CS 253: Data Structures and AlgorithmsCredits: 4− Description
Content: This is an advanced course in computer science, studying ideas and algorithms for processing data in a computer. The course will involve studying such data structures as arrays, lists, trees, hash tables, and their applications in the construction of efficient algorithms. Searching and sorting algorithms will be also discussed.
Particulars: Grades will be based on several programming assignments, quizzes, homework, one or two hour-exams, and a final exam. The programming language used in this class is Java.
Prerequisites: CS 171 and CS 224 [CS 124].
CS 255: Computer Organization/Assembly PlanningCredits: 4− Description
Content: This is the first course in computer organization and architecture and is designed to introduce the student to computer organization, architecture. The hardware components of computer systems and their interconnections will be studied at a level suitable for assembly programming. The architecture of the M68000 and SPARC computers and their assembly languages will be covered in detail.
Particulars: Grades will be based on quizzes, homework, programming assignments, and tests.
Prerequisites: CS 171.
CS 351: Systems ProgrammingCredits: 4− Description
Content: Systems programming topics will be 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. Programming examples and assignments will illustrate the system interface on actual computer hardware. All assignments will be in written in C. The department's computing lab will be used in the course to allow students to get hands-on experience with operating system and hardware topics that cannot effectively be pursued on a central timesharing computer.
Particulars: Grades will be based on the programming assignments as well as the midterm and final exams. This course may not be taken S/U.
Prerequisites: CS 171 and CS 255.
CS 353: Data Struct & File Org IICredits: 4− Description
CS 355: Computer ArchitectureCredits: 4− Description
Content: This is the second course in computer organization and architecture. This course will involve studying the register transfer level of the control unit, micro-programming, pipelining, caching, interrupt handling, virtual memory (paging), and I/O programming. We will also look at SIMD, MIMD architectures, message passing multi-processors and dataflow machines.
Particulars: Students should have a thorough understanding of the SISD von-Neumann architecture. Grades will be based on quizzes, homework, one or two midterm exams, and a final exam.
Prerequisites: CS 255.
CS 370S: Computer Science PracticumCredits: 4− Description
CS 375: Ind Software DevelopmentCredits: 1 - 12− Description
CS 424: Theory of ComputingCredits: 4− Description
Content: This course gives mathematical methods to classify the complexity of computational problems. Topics include regular languages, grammars, decidability, NP-completeness, and corresponding models of computation.
Prerequisites: CS 253 and CS 224 [CS 124].
CS 451: Operating SystemsCredits: 4− Description
Content: The structure and organization of computer operating systems. Process, memory, and I/O management; device drivers, inter-machine communication, introduction to multiprocessor systems. An important portion of the course is a course long programming project that implements a simple operating system in stages. Each stage takes about three weeks, and is used as a basis for the next stage. (The scope and pace of the project is somewhat less than the related project in CS580)
Particulars: Grades will be based on the project and a final exam. Must be taken for a letter grade.
Prerequisites: CS 351.
CS 455: Intro to Computer NetworkingCredits: 4− Description
CS 456: Compiler ConstructionCredits: 4− Description
Content: An introduction to the algorithms and data structures used to construct a high level language compiler. Topics include: formal language specification, lexical analysis, parsing, and code generation.
Particulars: A substantial portion of this course will involve a student project to construct a compiler for a simplified programming language. Working knowledge of C or C++ is highly recommended.
Prerequisites: CS 253, CS 255, and CS 424, or their equivalents.
CS 457: Database SystemsCredits: 4− Description
Content: Database design and manipulation. The course first discusses file storage techniques that achieve physical and logical data independence. We then proceed to discuss techniques to model the reality with the entity-relation model and the relational model. The relational query language SQL is presented and used in several database projects. Database access using JDBC in Java will be presented. The first three normal forms in the relational database theory and the normalizational process will also be discussed in detail. Finally, we discuss transaction processing which include the ACID property, synchronization, locking and commit protocols.
Particulars: Grades will be based on homeworks, programming and database (SQL) projects, exams and a final exam.
Prerequisites: CS 171.
CS 458: Artificial IntelligenceCredits: 4− Description
Content: Foundations and problems of machine intelligence, application areas, representation of knowledge, control paradigms, the LISP programming language, expert systems, design of an intelligent system.
Particulars: Offered alternate years.
Prerequisites: CS 171.
CS 459: X Window System ProgrammingCredits: 4− Description
CS 470: Programming LanguagesCredits: 4− Description
CS 485: Topics in Computer ScienceCredits: 4− Description
CS 495WR: HonorsCredits: 1 - 12− Description
CS 497R: Undergraduate Directed StudyCredits: 1 - 12− Description