Skip over navigation

Department of Computer Science - A.B.

Chair

Andrew W. Appel

Acting Chair

Jennifer L. Rexford (fall)

Associate Chair

Szymon M. Rusinkiewicz

Departmental Representative

Brian W. Kernighan

David P. Walker

Director of Graduate Studies

Thomas Funkhouser

Professor

Andrew W. Appel

Sanjeev Arora

David August

Moses S. Charikar

Bernard Chazelle

Douglas W. Clark

David P. Dobkin

Edward W. Felten, also Woodrow Wilson School

Adam Finkelstein

Thomas A. Funkhouser

Brian W. Kernighan

Andrea S. LaPaugh

Kai Li

Margaret R. Martonosi

Larry L. Peterson

Jennifer L. Rexford

Szymon M. Rusinkiewicz

Robert E. Schapire

Robert Sedgewick

Jaswinder Pal Singh

Mona Singh, also Lewis-Sigler Institute for Integrative Genomics

Robert E. Tarjan

Olga G. Troyanskaya, also Lewis-Sigler Institute for Integrative Genomics

David P. Walker

Associate Professor

David M. Blei

Michael J. Freedman

Vivek S. Pai

Assistant Professor

Mark Braverman

Zeev Dvir, also Mathematics

Rebecca A. Fiebrink

Arvind Narayanan

Instructor

Jianxiong Xiao

Senior Lecturer

Kevin Wayne

Lecturer

Sandra Batista

Robert M. Dondero Jr.

Donna Gabai

Maia Ginsburg

Ananda Gunawardena

Joshua Hug

Judith L. Israel

Shiva Kintali

Xiaoyan Li

Christopher Moretti

Iasonas Petras

David Pritchard

Associated Faculty

Mung Chiang, Electrical Engineering

Paul Lansky, Music

Ruby B. Lee, Electrical Engineering

Warren Powell, Operations Research and Financial Engineering

Paul D. Seymour, Mathematics

John Storey, Molecular Biology and Lewis-Sigler Institute for Integrative Genomics

Daniel L. Trueman, Music

Robert J. Vanderbei, Operations Research and Financial Engineering


Information and Departmental Plan of Study

The Department of Computer Science curriculum encourages students to learn fundamental concepts of the discipline and to become proficient in the use of advanced computer systems. The plan provides opportunities for study in software systems, algorithms and complexity, machine architecture, computer graphics, programming languages, machine learning, and other core areas of computer science. Most computer science students enjoy programming and are given ample opportunity to do so within the curriculum.

Information for First-Year Students. Students with a general interest in the sciences or engineering are encouraged to take COS 126 in the first year or in the first semester of the second year. This provides useful background for applications work in any science or engineering major and preserves the option of later electing a computer science major.

Prerequisites

MAT 103, 104, and 202; COS 126; COS 217 and 226. Students who do not take both 217 and 226 before the junior year will need to plan their programs carefully, as one or both of these are required prerequisites for all later computer science courses.

Departmental Requirements

Eight additional departmental courses at or above the 300 level must be elected. These eight courses must include two each from the following three areas (asterisk indicates one-time-only course):

Theoretical computer science:
340 Reasoning about Computation
423 Theory of Algorithms
433 Cryptography
441 Programming Languages
445 Networks, Economics and Computing
451 Computational Geometry
487 Theory of Computation
488 Introduction to Analytic Combinatorics
510 Programming Languages

Systems:
306 Introduction to Logic Design (see ELE 206)
318 Operating Systems
320 Compiling Techniques
333 Advanced Programming Techniques
375 Computer Architecture and Organization (see ELE 375)
425 Database and Information Management Systems
461 Computer Networks
475 Computer Architecture (see ELE 475)

Applications:
323 Computing for the Physical and Social Sciences
325 Transforming Reality by Computer
326 Functional Programming
402 Artificial Intelligence
424 Interacting with Data
426 Computer Graphics
429 Computer Vision
432 Information Security
435 Information Retrieval, Discovery, and Delivery
436 Human-Computer Interface Technology
444 Internet Auctions: Theory and Practice
455 Introduction to Genomics and Computational Molecular Biology
479 Pervasive Information Systems
*491 Information Technology and the Law

On occasion, certain courses at the 300-or-above level with sufficient computational content taught outside the Department of Computer Science may count as COS departmental. For information on such courses, see the Department of Computer Science undergraduate website http://ugrad.cs.princeton.edu/humbleUG.html.

Students should consult with a computer science academic adviser on their course selections after they decide to become computer science concentrators. Academic advisers are listed on the Department of Computer Science website http://ugrad.cs.princeton.edu/.

Independent Work

All A.B. concentrators engage in independent work supervised by a member of the department. A junior project normally involves the study and solution of specific problems, often associated with a research project. It may require a significant programming effort, a theoretical study involving the design and analysis of algorithms, or an applications problem in some other field. The results of these efforts must be presented in two written reports that correspond to the work undertaken in each of the terms. The senior thesis may be a study in greater depth of one of the subjects considered in junior independent work, or it may deal with another aspect of computer science and its application.

The department also offers a curriculum leading to the B.S.E. degree: http://www.cs.princeton.edu/academics/ugradpgm/program. The primary differences between the A.B. and the B.S.E. programs are in the general requirements for the degree programs, and the nature and extent of independent study.

Senior Departmental Examination

An oral examination, consisting of a defense of the thesis research, and a poster session will be held in May.

Integrated Science Sequence

An alternative path into the department is through the integrated science curriculum. ISC/CHM/COS/MOL/PHY 231-4 (a double course) can be taken in the freshman year and ISC/CHM/COS/MOL/PHY 235/6 can be taken in the sophomore year. These courses can be substituted for CHM 203/204, PHY 103/104 or 105/6, and COS 126 in the freshman year and MOL 214, 342, and 345 in the sophomore year. For full course descriptions and more information, see the integrated science website.

Interdisciplinary Studies. The pervasive nature of modern computing has introduced many interactions between computer science and other disciplines. Basic preparation in computer science is valuable for a broad variety of careers because of the central role played by the computer in society. Professionals who understand computers are far more effective in their work. In the past, a large amount of technical preparation was required before interesting applications could be considered; today's undergraduates are able to use computers to study important problems in other disciplines.

Some possible areas for interdisciplinary study are: mathematics, music, art, economics, electrical engineering, molecular biology, cognitive studies, and linguistics.

Many Princeton undergraduates view their four years at Princeton as an opportunity to gain an education before immersing themselves in rigorous training for careers in law, business, or medicine. Computer science students are no exception. Through the choice of electives, students may create a specialized interdisciplinary program or a broad program with computer science as the core of pre-professional study. The former requires consultation with advisers in the related disciplines to determine what constitutes a reasonable cognate specialization, and the latter is constrained by the requirement of a coherent program of concentration.

Program in Applications of Computing. Students pursuing some other major field of study, but who are interested in the applications of computer science to that field, may wish to consider the Program in Applications of Computing: www.cs.princeton.edu/academics/ugradpgm/pac.

Program in Quantitative and Computational Biology. The Program in Quantitative and Computational Biology (QCB) is designed for students with a strong interest in multidisciplinary and systems-level approaches to understanding molecular, cellular, and organismal behavior. The curriculum introduces the students to experimental and analytic techniques for acquisition of large-scale quantitative observations, and the interpretation of such data in the context of appropriate models. Strong emphasis is placed on using global genome-wide measurements (e.g., microarray gene expression, sequence, phenotype) to understand physiological and evolutionary processes. At the core of the curriculum is the Project Lab (QCB 301), a double laboratory course, taken during the fall of junior year, where students participate in the design, execution, and analysis of experiments. The required courses provide a strong background in modern methodologies in data analysis, interpretation, and modeling. Courses are chosen with the help of advisers in molecular biology, ecology and evolutionary biology, physics, chemistry, computer science, and other related departments. A certificate in quantitative and computational biology is awarded to students who successfully complete the program requirements.


Courses


COS 109 Computers in Our World (also EGR 109)   Fall QR

Computers are all around us. How does this affect the world we live in? This course is a broad introduction to computing technology for humanities and social science students. Topics will be drawn from current issues and events, and will include discussion of how computers work, what programming is and why it is hard, how the Internet and the Web work, security and privacy. Two 90-minute lectures. Self-scheduled computer laboratory. B. Kernighan

COS 116 The Computational Universe (also EGR 116)   Not offered this year STL

Computers have brought the world to our fingertips. This course explores at a basic level the science "old and new" underlying this new computational universe: propositional logic of the ancient Greeks (microprocessors); quantum mechanics (silicon chips); network and system phenomena (internet and search engines); computational intractability (secure encryption); and efficient algorithms (genomic sequencing). Ultimately, this study makes us look anew at ourselves: our genome; language; music; "knowledge"; and, above all, the mystery of our intelligence. Two 90-minute lectures, one three-hour laboratory. A. Finkelstein

COS 126 General Computer Science (also EGR 126)   Fall, Spring QR

An introduction to computer science in the context of scientific, engineering, and commercial applications. The goal of the course is to teach basic principles and practical issues, while at the same time preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. Topics include: hardware and software systems; programming in Java; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis. No prior programming experience required. Two lectures, two classes. R. Sedgewick

COS 217 Introduction to Programming Systems   Fall, Spring QR

An introduction to computer organization and system software. The former includes topics such as processor and memory organization, input/output devices, and interrupt structures. The latter includes assemblers, loaders, libraries, and compilers. Programming assignments are implemented in assembly language and C using the UNIX operating system. Three lectures. Prerequisite: 126 or instructor's permission. , J. Singh Staff

COS 226 Algorithms and Data Structures   Fall, Spring QR

The study of fundamental data structures such as lists, queues, stacks, trees, heaps, hash tables, and their variations. The implementation and analysis of important algorithms for sorting, searching, string processing, geometric applications, and graph manipulation. Introduction to advanced algorithms and techniques. Two lectures, one preceptorial. Prerequisite: 126 or instructor's permission. S. Rusinkiewicz

COS 231 An Integrated, Quantitative Introduction to the Natural Sciences I (see ISC 231)

COS 232 An Integrated, Quantitative Introduction to the Natural Sciences I (see ISC 232)

COS 233 An Integrated, Quantitative Introduction to the Natural Sciences II (see ISC 233)

COS 234 An Integrated, Quantitative Introduction to the Natural Sciences II (see ISC 234)

COS 235 An Integrated, Quantitative Introduction to the Natural Sciences III (see ISC 235)

COS 236 An Integrated, Quantitative Introduction to the Natural Sciences IV (see ISC 236)

COS 306 Contemporary Logic Design (see ELE 206)

COS 314 Computer and Electronic Music through Programming, Performance, and Composition (see MUS 314)

COS 318 Operating Systems   Fall

A study of the design and analysis of operating systems. Topics include: processes, mutual exclusion, synchronization, semaphores, monitors, deadlock prevention and detection, memory management, virtual memory, processor scheduling, disk management, file systems, security, protection, distributed systems. Two 90-minute lectures. Prerequisites: 217 and 226 or instructor's permission. K. Li

COS 320 Compiling Techniques   Not offered this year

The principal algorithms and concepts associated with translator systems. Topics include lexical analysis, syntactic analysis, parsing techniques, symbol table management, code generation and optimization, run time system design, implementation issues related to programming language design. Course will include a large-scale programming project utilizing the above topics. Three lectures. Prerequisites: 217 and 226 or instructor's permission. D. August

COS 323 Computing for the Physical and Social Sciences   Fall QR

Principles of scientific computation, driven by current applications in biology, physics, economics, engineering, etc. Topics include: simulation, integration of differential equations, iterative optimization algorithms, stability and accuracy issues. Students will pursue projects in a variety of fields, writing their own computer programs and also using higher-level tools such as Maple. Prerequisite: COS 126 and MAT 104, or instructor's permission. Two 90-minute lectures. R. Fiebrink

COS 325 Transforming Reality by Computer (also MUS 315)   Not offered this year LA

Capturing and transforming sound by computer for artistic purposes. Emphasis is on the student's own creative use of aural material from the real world, on providing a basic foundation in the signal processing theory and technique most useful for computer music, and on the interaction between the artistic and scientific aspects of the endeavor. Two 90-minute lectures, one preceptorial, one laboratory. Prerequisites: 217 and MAT 104. Offered alternate years. Staff

COS 333 Advanced Programming Techniques   Spring

The practice of programming. Emphasis is on the development of real programs, writing code but also assessing tradeoffs, choosing among design alternatives, debugging and testing, and improving performance. Issues include compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop skills in these areas by working on their own code and in group projects. Two 90-minute lectures. Prerequisites: 217 and 226 (as corequisite). B. Kernighan

COS 340 Reasoning about Computation   Fall, Spring QR

An introduction to mathematical topics relevant to computer science. Combinatorics and probability will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling through such topics as dealing with uncertainty in data and handling large data sets. Students will be introduced to fundamental concepts such as NP-completeness and cryptography that arise from the world view of efficient computation. S. Kintali

COS 342 Introduction to Graph Theory (see MAT 375)

COS 351 Information Technology and Public Policy (see WWS 351)

COS 375 Computer Architecture and Organization (also ELE 375)   Fall

An introduction to computer architecture and organization. Instruction set design; basic processor implementation techniques; performance measurement; caches and virtual memory; pipelined processor design; design trade-offs among cost, performance, and complexity. Two 90-minute classes, one self-scheduled hardware laboratory. Prerequisites: 217 and 306. M. Martonosi

COS 397 Junior Independent Work (B.S.E. candidates only)   Fall

Offered in the fall, juniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. B.S.E. candidates only. V. Pai, A. Finkelstein

COS 398 Junior Independent Work (B.S.E. candidates only)   Spring

Offered in the spring, juniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. B.S.E. candidates only. A. Finkelstein, M. Martonosi

COS 401 Introduction to Machine Translation (see TRA 301)

COS 402 Artificial Intelligence   Fall

The fundamental principles, algorithms, and techniques of modern artificial intelligence research and practice. Likely topics include: problem solving using search, game playing, logical inference, probabilistic reasoning in the presence of uncertainty, hidden Markov models, speech recognition, Markov decision processes, machine learning. Two 90-minute lectures. Prerequisite: 226. A. Niculescu-Mizil

COS 423 Theory of Algorithms   Spring

Design and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms. Introduction to NP-completeness. Two 90-minute lectures. Prerequisites: 226 and 341 or instructor's permission. R. Tarjan

COS 424 Interacting with Data   Spring

Computers have made it possible, even easy, to collect vast amounts of data from a wide variety of sources. It is not always clear, however, how to use those data, and how to extract useful information from them. Course will focus on some of the most useful approaches to this broad problem, exploring both theoretical foundations and practical applications. Students will gain experience analyzing many kinds of data, including text, images, and biological data. Topics include classification, clustering, prediction, and dimensionality reduction. Two 90-minute lectures. Prerequisites: MAT 202 and COS 126 or equivalent, or instructor's permission. D. Blei

COS 425 Database and Information Management Systems   Not offered this year

Theoretical and practical aspects of database systems and systems for accessing and managing semi-structured information (e.g., Web information repositories). Topics include: relational and XML models, storage and indexing structures, query expression and evaluation, concurrency and transaction management, search effectiveness. Two 90-minute lectures. Prerequisites: 217 and 226. A. LaPaugh

COS 426 Computer Graphics   Spring

The principles underlying the generation and display of graphical pictures by computer. Hardware and software systems for graphics. Topics include: hidden surface and hidden line elimination, line drawing, shading, half-toning, user interfaces for graphical input, and graphic system organization. Two 90-minute lectures. Prerequisites: 217 and 226. S. Rusinkiewicz

COS 429 Computer Vision   Fall

An introduction to the concepts of 2D and 3D computer vision. Topics include low-level image processing methods such as filtering and edge detection; segmentation and clustering; optical flow and tracking; shape reconstruction from stereo, motion, texture, and shading. Throughout the course, there will also be examination of aspects of human vision and perception that guide and inspire computer vision techniques. Prerequisites: 217 and 226. Two 90-minute lectures. T. Funkhouser

COS 432 Information Security   Fall

Security issues in computing, communications, and electronic commerce. Goals and vulnerabilities; legal and ethical issues; basic cryptology; private and authenticated communication; electronic commerce; software security; viruses and other malicious code; operating system protection; trusted systems design; network security; firewalls; policy, administration and procedures; auditing; physical security; disaster recovery; reliability; content protection; privacy. Prerequisites: 217 and 226. Two 90-minute lectures. A. Narayanan

COS 433 Cryptography (also MAT 473)   Fall

An introduction to modern cryptography with an emphasis on fundamental ideas. The course will survey both the basic information and complexity-theoretic concepts as well as their (often surprising and counter-intuitive) applications. Among the topics covered will be private key and public key encryption schemes, digital signatures, pseudorandom generators and functions, chosen ciphertext security; and time permitting, some advanced topics such as zero knowledge proofs, secret sharing, private information retrieval, and quantum cryptography. Prerequisites: 226 or permission of instructor. Two 90-minute lectures. Z. Dvir

COS 435 Information Retrieval, Discovery, and Delivery   Spring

This course studies both classic techniques of indexing documents and searching text, and also new algorithms that exploit properties of the World Wide Web, digital libraries, and multimedia collections. There is significant emphasis on current methods employed by Web search engines, including methods of employing user profiles to enhance search results. Pragmatic issues of handling very large amounts of information that may be widely dispersed--caching, distributed storage, and networking technology--are also covered. Prerequisite: COS 226 and MAT 202. Two 90-minute lectures. A. LaPaugh

COS 436 Human-Computer Interface Technology (also ELE 469)   Not offered this year

This course covers hardware, sensors, displays, software, signal processing, pattern recognition, real-time computing, systems, and architectures for human computer interfacing. Labs supplement lectures and readings, and final group projects are executed and tested. Prerequisite: COS 217 or ELE 302. Two 90-minute lectures. Staff

COS 441 Programming Languages   Not offered this year

How to design and analyze programming languages and how to use them effectively. Functional programming languages, object-oriented languages; type systems, abstraction mechanisms, operational semantics, safety and security guarantees. Implementation techniques such as object representations and garbage collection will also be covered. Prerequisites: COS 217 and 226. Three lectures. D. Walker

COS 444 Internet Auctions: Theory and Practice   Not offered this year SA

The goal of this course is to connect auction theory to real-world auctions. Basic results will be derived and illustrated with experiments in class and observations of behavior on the Internet. Topics include: current Internet auctions, Vickrey auctions, dominant strategies, equilibrium behavior, revenue equivalence, optimal auctions, multi-unit auctions, efficiency, mechanism design, risk aversion, spite, collusion, wars, fraud, ethical and legal considerations. Prerequisites: 226 and 217; or ECO 310; or instructor's permission. Two 90-minute lectures. Staff

COS 451 Computational Geometry   Fall

Introduction to basic concepts of geometric computing, illustrating the importance of this new field for computer graphics, solid modelling, robotics, databases, pattern recognition, and statistical analysis. Algorithms for geometric problems. Fundamental techniques, for example, convex hulls, Voronoi diagrams, intersection problems, multidimensional searching. Two 90-minute lectures. Prerequisites: 226 and 340 or 341, or equivalent. B. Chazelle

COS 455 Introduction to Genomics and Computational Molecular Biology (see MOL 455)

COS 461 Computer Networks   Spring

This course studies computer networks and the services built on top of them. Topics include packet-switch and multi-access networks, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), the client-server model and RPC, elements of distributed systems (naming, security, caching) and the design of network services (multimedia, peer-to-peer networks, file and Web servers, content distribution networks). Two lectures, one preceptorial. Prerequisite: 217. M. Freedman

COS 462 Design of Very Large-Scale Integrated (VLSI) Systems (see ELE 462)

COS 475 Computer Architecture (see ELE 475)

COS 487 Theory of Computation (also MAT 407)   Not offered this year

Studies the limits of computation by identifing tasks that are either inherently impossible to compute, or impossible to compute within the resources available. Introduces students to computability and decidability, Godel's incompleteness theorem, computational complexity, NP-completeness, and other notions of intractability.This course also surveys the status of the P versus NP question. Additional topics may include: interactive proofs, hardness of computing approximate solutions, cryptography, and quantum computation. Two lectures, one precept. Prerequisite: 340 or 341, or instructor's permission. Staff

COS 495 Special Topics in Computer Science (also ART 495/HLS 495)   Not offered this year

These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term. Three classes. Staff

COS 496 Special Topics in Computer Science   Not offered this year

These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term. Three classes. Staff

COS 497 Senior Independent Work (B.S.E. candidates only)   Fall

Offered in the fall, seniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. B.S.E. candidates only. A. Finkelstein, V. Pai

COS 498 Senior Independent Work (B.S.E. candidates only)   Spring

Offered in the spring, seniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. B.S.E. candidates only. A. Finkelstein, M. Martonosi