The Computer Science Department is the only department at Princeton that offers both undergraduate degree programs in bachelor of arts (AB) and bachelor of science in engineering (BSE). AB students and BSE students must fulfill different general education requirements.
Both degree programs teach students the fundamentals of computer science, and allow students to explore their individual interests through independent work and research with faculty members. Either an AB or BSE degree will give students the tools to pursue their career goals after graduation.
The department also offers a minor for students who want to combine the study of computing and computers with another academic discipline.
AB and BSE Degrees in Computer science
Departmental Requirements
All majors (BSE and AB) must take at least eight departmental courses on a graded basis. These courses fall into three categories: foundations, core courses, and electives. Foundation and core courses must be taken at Princeton; they can not be satisfied with Study Abroad courses.
Requirements for the Class of 2024 and before
Please note: these requirements above apply only to the Class of 2025 and beyond! These are the requirements for the Class of 2024 and before.
Foundations
Students must take COS 240 (Reasoning and Computation), to be completed before the end of junior year.
Core Courses
Students one course in each of the following categories: Computer Systems, Artificial Intelligence and Machine Learning, Theoretical Computer Science, and Breadth.
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)
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)
Theoretical Computer Science: COS 423 (Theory of Algorithms), COS 433 (Cryptography), COS 445 (Networks, Economics, and Computing), COS 487 (Theory of Computation)
Breadth: This category contains courses that either explore another sub-discipline beyond Systems/Theory/AIML, or provide experience with real-world applications. At least one must be taken. As of September 2024, this is a complete list. Other COS courses are electives.
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 Interaction)
COS 448 (Innovating across Technology, Business, and Markets)
Electives:
Students must take three computer science courses numbered 300 or higher (including approved COS 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.
Any 300- or 400- level Math or ECE or ORF course that does not duplicate COS content. MAE 345, MOL 437/NEU 437, NEU 330, and ECO 326 count as electives.
More frequently asked questions about prerequisites are on the Undergrad FAQ.