Department of Computer Science - A.B.
Jennifer L. Rexford
- Associate Chair
Szymon M. Rusinkiewicz
- Departmental Representative
Brian W. Kernighan
Andrea S. LaPaugh
- Director of Graduate Studies
Ryan P. Adams
Andrew W. Appel
David P. Dobkin
Edward W. Felten, also Woodrow Wilson School
Michael J. Freedman
Thomas A. Funkhouser
Elad E. Hazan
Brian W. Kernighan
Andrea S. LaPaugh
Margaret R. Martonosi
Benjamin J. Raphael
Jennifer L. Rexford
Szymon M. Rusinkiewicz
Hyunjune Sebastian Seung, also Princeton Neuroscience Institute
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
- Assistant Professor
Barbara E. Englehardt
Jonathan Mayer, also Woodrow Wilson School
Mark L. Zhandry
- Senior Lecturer
Robert M. Dondero Jr.
- Associated Faculty
Amir Ali Ahmadi, Operations Research and Financial Engineering
Yuxin Chen, Electrical Engineering
Jianqing Fan, Operations Research and Financial Engineering
Ruby B. Lee, Electrical Engineering
Samory Kpotufe, Operations Research and Financial Engineering
Prateek Mittal, Electrical Engineering
Warren Powell, Operations Research and Financial Engineering
Paul D. Seymour, Mathematics
John 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.
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.
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
441 Programming Languages
445 Networks, Economics and Computing
451 Computational Geometry
487 Theory of Computation
488 Introduction to Analytic Combinatorics
510* Programming Languages (In lieu of COS 441)
516* Reasoning About Software
533** Advanced Cryptography
*If a student takes COS 510 (or 441) 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.
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
475 Computer Architecture (see ELE 475)
561* Advanced Computer Networks
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
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
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 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 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.
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.
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.