Department of Computer Science - A.B.

Faculty

Chair

  • Jennifer Rexford
  • Szymon M. Rusinkiewicz

Vice Chair

  • Szymon M. Rusinkiewicz

Associate Chair

  • Wyatt A. Lloyd

Director of Undergraduate Studies

  • Brian W. Kernighan (co-director)
  • David P. Walker (co-director)

Director of Graduate Studies

  • Jia Deng (co-director)
  • Elad Hazan (co-director)
  • Kyle A. Jamieson (co-director)

Professor

  • Ryan P. Adams
  • Andrew W. Appel
  • Sanjeev Arora
  • David I. August
  • Mark Braverman
  • Bernard Chazelle
  • Zeev Dvir
  • Adam Finkelstein
  • Michael J. Freedman
  • Tom Griffiths
  • Aarti Gupta
  • Elad Hazan
  • Kyle A. Jamieson
  • Brian W. Kernighan
  • Kai Li
  • Margaret R. Martonosi
  • Radhika Nagpal
  • Arvind Narayanan
  • Ben Raphael
  • Ran Raz
  • Jennifer Rexford
  • Szymon M. Rusinkiewicz
  • H. Sebastian Seung
  • Jaswinder P. Singh
  • Mona Singh
  • Robert E. Tarjan
  • Olga G. Troyanskaya
  • David P. Walker

Associate Professor

  • Gillat Kol
  • Wyatt A. Lloyd

Assistant Professor

  • Danqi Chen
  • Jia Deng
  • Adji Bousso Dieng
  • Felix Heide
  • Zachary Kincaid
  • Aleksandra Korolova
  • Amit A. Levy
  • Jonathan Mayer
  • Andrés Monroy-Hernández
  • Karthik Narasimhan
  • Ravi A. Netravali
  • Yuri Pritykin
  • Olga Russakovsky
  • Matt Weinberg
  • Huacheng Yu
  • Ellen Zhong

Associated Faculty

  • Amir Ali Ahmadi, Oper Res and Financial Eng
  • Jianqing Fan, Oper Res and Financial Eng
  • Jaime Fernandez Fisac, Electrical & Comp Engineering
  • Chi Jin, Electrical & Comp Engineering
  • Jason D. Lee, Electrical & Comp Engineering
  • Anirudha Majumdar, Mechanical & Aerospace Eng
  • Prateek Mittal, Electrical & Comp Engineering
  • Paul Seymour, Mathematics
  • John D. Storey, Integrative Genomics
  • Robert J. Vanderbei, Oper Res and Financial Eng
  • Janet A. Vertesi, Sociology
  • Mengdi Wang, Electrical & Comp Engineering
  • David Wentzlaff, Electrical & Comp Engineering

University Lecturer

  • Kevin Wayne

Senior Lecturer

  • Robert M. Dondero
  • Alan Kaplan
  • Christopher M. Moretti

Lecturer

  • Robert S. Fish
  • Ruth C. Fong
  • Donna S. Gabai
  • Dan Leyzberg
  • Xiaoyan Li
  • Jérémie Lumbroso
  • Iasonas Petras
  • Pedro Miguel Reis Bento Paredes

Visiting Professor

  • Katrina A. Ligett
  • Shimon Schocken
For a full list of faculty members and fellows please visit the department or program website.

Program Information

Information and Departmental Plan of Study

With computation and computer science now permeating all corners of society and the economy, a computer science education has become a good launching pad for almost any career. Core concepts and skills emphasized in the computer science curriculum include theoretical and quantitative analysis of computation; design/engineering principles of advanced computer systems; and foundations and methods of AI and machine learning. The curriculum provides additional flexibility to explore subdisciplines of computer science (programming languages, formal methods, software engineering, computer graphics, information security), or to branch out into exciting cross-disciplinary investigations (neuroscience and cognitive science, computational biology, information policy, robotics, data science, etc.). Most computer science majors enjoy programming. Quite a few start with zero or minimal background and are able to enhance their skills while progressing through the curriculum.

The plan below applies to the Class of 2025 and beyond; the requirements for the Class of 2024 and earlier are available from the Computer Science Department website and archived version of the Undergraduate Announcement.

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 

The prerequisites are MAT 103, 104, any one of MAT 202 or 204 or 217 or EGR 154; COS 126; COS 217 and 226. Students should plan to take both COS 217 and COS 226 before their junior year since at least one of them is a prerequisite for all computer science departmentals. 

Departmental Requirements

Course Requirements: Majors must take at least eight departmental courses on a graded basis. These fall into three categories: foundations, core courses, and electives. 

Foundations

Students must take COS 240 (Reasoning and Computation), to be completed before the end of junior year.

Core Courses

Students must take a total of four courses, one from each of the four categories listed below:

1. Computer Systems: COS 316 (Principles of Computer System Design) or COS 375 (Computer Architecture and Organization)

Alternatives: COS 318 (Operating Systems) COS 418 (Distributed Systems) COS 461 (Computer Networks)

2. Artificial Intelligence and Machine Learning: COS 324 (Introduction to Machine Learning)

Alternatives: COS 424 (Fundamentals of Machine Learning), COS 429 (Computer Vision), COS 484 (Natural Language Processing)

3. Theoretical Computer Science: COS 423 (Theory of Algorithms), COS 433 (Cryptography), COS 445 (Networks, Economics, and Computing), COS 487 (Theory of Computation)

4. Breadth:  This category contains courses that either explore another subdiscipline beyond Systems/Theory/AIML or provide experience with real-world applications. Students must complete at least one.  

  • COS 326 (Functional Programming)
  • COS 333 (Advanced Programming Techniques)
  • COS 343 (Algorithms for Computational Biology)
  • COS 426 (Computer Graphics)
  • COS 432 (Information Security)
  • COS 436 (Human-Computer Interface Technology)
  • COS 448 (Innovating across Technology, Business, and Markets)

Electives 

Students must take three COS courses numbered 300 or higher (including approved graduate courses numbered 500 or higher). Alternatively, up to two of the electives may be chosen from a list of approved courses from other departments (see the department website for an up-to-date list).   

Students should consult with a computer science academic adviser on their course selections once they decide to become computer science concentrators. Academic advisers are listed on the Department of Computer Science webpage.

Independent Work

All A.B. concentrators will engage in independent work supervised by a member of the department. A junior project normally involves the study and solution of specific problems in computer science. IW projects involve the study and solution of specific problems in or related to computer science. These may arise from varied motivations, such as research questions intrinsic to the field; entrepreneurial activities; software design; policy or ethics issues in the tech world; applications of computer science to other disciplines or to societal problems. Many students come up with their own IW topics; others may formulate them with help from faculty advisers.

In the fall term of junior year, majors must enroll in a Junior Research Workshop (JRW), while simultaneously enrolling in a “Methods” 3xx course being offered that term. The Methods course and the JRW complement each other and enable students to write a comprehensive proposal for a spring IW project by the end of the fall term. See the department website for details.

A.B. junior concentrators then use the spring term to complete their proposed IW project—or, in some cases, embark on a separate research endeavor for the spring term—through one of the following advising structures:

1. One-on-One Advising. Students complete a project of their choosing while working one-on-one with a faculty adviser. Students may also work within the context of a faculty research project. Students can explore the Undergraduate Research Topics (link is external) for faculty research interests and advisers. 

 2. Independent Work Seminars (link is external). Students with shared interests around a common theme meet weekly as a group with a faculty adviser. Seminar instructors and themes vary term-to-term.

A.B. senior concentrators must complete a full-year senior thesis. 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 a B.S.E. degree. The primary differences between the A.B. and B.S.E. programs are in the University requirements for the degree programs.

Senior Departmental Examination

An oral examination, consisting of a defense of the thesis research, will be held in April.

Integrated Science Sequence

An alternative path into the department is through the integrated science curriculum. Integrated Science courses ISC/CHM/COS/MOL/PHY 231/232 offered in the fall semester and ISC/CHM/COS/MOL/PHY 233/234 offered in the spring semester is a double course, meaning that it counts as two courses each semester (out of the four you would normally take). Those courses result in formal credit for introductory chemistry (two semesters), physics (two semesters), computer science (one semester), and molecular biology (one semester). A nontraditional laboratory component is also part of the course, which includes experiments from all of  these sciences. 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 computer's central role 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 and computer engineering, molecular biology, neurosciences, 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 preprofessional 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.

Certificate Programs and a Concentration in Computer Science. Students often combine their concentration in computer science with participation in a certificate program and have selected a wide variety of programs—from Ancient Roman Language and Culture to Entrepreneurship.  We highlight some interdisciplinary programs that involve computer science.  A complete list of certificate programs can be found in the 2021–2022 Undergraduate Announcement.

Program in Applied and Computational Mathematics

Program in Cognitive Science draws on psychology, philosophy, linguistics, neuroscience, and computer science to study how the mind works.

Program in Optimization and Quantitative Decision Science prepares students for careers in management, consulting, or public policy.

Program in Entrepreneurship

Program in Linguistics

Program in Music Performance

Program in Neuroscience is the study of the brain and draws from several disciplines, including computer science.

Program in Robotics and Intelligent Systems

Program in Statistics and Machine Learning focuses on methods of data analysis.

Program in Technology and Society includes an information technology track addressing societal concerns such as information security and privacy.

 

Courses

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

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. Instructed by: B. Kernighan

COS 126 Computer Science: An Interdisciplinary Approach (also
EGR 126
) Fall/Spring QCR

An introduction to computer science in the context of scientific, engineering, and commercial applications. The course will teach basic principles and practical issues, and will prepare 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. Video lectures, one or two classes, two preceptorials. Instructed by: D. August, K. Wayne

COS 217 Introduction to Programming Systems Fall/Spring QCR

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. Instructed by: C. Moretti, J. Rexford

COS 226 Algorithms and Data Structures Fall/Spring QCR

This course surveys the most important algorithms and data structures in use on computers today. Particular emphasis is given to algorithms for sorting, searching, and string processing. Fundamental algorithms in a number of other areas are covered as well, including geometric algorithms, graph algorithms, and some numerical algorithms. The course will concentrate on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications. Two online lectures, two class meetings, one precept. Instructed by: G. Kol, K. Wayne

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 240 Reasoning About Computation Fall/Spring QCR

An introduction to mathematical topics relevant to computer science. Combinatorics, probability and graph theory will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling. Students will be introduced to fundamental concepts in theoretical computer science, such as NP-completeness and cryptography that arise from the world view of efficient computation. Instructed by: Z. Dvir, I. Petras

COS 306 Contemporary Logic Design (See ECE 206)

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

COS 318 Operating Systems Not offered this year

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. Instructed by: Staff

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. Instructed by: Staff

COS 323 Computing and Optimization for the Physical and Social Sciences (See ORF 363)

COS 326 Functional Programming Fall

An introduction to the principles of typed functional programming. Programming recursive functions over structured data types and informal reasoning by induction about the correctness of those functions. Functional algorithms and data structures. Principles of modular programming, type abstraction, representation invariants and representation independence. Parallel functional programming, algorithms and applications. Instructed by: A. Appel

COS 333 Advanced Programming Techniques Fall/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). Instructed by: R. Dondero Jr., D. Walker

COS 342 Introduction to Graph Theory (See MAT 375)

COS 346 Introduction to Robotics (See MAE 345)

COS 351 Information Technology and Public Policy (See SPI 351)

COS 375 Computer Architecture and Organization (also
ECE 375
) Fall SEN

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: COS 217. Instructed by: D. August

COS 381 Networks: Friends, Money and Bytes (See ECE 381)

COS 396 Introduction to Quantum Computing (See ECE 396)

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. Instructed by: K. Jamieson, R. Fish

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. Instructed by: A. Gupta, R. Fish

COS 402 Machine Learning and Artificial Intelligence Not offered this year

This course will provide a basic introduction to the core principles, algorithms and techniques of modern artificial intelligence and machine learning research and practice. Main topics will include: 1. Problem solving using search, with applications to game playing 2. Probabilistic reasoning in the presence of uncertainty 3. Hidden Markov models and speech recognition 4. Markov decision processes and reinforcement learning 5. Machine learning using decision trees, neural nets and more. 6. Basic principles of mathematical optimization for learning. Prerequisites- COS 226 and COS 340 Instructed by: Staff

COS 423 Theory of Algorithms Fall

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 340 or instructor's permission. Instructed by: R. Tarjan

COS 424 Fundamentals of Machine Learning (also
SML 302
) Not offered this year

Computers have made it possible to collect vast amounts of data from a wide variety of sources. It is not always clear, however, how to use the data, and how to extract useful information from them. This problem is faced in a tremendous range of social, economic and scientific applications. The focus will be on some of the most useful approaches to the problem of analyzing large complex data sets, exploring both theoretical foundations and practical applications. Students will gain experience analyzing several types of data, including text, images, and biological data. Two 90-minute lectures. Prereq: MAT 202 and COS 126 or equivalent. Instructed by: Staff

COS 426 Computer Graphics Fall

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. Instructed by: S. Rusinkiewicz

COS 429 Computer Vision Spring

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. Instructed by: O. Russakovsky

COS 432 Information Security (also
ECE 432
) Not offered this year

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. Instructed by: Staff

COS 433 Cryptography (also
MAT 473
) Spring

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. Instructed by: Z. Dvir

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

Creating technologies that fit into people's everyday lives involves more than having technically sophisticated algorithms, systems, and infrastructure. It involves understanding how people think and behave and using this data to design user-facing interfaces that enhance and augment human capabilities. Introduction to the field of human-computer interaction and the tools, techniques, and principles that guide research on people. Design and implement user-facing systems that bring joy rather than frustrate the user and put these skills into practice in a group project involving the creation of an interactive system. Prerequisite COS 217. Instructed by: Staff

COS 445 Economics and Computing Spring

Computation and other aspects of our lives are becoming increasingly intertwined. In this course we will study a variety of topics on the cusp between economics and computation. Topics to be covered include: games on networks, auctions, mechanism and market design, reputation, computational social choice. The aim of the course is two-fold: (1) to understand the game-theoretic issues behind systems involving computation such as online networks, and (2) to learn how algorithms and algorithmic thinking can help with designing better decision and allocation mechanisms in the offline world. Instructed by: M. Weinberg, M. Braverman

COS 448 Innovating Across Technology, Business, and Marketplaces (also
EGR 448
) Fall

This course introduces engineering students to the types of issues that are tackled by leading and innovative Chief Technology Officers: the technical visionaries and/or managers at companies who innovate at the boundaries of technology, business, and marketplaces by understanding all of these areas deeply. These individuals are true partners to the business leaders of the organization, not merely implementers of business goals. The focus will be on software technologies and businesses based on them. To use specific contexts, we will emphasize two complementary areas as examples: businesses based on cloud computing and on marketplaces. Instructed by: J. Singh

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. Instructed by: B. Chazelle

COS 455 Introduction to Genomics and Computational Molecular Biology (See QCB 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. Instructed by: K. Jamieson

COS 462 Design of Very Large-Scale Integrated (VLSI) Systems (See ECE 462)

COS 475 Computer Architecture (See ECE 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. Instructed by: G. Kol

COS 488 Introduction to Analytic Combinatorics (also
MAT 474
) Not offered this year

Analytic Combinatorics aims to enable precise quantitative predictions of the properties of large combinatorial structures. The theory has emerged over recent decades as essential both for the scientific analysis of algorithms in computer science and for the study of scientific models in many other disciplines. This course combines motivation for the study of the field with an introduction to underlying techniques, by covering as applications the analysis of numerous fundamental algorithms from computer science. The second half of the course introduces Analytic Combinatorics, starting from basic principles. Instructed by: Staff

COS 495 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. Instructed by: 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. Instructed by: 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. Instructed by: K. Jamieson, R. Fish

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. Instructed by: A. Gupta, R. Fish