Department of Computer Science - A.B.
- Chair
Jennifer L. Rexford
- Associate Chair
Szymon M. Rusinkiewicz
- Departmental Representative
Brian W. Kernighan
David P. Walker
- Director of Graduate Studies
Michael J. Freedman
- Professor
Ryan P. Adams
Andrew W. Appel
Sanjeev Arora
David August
Mark Braverman
Bernard Chazelle
David P. Dobkin
Nick Feamster
Edward W. Felten, also Woodrow Wilson School
Adam Finkelstein
Michael J. Freedman
Thomas A. Funkhouser
Thomas L. Griffiths, also Psychology
Aarti Gupta
Elad E. Hazan
Brian W. Kernighan
Andrea S. LaPaugh
Kai Li
Margaret R. Martonosi
Benjamin J. Raphael
Ran Raz
Jennifer L. Rexford
Szymon M. Rusinkiewicz
Robert Sedgewick
Hyunjune Sebastian Seung, also Princeton Neuroscience Institute
Yoram Singer
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
Zeev Dvir, also Mathematics
Barbara Engelhardt Martin
Kyle A. Jamieson
Arvind Narayanan
- Assistant Professor
Jia Deng
Felix Heide
Zachary Kincaid
Gillat Kol
Wyatt A. Lloyd
Jonathan Mayer, also Woodrow Wilson School
Karthik Narasimhan
Olga Russakovsky
Matt Weinberg
Mark L. Zhandry
- Senior Lecturer
Kevin Wayne
- Lecturer
Ibrahim Albluwi
Robert M. Dondero Jr.
Robert S. Fish
Donna S. Gabai
Maia Ginsburg
Alan Kaplan
Dan Leyzberg
Xiaoyan Li
Jeremie Lumbroso
Christopher M. Moretti
Iasonas Petras
- Associated Faculty
Associated Faculty
Amir Ali Ahmadi, Operations Research and Financial Engineering
Yuxin Chen, Electrical Engineering
Jianqing Fan, Operations Research and Financial Engineering
Samory K. Kpotufe, Operations Research and Financial Engineering
Ruby B. Lee, Electrical Engineering
Prateek Mittal, Electrical Engineering
Warren B. Powell, Operations Research and Financial Engineering
Paul D. Seymour, Mathematics
John D. Storey, Lewis-Sigler Institute for Integrative Genomics
Daniel L. Trueman, Music
Robert J. Vanderbei, Operations Research and Financial Engineering
David Wentzlaff, Electrical 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
The prerequisites for AB candidates are MAT 103, 104, and 202 or 204 ; 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.
Departmental Requirements
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
433 Cryptography
445 Networks, Economics and Computing
451 Computational Geometry
487 Theory of Computation
488 Introduction to Analytic Combinatorics
510* Programming Languages
516* Reasoning About Software
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 as a theory requirement.
Systems:
306 Introduction to Logic Design (see ELE 206)
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.
Applications:
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
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
435 Information Retrieval, Discovery, and Delivery
436 Human-Computer Interface Technology
455 Introduction to Genomics and Computational Molecular Biology (see MOL 455)
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.
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 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 and posters 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. 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 or early 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, 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 2018-2019 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 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 Quantitative and Computational Biology
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