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.
Foundation
Students must take COS 240 (Reasoning and Computation), to be completed before the end of junior year.
Students with an advanced math background may fulfill the foundation requirement by taking one (additional) COS theory course (COS 423, 433, 445, 487) and one of the following MAT courses: 217, 218, 300, 305, 320, 325, 335, 345, 346, 355, 365, 375, 377, 378, 419, 425, 427, 429, 449, 459, 478, 486. All departmental courses must be taken for a grade, not pdf.
Core Courses
Students must take a total of four courses, one from each of the four categories listed below:
Computer Systems: COS 316 (Principles of Computer System Design) or COS 375 (Computer Architecture and Organization)
Alternatives:
COS 417 (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. 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.
Independent Work - AB
All COS AB students are required to complete two semesters of junior independent work and a full-year senior thesis in the following sequence:
- Junior fall: Junior Research Workshop (JRW)
- Junior spring: Single-term Independent Work project
- Senior year: full-year senior thesis project
For more details, please see the COS AB IW Handbook.
Independent Work - BSE
All COS BSE students must complete at least one semester of independent work at some point in their junior or senior year. One additional semester of independent work may be counted as an elective.
More information about the BSE independent work options can be found in the COS BSE IW Handbook.
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.