Requirements

Overview

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, ECO 312, MOL 437/NEU 437, NEU 330, 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.

Systems

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.

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[1]. 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.

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?

Answer:Yes.

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:At the end of your senior year, we determine which of the courses you've taken could qualify as departmentals. The eight of these courses in which you received the best grades are then counted as your departmentals, with the proviso that only two courses in departments outside Computer Science are included among the eight best courses. . Thus, there is no penalty in taking an extra departmental course in which you might do poorly. Computation of honors is done separately for BSE's and AB's. For BSE's, honors are determined primarily on the basis of grades in the eight best departmentals and independent work. For AB's, the eight best departmentals, the senior thesis, junior independent work, and the senior departmental exam are the primary grades used. There is no specific formula or numerical score that determines honors. The faculty look at a student's academic achievements at Princeton holistically when deciding on honors.

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?

Answer:

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.