Computer Science

Faculty of the School of Engineering and Applied Sciences Offering Instruction in Computer Science

David M. Brooks, John L. Loeb Associate Professor of the Natural Sciences
Steven J. Gortler, Robert I. Goldman Professor of Computer Science (Director of Undergraduate Studies)
Barbara J. Grosz, Higgins Professor of Natural Sciences
H. T. Kung, William H. Gates Professor of Computer Science and Electrical Engineering
Henry H. Leitner, Senior Lecturer on Computer Science
Harry R. Lewis, Harvard College Professor and Gordon McKay Professor of Computer Science (on leave fall term)
David J. Malan, Lecturer on Computer Science
Michael D. Mitzenmacher, Gordon McKay Professor of Computer Science , Contin Ed/Spec Prog Instructor
John G. Morrisett, Allen B. Cutting Professor of Computer Science
Radhika Nagpal, Assistant Professor of Computer Science on the Gordon McKay Endowment
Venkatesh Narayanamurti, John A. and Elizabeth S. Armstrong Professor of Engineering and Applied Sciences, Professor of Physics
David C. Parkes, John L. Loeb Associate Professor of the Natural Sciences (on leave fall term)
Avrom J. Pfeffer, Associate Professor of Computer Science on the Gordon McKay Endowment (on leave spring term)
Hanspeter Pfister, Gordon McKay Professor of the Practice of Computer Science, Director of Visual Computing in the Initiative in Innovative Computing
Michael O. Rabin, Thomas J. Watson, Sr. Professor of Computer Science
Margo I. Seltzer, Harvard College Professor and Herchel Smith Professor of Computer Science
Stuart M. Shieber, James O. Welch, Jr. and Virginia B. Welch Professor of Computer Science, Faculty Director of the Office for Scholarly Communication
Michael D. Smith, Gordon McKay Professor of Computer Science and Electrical Engineering, Dean of the Faculty of Arts and Sciences
Salil P. Vadhan, Gordon McKay Professor of Computer Science and Applied Mathematics
Leslie G. Valiant, T. Jefferson Coolidge Professor of Computer Science and Applied Mathematics
Gu-Yeon Wei, Associate Professor of Electrical Engineering on the Gordon McKay Endowment
Matthew D. Welsh, Thomas D. Cabot Associate Professor of Applied Science
Todd Zickler, Associate Professor of Electrical Engineering on the Gordon McKay Endowment

The School of Engineering and Applied Sciences (www.seas.harvard.edu) offers undergraduate and graduate courses in Applied Mathematics, Applied Physics, Computer Science, Earth and Planetary Sciences, and Engineering Sciences. Recommended course programs at the undergraduate level may be obtained from the Academic Office, Pierce Hall 110. Engineering and Applied Sciences faculty also offer several courses in the section entitled Freshman Seminars, Extra-Departmental Courses, and House Seminars.

Primarily for Undergraduates

For information concerning concentration in Computer Science please consult the Director of Undergraduate Studies or the Academic Office, School of Engineering and Applied Sciences, Pierce Hall 110. The Applied Mathematics and Engineering Sciences sections of the catalog should be consulted for additional courses relevant to computer science. In addition, attention is called to the following courses in related fields: Quantitative Reasoning 20; Applied Mathematics 106, 107; Linguistics 112a, 112b; Philosophy 144; Physics 123; and Statistics 110, 111, 171.


Computer Science 1. Great Ideas in Computer Science
Catalog Number: 6903
Henry H. Leitner
Half course (spring term). M., W., F., at 11. EXAM GROUP: 4
An introduction to the most important discoveries and intellectual paradigms in computer science, designed for students with little or no previous background. Explores problem-solving using high and low-level programming languages; presents an integrated view of computer systems, from switching circuits up through compilers and GUI design. Examines theoretical and practical limitations related to unsolvable and intractable computational problems, and the social and ethical dilemmas presented by such issues as software unreliability and invasions of privacy.
Note: May not be taken for credit after completing Computer Science 50. This course, when taken for a letter grade, meets the Core requirement for Quantitative Reasoning.

Computer Science 50. Introduction to Computer Science I
Catalog Number: 4949
David J. Malan
Half course (fall term). M., W., 1-2:30, and an additional 90-minute section to be arranged. EXAM GROUP: 6, 7
Introduction to the intellectual enterprises of computer sciences. Algorithms: design, implementation, analysis. Software development: abstraction, encapsulations, data structures, debugging, testing. Architecture of computers: low-level data representation, instructions processing. Computer Systems: programming languages, compilers, operating systems, databases. Computers in the real world: networks, websites, security, forensics, cryptography. This course teaches students how to think more carefully and how to solve problems more effectively. Problem sets involve extensive programming in C as well as PHP and Javascript.
Note: No previous programming experience required. This course, when taken for a letter grade, meets the Core area requirement for Quantitative Reasoning.

Computer Science 51. Introduction to Computer Science II
Catalog Number: 3411
John G. Morrisett
Half course (spring term). Tu., Th., 1–2:30, and an additional 90-minute section to be arranged. EXAM GROUP: 15, 16
Abstraction and design in computation. Topics include: Functional and object-oriented styles of programming; software engineering in the small; implementation of a language interpreter. Goal: understanding how to design large programs to make them readable, maintainable, efficient, and elegant. Exercises in LISP (Scheme) and C++.
Prerequisite: Computer Science 50 or equivalent.

Computer Science 61 (formerly Computer Science 160). Systems Programming and Machine Organization
Catalog Number: 3461
Matthew D. Welsh
Half course (fall term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
Fundamentals of computer systems programming, machine organization, and performance tuning. This course provides a solid background in systems programming and a deep understanding of low-level machine organization and design. Topics include C and assembly language programming, program optimization, memory hierarchy and caching, virtual memory and dynamic memory management, concurrency, threads, and synchronization.
Prerequisite: CS50 or some experience programming in C.

*Computer Science 91r. Supervised Reading and Research
Catalog Number: 0361
Steven J. Gortler
Half course (fall term; repeated spring term). Hours to be arranged.
Supervised individual study of advanced topics in computer science. A student wishing to enroll in Computer Science 91r must be accepted by a faculty member who will supervise the course work. A form available from the Academic Office, Pierce Hall 110, must be filled out and signed by the student and faculty supervisor. Students writing theses may enroll in this course while conducting thesis research and writing.
Note: At most two terms of Computer Science 91r may be taken for academic credit. May not be taken Pass/Fail. Students wishing more information about the range of suitable projects or faculty supervisors should consult the Director of Undergraduate Studies.

For Undergraduates and Graduates

Computer Science 105 (formerly Computer Science 199r). Privacy and Technology - (New Course)
Catalog Number: 9751
Michael D. Smith and James H. Waldo
Half course (spring term). Tu., Th., 1–2:30. EXAM GROUP: 16
What is privacy, and how is it affected by recent developments in computer technology? Course critically examines popular concepts of privacy and uses a rigorous analysis of technologies to understand the policy and ethical issues at play. Case studies: RFID, database anonymity, research ethics, wiretapping. Course relies on some technical material, but is open and accessible to all students, especially those with interest in economics, engineering, political science, computer science, sociology, biology, law, government, philosophy.

[Computer Science 120. Introduction to Cryptography]
Catalog Number: 5911
Salil P. Vadhan
Half course (fall term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
Algorithms to guarantee privacy and authenticity of data during communication and computation. Rigorous proofs of security based on precise definitions and assumptions. Topics may include one-way functions, private-key and public-key encryption, digital signatures, pseudorandom generators, higher-level protocols such as electronic cash, and the role of cryptography in network and systems security.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 121 or Computer Science 124.

Computer Science 121. Introduction to Formal Systems and Computation
Catalog Number: 0669
Salil P. Vadhan
Half course (fall term). Tu., Th., 10–11:30. EXAM GROUP: 12, 13
General introduction to formal systems and the theory of computation, teaching how to reason precisely about computation and prove mathematical theorems about its capabilities and limitations. Finite automata, Turing machines, formal languages, computability, uncomputability, computational complexity, and the P vs. NP question.

Computer Science 124. Data Structures and Algorithms
Catalog Number: 5207
Michael D. Mitzenmacher
Half course (spring term). Tu., Th., 11:30–1. EXAM GROUP: 13, 14
Design and analysis of efficient algorithms and data structures. Algorithm design methods, graph algorithms, approximation algorithms, and randomized algorithms are covered.
Prerequisite: Computer Science 50 or equivalent; Computer Science 51 is helpful. Some exposure to discrete applied mathematics, such as Applied Mathematics 106 or 107 or Computer Science 121 or Statistics 110, is also helpful.

Computer Science 141. Computing Hardware
Catalog Number: 4357
David M. Brooks
Half course (fall term). M., W., 1–2:30, and a two-hour weekly laboratory. EXAM GROUP: 6, 7
Introduction to the design, structure, and operation of digital computers; logic circuits and digital electronics; computer arithmetic; computer architecture; and machine language programming. Consideration of the design interactions between hardware and software systems.
Prerequisite: Programming experience required.

Computer Science 143. Computer Networks
Catalog Number: 6401
H. T. Kung
Half course (spring term). M., W., 1–2:30. EXAM GROUP: 6, 7
Principles, design, implementation, and performance of computer networks. Topics include: Internet protocols and routing, local area networks, TCP, performance analysis, congestion control, network address translation, voice and video over IP, switching and routing, mobile IP, peer-to-peer overlay networks, network security, and other current research topics. Programming assignments on protocol implementation and analysis.
Prerequisite: Computer Science 51 and 61.

Computer Science 144r. Networks Design Projects
Catalog Number: 5415
H. T. Kung
Half course (fall term). M., W., 2:30–4. EXAM GROUP: 7, 8
Cooperative design and development of advanced network-based systems with both technology and business considerations. Students will work in 2 person teams. Student work will include reading assignments, homework sets, a project proposal, and project reports and presentations. At the end of the class, all teams will defend their approaches and results in front of the class and invited guests.
Note: Preference given to upper-class undergraduates or graduate students in computer science or in business.
Prerequisite: Computer Science 143 or equivalent experience.

*Computer Science 148. Design of VLSI Circuits and Systems
Catalog Number: 1772 Enrollment: Limited to 16.
Gu-Yeon Wei
Half course (spring term). Tu., Th., 11:30–1. EXAM GROUP: 13, 14
Presentation of concepts and techniques for the design and fabrication of VLSI systems and digital MOS integrated circuits. Topics include: basic semiconductor theory; MOS transistors and digital MOS circuits design; synchronous machines, clocking, and timing issues; high-level description and modeling of VLSI systems; synthesis and place and route design flows; and testing of VLSI circuits and systems. Various CAD tools for design, simulation, and verification are extensively used.
Prerequisite: Computer Science 141 or permission of instructor.

Computer Science 152. Programming Languages
Catalog Number: 6841
David F. Bacon
Half course (spring term). Tu., Th., 10–11:30.
Intellectual tools needed to design, evaluate, choose, and make effectiveuse of programming languages. Covers the major concepts that form thebackbone of almost all languages: syntax, abstraction mechanisms, modularity, type systems, naming, polymorphism, closures, continuations. Case studies of advanced languages. In response to changing hardware architectures, parallel programming constructs and techniques will be a major focus. Formal semantics, standardization, and portability. Groundingsufficient to read professional literature.
Prerequisite: Computer Science 51; Computer Science 121 is recommended.Students must have good programming skills, be comfortable with recursion, basic mathematical ideas and notations.

[Computer Science 153. Compilers]
Catalog Number: 2842
John G. Morrisett
Half course (fall term). M., W., F., at 11. EXAM GROUP: 4
Implementation of efficient interpreters and compilers for programming languages. Associated algorithms and pragmatic issues. Emphasizes practical applications including those outside of programming languages proper. Also shows relationships to programming-language theory and design. Participants build a working compiler including lexical analysis, parsing, type checking, code generation, and register allocation. Exposure to run-time issues and optimization.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 51 or 61.

Computer Science 161. Operating Systems
Catalog Number: 4347
Margo I. Seltzer
Half course (spring term). Tu., Th., 1–2:30. EXAM GROUP: 15, 16
The fundamental principles of resource management and abstraction in modern operating systems. Control abstractions: threads, processes, scheduling, synchronization. Storage abstractions: dynamic memory allocation, virtual memory, file system design. Communication abstractions: interprocess communication, networking. Case studies. Design and implementation of parts of a multiuser multitasking virtual-memory operating system.
Prerequisite: Computer Science 51 and 61.

[Computer Science 165. Information Management]
Catalog Number: 0560
Margo I. Seltzer
Half course (spring term). Tu., Th., 1–2:30. EXAM GROUP: 15, 16
Covers the fundamental concepts of database and information management. Data models: relational, object-oriented, and other; implementation techniques of database management systems, such as indexing structures, concurrency control, recovery, and query processing; management of unstructured data; terabyte-scale databases.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 51.

Computer Science 171. Visualization
Catalog Number: 8877
Hanspeter Pfister
Half course (spring term). M., W., 1–2:30, and a weekly section to be arranged. EXAM GROUP: 6, 7
Introduction to key design principles and techniques for visualizing data. Covers data and image models, visual perception, interaction techniques, animation, tools from various fields, and design practices. Introduces programming of static, dynamic, and interactive visualizations.
Prerequisite: Computer Science 50 or equivalent, Mathematics 1b. Exceptions by permission of the instructor.

Computer Science 175. Computer Graphics
Catalog Number: 3771
Steven J. Gortler
Half course (fall term). M., W., 4–5:30. EXAM GROUP: 9
The computational aspects of computer graphics. Two major themes are image rendering (viewing transformations, clipping, visible-surface processing, raster algorithms, reflection models, lighting models, surface shading, antialiasing, ray tracing, radiosity, and volume rendering) and scene modeling (modeling transformations, curves and surfaces, texture mapping, data-amplification techniques, constructive solid geometry, scalar- and vector-field data, and animation). Ancillary topics include color compression, image compression, image compositing, graphical user interfaces, and special machine architectures for computer graphics.
Prerequisite: Computer Science 51, Applied Mathematics 21b or Mathematics 21b.

[*Computer Science 179. Design of Usable Interactive Systems]
Catalog Number: 4052 Enrollment: Limited to 24.
----------
Half course (spring term). M., W., 2:30–4:30. EXAM GROUP: 7, 8, 9
Usability and design as keys to successful technology. Covers user observation techniques, needs assessment, low and high fidelity prototyping, usability testing methods, as well as design best practices. Focuses on understanding and applying the lessons of human interaction to the design of usable systems; will also look at lessons to be learned from less usable systems. The course centers on a semester-long design project, with classes mixing studio and seminar formats.
Note: Expected to be given in 2009–10.

Computer Science 181. Intelligent Machines: Perception, Learning, and Uncertainty
Catalog Number: 6454
Sarah Finney
Half course (spring term). M., W., 2:30–4. EXAM GROUP: 7, 8
Introduction to artificial intelligence, focusing on problems of perception, machine learning and reasoning under uncertainty. Supervised learning algorithms. Neural networks and applications to character recognition. Statistical pattern recognition. Bayesian networks: representation, inference and learning. Hidden Markov models and applications to speech recognition. Markov decision processes and reinforcement learning.
Prerequisite: Computer Science 51 and Computer Science 121. Statistics 110 is recommended.

[Computer Science 182. Intelligent Machines: Reasoning, Actions, and Plans]
Catalog Number: 0134
David C. Parkes
Half course (fall term). M., W., 2:30–4. EXAM GROUP: 7, 8
Introduction to AI, focused on problems in reasoning about action and rational decision making. Search: constraint satisfaction; informed search and optimization; game playing. Knowledge representation and logical inference. Planning: representation, search and heuristics. Bounded rationality, situated agents. Multiagent systems. Discussion of relevant work in philosophy, economics, and decision theory. Applications to scheduling, robotics and e-commerce.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 51; Computer Science 121 (may be taken concurrently).

Computer Science 187. Computational Linguistics
Catalog Number: 0249
Stuart M. Shieber
Half course (spring term). M., W., 1–2:30. EXAM GROUP: 6, 7
Introduction to computational linguistics, the study of human language using the tools and techniques of computer science, with applications to a variety of natural-language-processing problems. Representing syntactic structure: context-free, augmented context-free, and trans-context-free grammars. Representing semantic structure: first-order and higher-order logics. Computing with syntactic and semantic representations: Prolog programming; parsing and generation algorithms. Low-level language processing with finite-state methods.
Prerequisite: Computer Science 121.

*Computer Science 199r. Special Topics in Computer Science
Catalog Number: 4242
Radhika Nagpal
Half course (spring term). F., 1–4.
Robotic Systems Design: Building autonomous robotic systems requires understanding how to make robots that observe, reason, and act. The fundamentals behind each of these components requires an understanding of different engineering principles: how to fuse, multiple noisy sensor inputs; how to balance short-term versus long-term goals; how to control one’s actions and reliably manipulate objects. In this class we will study these questions in the context of a semester-long project to develop autonomous robot soccer teams.
Note: The class format will mix seminar and lab formats. Limited enrollment: 18; Preference will be given to undergraduate students with previous experience in robot soccer, and robotics.

Primarily for Graduates

[Computer Science 220r. Cryptography: Trust and Adversity]
Catalog Number: 1637
Michael O. Rabin
Half course (fall term). Tu., Th., 11:30–1. EXAM GROUP: 13, 14
Modern cryptography. Mathematical tools. Public-key encryptions, digital signatures, key exchanges, zero-knowledge proofs, authentication, oblivious transfer, electronic elections, auctions, secure multi-party computations. Quantum and provably secure encryptions. Foundations: Probablistic encryption and semantic security. Attacks and countermeasures.
Note: Expected to be given in 2009–10.

[Computer Science 221. Computational Complexity]
Catalog Number: 5812
Leslie G. Valiant
Half course (spring term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
A quantitative theory of the resources needed for computing and the impediments to efficient computation. The models of computation considered include ones that are finite or infinite, deterministic, randomized, quantum or nondeterministic, discrete or algebraic, sequential or parallel.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 121 or equivalent.

Computer Science 222. Algorithms at the Ends of the Wire
Catalog Number: 2493
Michael D. Mitzenmacher
Half course (spring term). Tu., Th., 10–11:30.
Covers topics related to algorithms for big data, especially related to networks. Themes include compression, cryptography, coding, and information retrieval related to the World Wide Web. Requires a major final project.
Prerequisite: Computer Science 124.

[Computer Science 223. Probabilistic Analysis and Algorithms]
Catalog Number: 4740
Michael D. Mitzenmacher
Half course (fall term). Tu., Th., 10–11:30. EXAM GROUP: 12, 13
Probabilistic techniques and tools for the design and analysis of algorithms. Designed for all first-year graduate students in all areas.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 124. Preferably additional probability, such as in Computer Science 226r, Statistics 110, or Mathematics 191.

Computer Science 225. Pseudorandomness
Catalog Number: 4869
Salil P. Vadhan
Half course (spring term). Tu., Th., 1–2:30. EXAM GROUP: 15, 16
Efficiently generating objects that “look random” despite being constructed using little or no randomness. Connections and applications to computational complexity, cryptography, and combinatorics. Pseudorandom generators, randomness extractors, expander graphs, error-correcting codes, hash functions.
Prerequisite: Exposure to randomized algorithms (as in Computer Science 124), computational complexity (as in Computer Science 121), and algebra (as in Applied Mathematics 106, Mathematics 123, or Computer Science 226r).

Computer Science 226r. Efficient Algorithms
Catalog Number: 1749
Michael O. Rabin
Half course (fall term). Tu., Th., 11:30–1. EXAM GROUP: 13, 14
Important algorithms and their real life applications. Topics include combinatorics, string matching, wavelets, FFT, computational algebra number theory and geometry, randomized algorithms, search engines, page rankings, maximal flows, error correcting codes, cryptography, parallel algorithms.

Computer Science 228. Computational Learning Theory
Catalog Number: 0364
Leslie G. Valiant
Half course (spring term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
Possibilities of and limitations to performing learning by computational agents. Topics include computational models, polynomial time learnability, learning from examples and learning from queries to oracles. Applications to Boolean functions, automata and geometric functions.
Prerequisite: Computer Science 121 or equivalent.

Computer Science 244r. Networks Design Projects
Catalog Number: 3018
H. T. Kung
Half course (fall term). M., W., 2:30–4. EXAM GROUP: 7, 8
The contents and course requirements are similar to those of Computer Science 144r, with the exception that students enrolled in Computer Science 244r are expected to do substantial system implementation and perform graduate-level work.
Note: Preference given to upper-class undergraduates or graduate students in computer science or in business who are proficient in computer programming or in business software.
Prerequisite: Computer Science 143 or equivalent experience.

Computer Science 246r. Advanced Computer Architecture
Catalog Number: 0979
David M. Brooks
Half course (spring term). M., W., 1–2:30. EXAM GROUP: 6, 7
Covers technology trends in computer system design, with an emphasis on power-aware computing for mobile, embedded, and traditional systems. System design areas include implementation, architecture, system software, and applications.
Note: Taught seminar style after the first several lectures.
Prerequisite: Computer Science 141 recommended. Consult instructor with questions.

*Computer Science 248. Advanced Design of VLSI Circuits and Systems
Catalog Number: 7191 Enrollment: Limited to 16.
Gu-Yeon Wei
Half course (spring term). Tu., Th., 11:30–1. EXAM GROUP: 13, 14
The contents and course requirements are similar to those of Computer Science 148, with the exception that students enrolled in Computer Science 248 are expected to do a substantial design project and paper discussions on advanced topics.
Prerequisite: Computer Science 141 or permission of instructor.

[Computer Science 250r. Topics in Programming Language Design and Implementation]
Catalog Number: 8553
John G. Morrisett
Half course (spring term). Tu., Th., 10–11:30. EXAM GROUP: 12, 13
Seminar course discussing readings from research in programming language design and implementation. This offering will explore unifying abstractions for next-generation programming languages. Transactions and communication, types and effects, types and logics, modules and classes.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 152, Computer Science 153, or equivalent.

Computer Science 252 (formerly Computer Science 252r). Advanced Topics in Programming Languages
Catalog Number: 1986
John G. Morrisett
Half course (fall term). M., W., 2–4. EXAM GROUP: 7, 8
Advanced functional programming. Lazy evaluation, monads. Folds and unfolds. Combinators for parsing and prettyprinting. Modules systems. Type systems: polymorphism and overloading, type and constructor classes, higher-order kinds, higher-rank polymorphism, polytypic programming. Implementation: heap profiling.
Prerequisite: Computer Science 152 or permission of the instructor.

[Computer Science 260 (formerly Computer Science 260r). Topics in Computer Systems]
Catalog Number: 7764
Matthew D. Welsh
Half course (fall term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
Readings from research literature in operating systems, distributed systems, and networking. The topic in 2006 will be "Internet-Scale Sensor Networking." Large-scale querying on Internet data; stream-based database systems; interfacing to sensor networks.
Note: Expected to be given in 2009–10.

[Computer Science 261. Research Topics in Operating Systems]
Catalog Number: 6706
Margo I. Seltzer
Half course (fall term). Tu., Th., 1–2:30. EXAM GROUP: 15, 16
A quantitative approach to operating system design and evaluation. Discussion of recent research including extensible operating system architectures, distributed systems, and performance analysis. Overview of research techniques and methodology.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 161, or equivalent.

[Computer Science 262. Introduction to Distributed Computing]
Catalog Number: 7949
----------
Half course (spring term). M., W., 4–5:30. EXAM GROUP: 9
Examination of the special problems associated with distributive computing (e.g., partial failure and lack of global knowledge) and protocols that function in the face of these problems. Emphasis on causal ordering, event and RPC-based systems.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 161 or permission of instructor.

*Computer Science 263r (formerly Computer Science 263). Wireless Sensor Networks
Catalog Number: 6846 Enrollment: Limited to 20.
Matthew D. Welsh
Half course (spring term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
Recent advances in wireless communications and sensor networks. Wireless networking, routing, standards including 802.11, Bluetooth, and 802.15.4. Embedded OS, programming tools, applications, and security. Students read research papers and undertake a research project.
Prerequisite: Computer Science 161 or Computer Science 143.

Computer Science 265. Database Systems - (New Course)
Catalog Number: 2083
Margo I. Seltzer
Half course (fall term). Tu., Th., 1–2:30. EXAM GROUP: 15, 16
A research-oriented introduction to Database Management systems. First third covers database design, implementation, and use. Topics include: network, relational, and object oriented database models, system architectures, transaction processing, system implementation, and SQL. Remaining two-thirds address research literature surrounding database systems, including an historical perspective, the emergence of relational and object-oriented systems, concurrency control, and distributed systems. Students will be expected to undertake a final research project.
Prerequisite: CS 51

*Computer Science 266. Biologically-Inspired Distributed and Multi-Agent Systems
Catalog Number: 0766 Enrollment: Limited to 16.
Radhika Nagpal
Half course (fall term). Tu., Th., 11:30–1. EXAM GROUP: 13, 14
Surveys biologically-inspired approaches to designing distributed systems. Focus is on algorithms, analysis, and programming paradigms. Topics: swarm intelligence, amorphous computing, immune-inspired systems, synthetic biology. Discussion of research papers and a research project required.
Note: Geared toward graduate students of all levels as well as advanced undergraduates. Preference given to graduate students or upper-level concentrators.
Prerequisite: Experience with algorithms (e.g. Computer Science 124) and programming (e.g. Computer Science 51).

[Computer Science 277. Geometric Modeling in Computer Graphics]
Catalog Number: 3067
Steven J. Gortler
Half course (spring term). M., W., 4–5:30. EXAM GROUP: 9
Advanced seminar in computer graphics focusing on geometric representations and processing. Topics include: direct manipulation, implicit surfaces, spline presentations, recursively subdivided surfaces, model simplification, surface parameterization and processing, mesh generation, and motion capture processing.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 175.

Computer Science 278. Rendering and Image Processing in Computer Graphics
Catalog Number: 4883
Steven J. Gortler
Half course (spring term). M., W., 4–5:30. EXAM GROUP: 9
Advanced course in computer graphics focusing on image rendering and processing. Topics include: light transport, efficient rendering, image based rendering, texture processing, interactive image processing.
Prerequisite: Computer Science 175 or permission of instructor.

[*Computer Science 279 (formerly *Computer Science 279r). Topics in User Interfaces: Privacy and Security Usability]
Catalog Number: 1435 Enrollment: Limited to 12.
Stuart M. Shieber
Half course (spring term). Tu., Th., 10–11:30. EXAM GROUP: 12, 13
Seminar on topics drawn from computer-human interfaces, information retrieval, and information visualization. Intensive lab component emphasizes small group design and implementation. Spring 2008 focus is usability of computer security and privacy systems.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 51 and experience developing large software systems as evidenced by successful completion of a systems course requiring a large project.

[Computer Science 281r. Artificial Intelligence: Reasoning and Planning Systems]
Catalog Number: 0707
Avrom J. Pfeffer
Half course (fall term). M., W., 1–2:30. EXAM GROUP: 6, 7
In-depth study of artificial intelligence techniques for reasoning, planning, and learning. Topics vary from year to year.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 182 or permission of instructor.

[Computer Science 282. Probabilistic Reasoning]
Catalog Number: 3158
Avrom J. Pfeffer
Half course (fall term). Tu., Th., 1–2:30. EXAM GROUP: 15, 16
In-depth study of principles and techniques for probabilistic reasoning. Topics include: Bayesian networks and Markov networks; exact and approximate inference algorithms; learning Bayesian networks from data; temporal probability models; integrating logic and probability; influence diagrams.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 181 or permission of instructor.

[Computer Science 283. Computer Vision]
Catalog Number: 4475
Todd Zickler
Half course (fall term). M., W., F., at 10. EXAM GROUP: 3
Vision as an ill-posed inverse problem: image formation, two-dimensional signal processing; image enhancement and restoration; feature analysis; image segmentation; structure from motion, texture, and shading; multiple view geometry; pattern classification; and applications.
Note: Expected to be given in 2009–10.

Computer Science 285. Multi-Agent Systems
Catalog Number: 1060
David C. Parkes
Half course (spring term). Tu., Th., 11:30–1.
Algorithmic, game-theoretic and logical foundations of multi-agent systems, including distributed optimization and problem solving, non-cooperative game theory, learning and teaching, communication, social choice, mechanism design, auctions, negotiation, coalitional game theory, logics of knowledge and belief, collaborative plans and social systems.
Prerequisite: Computer Science 181 or 182, or permission of instructor.

Computer Science 286r. Topics at the Interface between Computer Science and Economics
Catalog Number: 1099 Enrollment: Limited to 20.
Yiling Chen
Half course (fall term). M., W., 1–2:30. EXAM GROUP: 6, 7
Social Computing. Interplay between computation and social behavior within decentralized collective systems. Prediction markets, human computation, peer production systems, and reputation systems. Readings in theoretical CS, AI, operations research, and economics. Seminar style.
Prerequisite: Mathematics 21b, Applied Mathematics 21b, or equivalent; Computer Science 124, and 181 or 182, or equivalents; or permission of instructor.

[Computer Science 287r. Natural Language Processing]
Catalog Number: 3306
Stuart M. Shieber
Half course (spring term). Tu., Th., 2:30–4. EXAM GROUP: 16, 17
In-depth investigation of natural-language-processing techniques. Topics include: finite-state, context-free, and trans-context-free formalisms, syntactic analysis, semantic interpretation, weighted automata and transducers. Students discuss research papers and undertake a significant research project.
Note: Expected to be given in 2009–10.
Prerequisite: Computer Science 187 or permission of instructor.

Computer Science 299r. Special Topics in Computer Science
Catalog Number: 4592
John G. Morrisett
Half course (fall term; repeated spring term). Hours to be arranged.
Supervision of experimental or theoretical research on acceptable computer science problems and supervision of reading on topics not covered by regular courses of instruction.
Note: Open to graduate students and AB/SM candidates only. Students must arrange such work with a member of the School of Engineering and Applied Sciences. This course is graded and is ordinarily taken with the approval of the Committee on Higher Degrees. Applicants must file a project sheet before study cards are filed. Project sheets may be obtained from the Academic Office, Pierce Hall 110.

Graduate Courses of Reading and Research

Reading courses are odd-numbered; research courses are even-numbered.

*Computer Science 307,308. Biologically-Inspired Multi-Agent Systems, Distributed Systems, and Computational Biology
Cata,83080log Number: 8289
Radhika Nagpal 5068

*Computer Science 309,310. Computational Mechanism Design, Electronic Marketplaces, and Multi-Agent Systems
Cata,09310log Number: 8764
David C. Parkes 4202 (on leave fall term)

*Computer Science 311,312. Collaborative Systems, AI Planning, and Natural Language Processing
Cata,62230log Number: 4677
Barbara J. Grosz 1599

*Computer Science 313,314. Visual Computing
Cata,16280log Number: 4273
Hanspeter Pfister 5882

*Computer Science 315,316. Social Computing: Computation and Economics - (New Course)
Cata,24330log Number: 2892
Yiling Chen 6187

*Computer Science 319,320. Distributed Systems, Operating Systems, and Networks
Cata,85680log Number: 8038
Matthew D. Welsh 4600

*Computer Science 321,322. Databases, Operating System, and Software Design
Cata,40860log Number: 4085
Margo I. Seltzer 3371

*Computer Science 323,324. Human-Computer Communication through Natural, Graphical, and Artificial Languages
Cata,24530log Number: 2450
Stuart M. Shieber 2456

*Computer Science 327,328. Mathematical Logic, Theory of Computation
Cata,35760log Number: 1160
Harry R. Lewis 4455 (on leave fall term)

*Computer Science 343,344. Computer Architecture: Modeling and Design
Cata,92660log Number: 3932
David M. Brooks 4222

*Computer Science 345,346. High-Performance Computer Systems
Cata,61560log Number: 6154
Michael D. Smith 3372

*Computer Science 347,348. Computer Vision
Cata,88310log Number: 1882
Todd Zickler 5143

*Computer Science 351,352. Cryptography: Unbreakable Codes and Financial Cryptography
Cata,02550log Number: 0218
Michael O. Rabin 7003

*Computer Science 353,354. Representation and Reasoning, Machine Learning and Decision Making
Cata,18430log Number: 6816
Avrom J. Pfeffer 2830 (on leave spring term)

*Computer Science 355,356. Computational Complexity, Parallel Computation, Computational Learning, Neural Computation
Cata,03460log Number: 0345
Leslie G. Valiant 7396

*Computer Science 357,358. Computational Complexity, Cryptography, and Pseudorandomness
Cata,86410log Number: 3485
Salil P. Vadhan 3833

*Computer Science 359,360. On-line Algorithms and Randomized Algorithms
Cata,14770log Number: 2104
Michael D. Mitzenmacher 7748

*Computer Science 361,362. Programming Languages and Semantics
Cata,83660log Number: 8672
John G. Morrisett 4853

*Computer Science 365. SEAS Teaching Practicum - (New Course)
Catalog Number: 8195
John G. Morrisett 4853
Half course (fall term). W., 4–5:30. EXAM GROUP: 9
Gain effective skills for teaching applied sciences. Topics: presentation and communication, lesson planning, classroom practice, office hours and 1-on-1 interactions, feedback, assessment, and working with course staff. Seminar style with an emphasis on observation, practice, feedback, discussion, and reflection.

*Computer Science 375,376. Computer Graphics
Cata,73130log Number: 6832
Steven J. Gortler 2824

Cross-listed Courses

*Statistics 385. Topics in Statistical Machine Learning - (New Course)
Catalog Number: 0512
Edoardo Maria Airoldi 6132
Half course (spring term). W., 2:30–5:30.
Hands-on introduction to concepts and computations central to cutting-edge research, including sparse learning in high dimensions, semi-supervised learning strategies, structured predictions, approximate inference strategies in probabilistic graphical models, and statistical elements of graph data analysis.