Department of Computer Science - B.S.E.
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
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 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 versions 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
All B.S.E. students must meet the School of Engineering and Applied Science general requirements. Students must complete COS 126, 217, and 226. Students should plan to take both 217 and 226 before their junior year. One or both of these are prerequisites for all later computer science courses.
Departmental Requirements
Course Requirements
Majors must take at least eight departmental courses on a graded basis. These fall into three categories: foundation, 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 of these courses.
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)
Elective Courses
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 B.S.E. concentrators engage in independent work supervised by a member of the department. Independent Work 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.
B.S.E. students must elect one semester of independent work by enrolling in 397 (junior fall), 398 (junior spring), 497 (senior fall), or 498 (senior spring). One additional semester of independent work may be counted as one of the departmental courses. B.S.E. students are also welcome, but not required, to complete a senior thesis.
The department also offers a curriculum leading to an A.B. degree. The primary differences between the A.B. and B.S.E. programs are in the general requirements for the degree programs.
Integrated Science Sequence
An alternative path into the department is through the integrated science curriculum. Integrated Science (ISC/CHM/COS/MOL/PHY 231/232 fall and 233/234 spring) is a double course, meaning that it counts as two courses each semester (out of the four you would normally take). It results 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 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, molecular biology, neurosciences, and linguistics, and any of the departments and programs within the School of Engineering and Applied Science.
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 a certificate in 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 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.