
III. Advanced



[324b. Computer Architecture] 
(1)

An exploration of current research areas in computer organization including an examination of dataflow, microcode, cache memory, distributed, parallel, and other nonstandard architectures, and related topics. Mr. Voerman.

Prerequisite: Computer Science 224. 
Alternate years: Not offered in 2003/04. 

325b. Microcomputers and Digital Electronics 
(1)

Advanced seminar in the architecture and implementation of microprocessors. Topics include digital logic, memory and processor interfaces, interrupt handling, and serial I/O methods. Differences among logic implementations such as TTL, CMOS, and ECL are considered. Students participate in the design and implementation of a microcomputer. Mr. Voerman.

Prerequisite: Computer Science 224. 
Alternate years: Offered in 2003/04. 

331b. Compilers 
(1)

Studies the theory of automata for language recognition as well as the implementation of actual compilers for programming languages. During the semester students develop modules comprising the frontend of a compiler for a subset of the Pascal language. Ms. Ide.

Prerequisite: Computer Science 224, 240, 245, or permission of instructor. 

334a. Operating Systems 
(1)

Deals with the theory and implementation of the software that governs the management of system resources. Topics that are covered include file organization, process scheduling, system services, memory management, security methods, resource contention, and design principles. Operating systems for parallel and distributed processing, realtime processing, virtual machines, and networking are also considered. Mr. Voerman.

Prerequisites: Computer Science 203, 224. 

335a. Software Development Methodology 
(1)

Presents a systematic methodology for developing large software systems, focusing on the specification, modeling and design phases of the software development process. Topics include class hierarchies, aggregation, class relationships, and usecase analysis, among others. The course also touches on relevant notions of software architecture and middleware. Concepts are reinforced in group projects.

Prerequisites: Computer Science 203. 

340b. Theory of Computation 
(1)

Builds on the basis established in Computer Science 240 by delving more deeply into principles of induction and inductive definitions; incompleteness and undecidability; recursive function theory; models of computation including Turing machines and partial recursive functions; recursive function theory; the halting problem and other unsolvable problems. May also cover topics in operational, axiomatic and denotational semantics; domain theory; information systems; etc.

Prerequisite: Computer Science 240 or permission of instructor. 
Alternate years: offered in 2003/04. 

341b. Computational Complexity of Analysis of Algorithms 
(1)

Models of computation; construction of algorithms, analysis of worstcase and average behavior; complexity measures and bounds; sorting and searching, algorithms on trees, graphs, and networks, matrix operation; the classes of P,Np and NPcomplete problems, intractable problems and approximation algorithms. The department.

Prerequisite: Computer Science 241 or permission of instructor. 
Alternate years: offered in 2003/04. 

365a. Artificial Intelligence 
(1)

A traditional and modern perspective on Artificial Intelligence as a discipline of Computer Science. The course emphasizes the problems and solutions of a computational approach to machine intelligence, and how these solutions impact Computer Science as a whole. Topics vary each year to reflect the state of the art of this rapidly evolving field. Previous topics include logic and logical reasoning, bayesian reasoning, fuzzy logic, ontology, robotics, game playing, and the frame problem. Significant programming projects highlight the course material.

Prerequisites: Computer Science 203, Computer Science 245. 

375a. Networks 
(1)

Provides a detailed introduction to network protocols and software, as well as a discussion of network architectures and technology. Topics covered include properties of various transmission media, methods for reliable transfer of data, Ethernet and localarea networks, ISDN, TCP/IP and the Internet, routing, security, and Email. Programming assignments and a project emphasize the key concepts. Mr. Richards.

Prerequisites: Computer Science 203 or permission of instructor. 

[376a. Database Design] 
(1)

Concerned with the theory and techniques of database design and the organization of query and command languages. The differences among relational, hierarchical, and networked databases are considered. Topics include data independence, data dictionaries, data models, entityattribute relationships, access methods, and security issues.

Prerequisite: Computer Science 203. 
Alternate years: Not offered in 2003/04. 

377a. Parallel Programming 
(1)

An introduction to parallel computing, with coverage of parallel architectures, programming models, and techniques. Topics include SIMD and MIMD models, sharedmemory and messagepassing styles of computation, synchronization, deadlock, and parallel language design. Students are exposed to common techniques for solving problems in sorting, searching, numerical methods, and graph theory, and gain practical experience through programming assignments run on a parallel processing system.

Prerequisite: Computer Science 203. 

378a. Graphics 
(1)

Introduction to computer graphics: 3D modeling and viewing, geometric transformations, visible surface detection methods, illumination and shading models, surface rendering methods (including raytracing and radiosity), and color models. A brief review of the mathematics for computer graphics: coordinate systems, vector products, linear algebra, and parametric representations. Instructor to be announced.

Prerequisites: Computer Science 203 and Mathematics 221. 
Alternate years: offered in 2003/04. 

388b. Computer Animation: Art, Science and Criticism 
(1)

(Same as Art 388b, Media Studies Development Project 388b) An interdisciplinary course in Computer Animation aimed at students with previous experience in Computer Science, Studio Art or Media Studies, but not necessarily more than one of these areas. The course introduces students to mathematical and computational principles and techniques used to describe the shape and motion of threedimensional figures in Computer Animation. It introduces students to artistic principles and techniques used in drawing, painting and sculpture, as they are translated into the context of Computer Animation. It also encourages students to critically examine Computer Animation as a medium of communication. Finally, the course exposes students to issues that arise when people from different scholarly cultures attempt to collaborate on a project of mutual interest. The course is structured as a series of animation projects interleaved with screenings and classroom discussions. Students carry out their projects working in pairs or small groups, using stateoftheart modeling and animation software. In classroom discussions students critically evaluate their project work, and reflect on the process of interdisciplinary collaboration itself.


395a or b. Special Topics 
(1/2 or 1)

Indepth treatment of specialized topics in computer science, such as programming language semantics, parallel processing, etc.

Prerequisite: Computer Science 203. 

399a or b. Senior Independent Work 
(1/2 or 1)
