Quick links



Computer science concentrators must take 8 departmental courses (departmentals) and do independent work.  The minimum amount of independent work depends on whether you are an AB candidate (4 semesters minimum) or a BSE candidate (1 semester minimum). Departmental courses are any computer science course at the 300 or 400 level (except 397, 398, 497 and 498) and a specific set of courses in other departments (enumerated below).  There is also a distribution requirement within the 8 departmental courses: you must take at least 2 Systems departmentals, at least 2 Theory departmentals, and at least 2 Applications departmentals.  (Notice that leaves you 6 departmentals that are constrained and 2 departmentals that are unconstrained.)  

BSE candidates do independent work by signing up for COS 397 or 398 in the junior year, or COS 497 or 498 in the senior year. You encouraged to do more than one semester of independent work; the second semester of independent work may be counted as a departmental. 

AB candidates do 2 one-semester junior independent work projects and a full year senior thesis.  Numbered courses are not used to designate AB independent work.

Departmental Courses

Any computer science (COS) course at the 300 or 400 level (except independent work) counts as a computer science departmental.  In addition, some graduate COS courses (500-level) count as undergraduate departmentals (COS 551, COS 534), depending on their content and structure. (Please ask if you need to use a graduate course as a departmental).  However, graduate courses rarely count as special "tracked" departmentals (see the list below for the few exceptions).

In addition, any 300- or 400- level Math or ELE or Physics or ORF course that does not duplicate COS content, Philosophy 312, MAE 345, CHM 303(CHM 303 is now renumbered to CHM 301 as of 8/27/2018), ECO 312, MOL 437/NEU 437, NEU 330, MUS 315, and ECO 326 – Economics of the Internet count as departmentals.  On occasion, special courses with computational content from other departments may fall in to this category.  Note that it is very, very, very rare for courses outside the computer science department that are not cross-listed with the computer science department to count as track-specific (ie: Theory/Systems/Applications) departmentals.  Hence, in general, you will not be able to count more than 2 courses outside of the computer science department as COS departmentals.

Course Tracks

Theoretical computer science

Courses in this track explore the theoretical underpinnings of computing systems.  They all use mathematical proofs for rigorous development of the area of study.

Theory courses:*

  • 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* (441) Programming Languages
  • 516* Reasoning About Software
  • 533**  Advanced Cryptography

*If you take COS 510 (or 441) and COS 516 only one will count as a theory requirement.

**If you take COS 433 and COS 533 only one will count as a theory requirement.


Courses in this track study the design and implementation of the foundational hardware and software that constitute a modern computing environment.

Systems courses:*

  • 306 (ELE 206) Introduction to Logic Design
  • 318 Operating Systems
  • 320 Compiling Techniques
  • 333 Advanced Programming Techniques
  • 375 (ELE 375) Computer Architecture and Organization
  • 418 Distributed Systems**
  • 425 Database and Information Management Systems
  • 461 Computer Networks*
  • 463 Wireless Networks (Spring 2018 Course)
  • 475 (ELE 475) Computer Architecture
  • 518 Advanced Computer Systems**
  • 561 Advanced Computer Networks*

*If you take COS 461 and  COS 561 only one will count as a systems requirement.

**If you take COS 418 and  COS 518 only one will count as a systems requirement.



Courses in this track treat a broad range of topics.

Applications courses:*

  • 314 (MUS 314) Computer and Electronic Music through Programming, Performance, and Composition (with programming precept)
  • 323 (ORF 363)  Computing and Optimization 
  • 324 Introduction to Machine Learning
  • 326 Functional Programming
  • 343 Algorithms for Computational Biology (Spring 2018 Course)
  • 401 (TRA 301) Introduction To Machine Translation  
  • 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 (MOL 455) Introduction to Genomics and Computational Molecular Biology
  • 485 Neural Networks (Spring 2018 Course)
  • 526* Advanced Computer Graphics

*If a student takes both COS 426 and 526, only one will count as an applications requirement.

* Course offerings can vary from year to year.

Some regular courses are COS departmentals but do not count in any specific track, such as COS 351 "Information technology and public policy".  COS 495, Special Topics, is a departmental but may be associated with different tracks (or no track) depending on content.  Other one-time courses may also be departmentals and may count in one of the tracks depending on level and content.   Check with your advisor or the undergraduate coordinator for up-to-date information.

Independent Work

Independent work is one of the unique features of a Princeton education. Independent projects typically arise either from an idea that excites you or from an idea put forth by a professor in the department. The department maintains a wiki of faculty research interests. This list is a good place to start in looking for a project or advisor. There is also some general advice on finding a topic, an adviser, and a successful outcome here.

Once you have a project, get a form (located on the bulletin board outside the Computer Science undergraduate office) and sign it along with your advisor to let us know what you'll be doing. Your project is then between you and your advisor, but there is always a COS Independent Work Coordinator who coordinates all independent work, and schedules public talks, checkpoints, and other requirements.

It is possible to do a project with a faculty member in another department if you have the approval of the Independent Work Coordinator.

Summary of All Requirements

BSE Requirements

  • Engineering school requirements (physics, chemistry, etc.; see the Undergraduate Announcement)
  • Prerequisites (COS 126, 217, 226)
  • 8 Computer Science departmentals (2 from each track listed above)
  • 1 semester of independent work (COS 397 or 398 in your junior year, or COS 497 or 498 in your senior year)

AB Requirements

  • The University requirements for the AB degree (language requirement, distribution requirements, etc.; see the Undergraduate Announcement 
  • Prerequisites
    • COS 126, 217, 226
    • Math 103-104 and 175* (or 202 or 204 or 217)   *Beginning with the Class of '19 the prerequisite will be Math 103-104 and 202 or 204 or 217
  • 8 Computer Science departmentals (2 from each track listed above)
  • 2 semesters of junior independent work
  • Senior thesis
Frequently Asked Questions: 

Can courses outside the COS department, such as ORF 309 count as area-specific departmentals (ie: theory, systems, applications)?

Answer:No. They count as one of your 8 "generic" departmentals but not one of the area-specific ones. We want to be sure that you have a good core CS background.

What about substitutions?

Answer:We believe that the above list of courses is sufficiently flexible so that further substitutions will be allowed only in extreme situations.

Can I take departmentals and prerequisites pass/D/fail?

Answer:No. You must take departmental prerequisites such as Math 103-104-175/202/204 and COS 126-217-226 (and physics and chemistry and MAT 201/202 if you're a BSE) for a letter grade. You must also take your departmental courses (300- and 400-level CS) for a letter grade. This is also true of any grad courses that you wish to count as departmentals.

Can I take departmentals in my sophomore year?

Answer:Yes, and in your freshman year too, and they count towards the number of departmentals you need to graduate. In particular, you are encouraged to take COS 306 or COS 340 before your junior year if you can manage it. (However, you need Math 104 before taking COS 340.)

I placed out of some of those math and science courses, so I have time for more computer science. What should I do?

Answer:You could take 340 in the fall of your sophomore year, or COS 306 in the spring.

Can I get departmental credit for a course taken at another school, for example during the summer?

Answer:No. The sole exception will be a course taken during a semester abroad. (And a bit of fine print for BSE's: you can't satisfy your computer proficiency requirement with a course at another school; it has to be through AP credit or COS 126 or higher.)

If I get a D in a course, can it still count as a departmental?


When do I have to declare which courses are departmentals?

Answer:It is unnecessary to declare a course as a departmental unless it is a non-CS course or it requires approval from your advisor. For "normal" departmentals, the registrar and the CS department keep track for you.

Does the COS department require some minimum departmental GPA?

Answer:No. As long as you pass your COS prerequisites and departmentals, you have satisfied the COS component of your degree.

How are departmental averages computed for awarding honors?

Answer:There is no specific formula or numerical score that determines honors. The faculty looks at a student's academic achievements holistically when deciding on honors. The emphasis is typically placed on a student's top 8 departmentals (independent of the theory/systems/applications breakdown) and their independent work. In the case of AB students, special emphasis is placed on the quality of the thesis.

Did you say "senior departmental exam?"

Answer:Yes! AB seniors must give an oral presentation of their independent work, at the beginning of the exam period of the spring semester. This is the Senior Departmental Exam.

I want to take a CS course that conflicts with a course in another department that I also want to take. Can you please re-schedule the CS course?

Answer:No. Things conflict; sorry. You should probably make a multi-year schedule, especially to avoid conflicts between required CS courses and required courses in any certificate programs you're in.

Can I study computer architecture in the EE department?

Answer:Computer Science 375 and 475 are taught by faculty in CS and EE. Students who would like to do independent work in computer architecture should try to take ELE 206/COS 306 in the spring of their sophomore year and COS/ELE 375 in the fall of their junior year.

There are often CS graduate students in my upper-level courses. How does this affect my grade?

Answer:The department's policy is that grading will be based only on undergraduate performance; the presence of grad students in a course will not affect undergraduate grades at all. We hope, in fact, that these students enrich the course experience for undergrads and vice versa.

I want to go to grad school, which courses should I take?


If you plan to attend graduate school in CS to pursue a PhD, you are strongly encouraged to take (1) a semester of independent work by the end of your junior year and (2) 300- and 400- level courses in your area of research interest. (If you haven't narrowed down potential areas, take classes in core areas of the curricula, such as 318, 320, 375, 402, 423, and 461). Successful admission to top graduate programs requires both positive letters of recommendation from CS faculty (most commonly from taking independent research) and excellent course work.

Follow us: Facebook Twitter Linkedin