Department of Computer Science - A.B.
- Jennifer L. Rexford
- Adam Finkelstein
Director of Undergraduate Studies
- Brian W. Kernighan (co-director)
- Jaswinder P. Singh (co-director)
Director of Graduate Studies
- Ryan P. Adams (co-director)
- Ben Raphael (co-director)
- Ryan P. Adams
- Andrew W. Appel
- Sanjeev Arora
- David I. August
- Mark Braverman
- Bernard Chazelle
- David P. Dobkin
- Edward W. Felten
- Adam Finkelstein
- Michael J. Freedman
- Tom Griffiths
- Aarti Gupta
- Elad Hazan
- Brian W. Kernighan
- Kai Li
- Margaret R. Martonosi
- Ben Raphael
- Ran Raz
- Jennifer L. Rexford
- Szymon M. Rusinkiewicz
- Robert Sedgewick
- H. Sebastian Seung
- Jaswinder P. Singh
- Mona Singh
- Robert E. Tarjan
- Olga G. Troyanskaya
- David P. Walker
- Zeev Dvir
- Barbara E Engelhardt
- Kyle A. Jamieson
- Arvind Narayanan
- Danqi Chen
- Jia Deng
- Felix Heide
- Zachary Kincaid
- Gillat Kol
- Amit A. Levy
- Wyatt A. Lloyd
- Jonathan Mayer
- Karthik Narasimhan
- Olga Russakovsky
- Matt Weinberg
- Mark L. Zhandry
- Amir Ali Ahmadi, Oper Res and Financial Eng
- Yuxin Chen, Electrical Engineering
- Jianqing Fan, Oper Res and Financial Eng
- Jaime Fernandez Fisac, Electrical Engineering
- Chi Jin, Electrical Engineering
- Jason D. Lee, Electrical Engineering
- Ruby B. Lee, Electrical Engineering
- Anirudha Majumdar, Mechanical & Aerospace Eng
- Prateek Mittal, Electrical Engineering
- Paul Seymour, Mathematics
- John D. Storey, Integrative Genomics
- Daniel L. Trueman, Music
- Robert J. Vanderbei, Oper Res and Financial Eng
- Janet A. Vertesi, Sociology
- Mengdi Wang, Electrical Engineering
- David Wentzlaff, Electrical Engineering
- Sahil Singla
Lecturer with Rank of Professor
- Robert E. Schapire
- Yoram Singer
- Kevin Wayne
- Robert M. Dondero
- Robert S. Fish
- Donna S. Gabai
- Maia Ginsburg
- Alan Kaplan
- Dan Leyzberg
- Xiaoyan Li
- Jérémie Lumbroso
- Christopher M. Moretti
- Soohyun Nam Liao
- Iasonas Petras
- Mohammad Shahrad
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.
The prerequisites for AB candidates are MAT 103, 104, and 202 or 204 or 217 ; COS 126; COS 217 and 226. Students should plan to take both 217 and 226 before the junior year. One or both of these are required prerequisites for all later computer science courses.
Eight additional departmental courses at or above the 300 level must be elected to fulfill the departmental requirements. These eight courses must include two each from the following three areas:
Theoretical computer science:
340 Reasoning about Computation
423 Theory of Algorithms
445 Networks, Economics and Computing
451 Computational Geometry
487 Theory of Computation
488 Introduction to Analytic Combinatorics
510* Programming Languages
511 Theoretical Machine Learning
516* Reasoning About Software
521 Advanced Algorithm Design
522 Computational Complexity
533** Advanced Cryptography
*If a student takes COS 510 and COS 516 only one will count as a theory requirement.
**If a student takes COS 433 and COS 533 only one will count as a theory requirement.
306 Introduction to Logic Design (see ELE 206)
316 Principles of Computer System Design
318 Operating Systems
320 Compiling Techniques
333 Advanced Programming Techniques
375 Computer Architecture and Organization
418* Distributed Systems
425 Database and Information Management Systems
461** Computer Networks
463 Wireless Networks
475 Computer Architecture (see ELE 475)
518* Advanced Computer Systems
561**Advanced Computer Networks
*If a student takes COS 418 and COS 518 only one will count as a systems requirement.
**If a student takes COS 461 and COS 561 only one will count as a systems requirement.
314 (MUS 314) Computer and Electronic Music through Programming, Performance, and Composition
323 Computing and Optimization for the Physical and Social Sciences (see ORF 363)
324 Introduction to Machine Learning
326 Functional Programming
343 Algorithms for Computational Biology
360 Computational Models of Cognition
401 Introduction to Machine Translation (see TRA 301)
402 Machine Learning and Artificial Intelligence
424 Fundamentals of Machine Learning
426* Computer Graphics
429 Computer Vision
432 Information Security
436 Human-Computer Interface Technology
455 Introduction to Genomics and Computational Molecular Biology (see MOL 455)
484 Natural Language Processing
485 Neural Networks
526* Advanced Computer Graphics
*If a student takes COS 426 and COS 526 only one will count as an applications requirement.
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 departmentals. For information on such courses, see the Department of Computer Science requirements webpage.
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 webpage.
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. The goal may be the solution of a research question or the entrepreneurial design of an application. Students may work within the context of a faculty research project. It may require a significant programming effort, or a theoretical study. The results of these efforts must be presented in two written reports that correspond to the work undertaken in each of the terms.
AB junior concentrators have three options to choose from to complete their junior independent work:
- One-on-One Advising. Students complete a project of their choosing while working one-on-one with a faculty adviser. Students may work within the context of a faculty research project. Students can explore the Undergraduate Research Topics for faculty research interests.
- Independent Work Seminars. 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 .
- COS 333I (available to AB junior concentrators only). Students attend and fulfill all requirements for COS 333 - lectures, homework, and final project. Instead of credit for COS 333, the course and grade count as JIW. Students may not sign up for both COS 333 and COS 333I.
AB 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 the B.S.E. degree. 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, will be held in late April.
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 first 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 first year and MOL 214, 342, and 345 in the sophomore year. For full course descriptions and more information, see the integrated science website.
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, 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 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.
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 2020-2021 Undergraduate Announcement.
Program in Cognitive Science draws on psychology, philosophy, linguistics, neuroscience, and computer science to study how the mind works
Program in Engineering and Management Systems prepares students for careers in management, consulting or public policy.
Program in Neuroscience is the study of the brain and draws from several disciplines, including computer science
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