Undergraduate Program FAQ
Becoming a CS Major
- Is the Computer Science BSE program ABET accredited?
- Do I need to make an appointment to see a Director of Undergraduate Studies to become a major?
- How early do I need to begin taking COS courses if I might want to be a CS major?
- I like computers, but I'd rather major in something like History or Mechanical Engineering
- Where can I get late-breaking information about the Computer Science Department?
Entry Sequence: COS 126/226/217
- I did a lot a programming in high school, so do I have to take 126?
- I did no programming at all in high school, so doesn't this put me at a disadvantage in 126?
- What scheduling issues should I consider when deciding whether to take 217 or 226 first?
- How do I decide if I can handle taking COS 226 and COS 217 at the same time?
- I took Integrated Science (ISC) in the Fall this year, but I decided not to continue in the spring. Do I have to retake COS 126?
- If I fail a prerequisite, can I take departmentals that depend upon this course?
- Beyond COS 126, COS 217, COS 226, what courses should I take in my first two years?
- I did not take any COS courses in my first year. Can I still be a CS major?
- I'm a spring-semester sophomore. By the end of the spring semester, COS 126 will be my only COS course. Can I still be a CS major?
- Can courses outside the COS department, such as ORF 309 count as area-specific departmentals (ie: theory, systems, applications)?
- What about substitutions?
- Can I take departmentals and prerequisites pass/D/fail?
- Can I take departmentals in my sophomore year?
- I placed out of some of those math and science courses, so I have time for more computer science. What should I do?
- Can I get departmental credit for a course taken at another school, for example during the summer?
- 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?
- Does the COS department require some minimum departmental GPA?
- How are departmental averages computed for awarding honors?
- Did you say "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?
- Can I study computer architecture in the EE department?
- There are often CS graduate students in my upper-level courses. How does this affect my grade?
- When do I have to make a final decision about whether to be AB or BSE?
Jobs & Life After Princeton
- Should I choose one degree over the other depending on what I want to do after graduation?
- I want to go to grad school, which courses should I take?
- So, should I apply to grad schools or interview for a job?
- I really think that I need to get a job. How can anyone afford to keep going to school at these rates?
- I worked at an internship at an awesome startup over the summer. Now they want me to stay on and take a leave of absence from Princeton. What should I do?
- I hear that Princeton imposes some rules on companies that do on-campus recruiting? Is this true?
The Computer Science Department chooses not to offer an ABET-accredited engineering program. In this regard, we are in the company of many of our peer computer science programs. COS BSE majors have had no disadvantage in their pursuit of post-graduate opportunities. If, however, it is important that you major in an ABET-accredited program of study (e.g. for eligibility for a particular outside scholarship), please take this into account when choosing your major. Five of the engineering departments do provide ABET accredited programs. The BSE Computer Science program is fully accredited under Princeton University’s overall accreditation.
Yes, please meet with Prof. Brian Kernighan - Advisers and Contacts Click on your degree to find additional instructions on how to declare your concentration AB'23 or BSE'24.
We expect CS majors to enter their junior year having taken the three prerequisite COS courses: 126, 217, and 226, beginning in their first year. It is possible to major in CS without taking any COS courses their first year, but it does involve an extra heavy load sophomore spring. Majoring in CS having had only COS 126 by the end of sophomore year is extremely difficult and allowed only in certain circumstances. Please see the Prerequisites page for details. Because of the difficulty of completing a late-start CS major, if you have even the slightest interest in CS as a major, we urge you to take COS 126 and at least 1 of (if not both of) COS 226 and 217 by the end of your sophomore year. In fact, we think it would be great if every student in the university took COS 126 by the end of the fall of their sophomore year so you all know what CS has to offer and how much more of it you would like to take (whether or not you want to become a CS major). Please refer to the Paths Through the Major for additional information. If you have discovered you have a strong interest in computer science late in your Princeton career, we recommend that you consider the Applications in Computing Certificate. This way, you can load up on as much CS as you can reasonably fit in to your schedule, but you are not constrained by the specifics of the CS major requirements.
Perhaps you should join the Certificate Program in Applications of Computing, which requires four CS courses beyond COS 126, plus a senior thesis (in your home department) or independent work that incorporates computing in some way. See the director of the program, JP Singh (room 324).
The department has an email list for CS majors and often sends announcements and reminders by email. Also, every CS senior has a mailbox on the 2nd floor of the Computer Science Building directly across from the "Tea Room". There are bulletin boards on the first and second floors for announcements for undergrads. The home page of the department website contains general department news and events.
Also, you can find more information here!
CS News Page: http://www.cs.princeton.edu/general/newsevents/news
It depends. There's more to computer science (and more to COS 126) than programming, and there's plenty of material in 126 to interest and challenge even experienced programmers. Nevertheless, if you are interested in trying to place out of COS 126 and into COS 217 or 226, please complete the placement exam, which is available online. Questions about course placement or the placement exam can be directed to the placement officer, Christopher Moretti, who can be found on the advisers page.
Not at all. The instructors in 126 expect to have students with a wide range of programming experience, and organize precepts accordingly. Much of the material in 126 will be new to everyone. Students have a choice of a 50 minute precept or 80 minute precept. The 80 minute precept is open to anyone who would like to be taught as a novice, with no or little CS background. The precepts are longer, giving time to complete precept exercises and answer basic questions.
Courses 217 and 226 are both offered both semesters. Take them in either order, but watch out for conflicts with critical courses in other departments, notably physics. You can take them at the same time, but that's likely to be a heavy load.
Taking COS 226 and COS 217 at the same time is a very difficult, heavy load. Taking them in either order (226 first and then 217, or 217 first and then 226) is much easier for almost every student. We use the following grade guidelines when making recommendations:
- Received an A in COS 126: Will be able to take COS 226 and COS 217 simultaneously.
- Received a B in COS 126: May struggle significantly if taking COS 226 and COS 217 simultaneously. Should take them in separate semesters.
- Received a C in COS 126: Will struggle significantly taking COS 226 and COS 217 in separate semesters. Should never take them in the same semester. A COS major is not recommended.
I took Integrated Science (ISC) in the Fall this year, but I decided not to continue in the spring. Do I have to retake COS 126?
Please see the First year placement officer for placement advice and evaluation. Normally, we try to do whatever is in the student's best educational interest. One option is placing the student directly into COS 217 or COS 226, if the student is prepared. Another option is taking COS 126 for a grade. (We would accept the programming assignments the student turned in as part of ISC, or the student could redo these from scratch.)
Students who flunk prerequisites cannot take departmentals that depend on them under any circumstances. While this policy may appear severe, we adhere to it because of bad experiences under previous policies.
All first year students take a writing seminar in the fall or spring. If you are a BSE candidate, you must fulfill the math, physics, and chemistry BSE requirements. Although typically chemistry is taken the first year, you can take it sophomore year. If you are an AB candidate,you must complete your math requirement for computer science. We advise you to also complete your AB science requirement and be well-along in completing your AB language requirement. Please visit the Paths Through the Major for additional information.
It is usually possible to major in COS as a BSE or an AB without taking any COS courses during your first year, especially if you have taken some Math. For example, if you are a BSE student and you took MAT 103 and MAT 104, PHY 103 and PHY 104, and CHM 203 in your first year, then you can take COS 126 plus one of MAT 201 or 203 in the sophomore fall, and COS 217 and COS 226 plus MAT 202 or 204 or EGR 154 in the spring. After that, you're on track to take 8 departmentals (two each semester) and a semester of independent work during your senior year.
If you are an AB student, you must complete MAT 103-104 by the end of the sophomore year. MAT 202 or 204 or EGR 154 should be completed by the end of the sophomore year, but can be deferred under very unusual circumstances until the fall semester of the junior year. You would take COS 126 in the sophomore fall, and 217 and 226 in the spring. After that, you're on track to take 8 departmentals (two each semester), your two semesters of junior independent work, and your senior thesis.
You may ask “but wait, didn’t you just recommend against taking COS 217 and COS 226 at the same time?" True. You can postpone one of COS 217 or COS 226 until junior fall, but you will want to find a departmental course (300 or above) that has only the one you’ve taken as prerequisite to also take junior fall. But be warned – there are only a few possibilities; most 300 and 400-level COS courses require both COS 217 and COS 226. AB students must be particularly careful because you must also find a fall junior independent work topic with less than the typical CS background.
I'm a spring-semester sophomore. By the end of the spring semester, COS 126 will be my only COS course. Can I still be a CS major?
It is incredibly difficult to become a CS major if you have taken COS 126 and no other courses by the end of your sophomore year. If you are a BSE, you should have the math background already (through MAT 202 or 204 or EGR 154). In your first semester in junior year, you would probably take COS 226, COS 217 and either COS 323 or COS 340. This is an extremely difficult load -- many students find doing both COS 226 and COS 217 simultaneously very difficult. Very few students can handle the even tougher load of COS 226 and 217 in conjunction with 323 or 340. Many students, particularly those with weaker math background, find COS 340 alone very challenging. Do not plan on having any life outside of computer science if this is the path you choose. If you can manage to get through that semester, you will still need to take 7 COS departmentals in the final 3 semesters at Princeton and you will also need to do one semester of independent work on top of that. If you plan to attempt this course of action, make an appointment to see the director of undergraduate studies and come with a full schedule of every COS course you plan to take (assume the COS schedule is the same as it has been the last few years). Only students with excellent performance in 126, exceptional reasons, motivation and other background will be allowed to pursue this kind of curriculum.
If you are an AB, the path is even more difficult. On top of all the hurdles above, you will have to do 2 semesters of junior independent work and a senior thesis. The junior independent work requirement is the most difficult requirement to fulfill having taken only COS 126 by the end of the sophomore year. There are very few projects that a COS major can engage in that satisfy the junior independent work criteria with so little experience. Entry in to the COS major at this point as an AB will only be allowed under truly exceptional circumstances. On top of demonstrating excellence in COS 126 and perhaps other computing background, having math background equivalent to MAT 202 or 204 or EGR 154, having exceptional reasons for making this late change, and exceptional motivation, you will have to demonstrate that you have a satisfactory idea for junior independent work in advance, the background to implement the idea, and a faculty adviser willing to supervise you. Make an appointment to see the director of undergraduate studies and come with a full plan of study.
If you are in this situation, we recommend that you consider the Applications in Computing Certificate instead of the CS major. This way, you can load up on as much COS as you can reasonably fit in to your schedule, but you are not constrained by the specifics of the CS Major requirements.
Can courses outside the COS department, such as ORF 309 count as area-specific departmentals (ie: theory, systems, applications)?
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.
We believe that the above list of courses is sufficiently flexible so that further substitutions will be allowed only in extreme situations.
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. (EGR 154 can be taken in place of MAT 202.) 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.
Yes, and in your first 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?
You could take 340 in the fall of your sophomore year, or COS 306 in the spring.
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.)
It is unnecessary to declare a course as a departmental unless it is a non-CS course or it requires approval from your adviser. For "normal" departmentals, the registrar and the CS department keep track for you.
No. As long as you pass your COS prerequisites and departmentals, you have satisfied the COS component of your degree.
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 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.
Yes! AB seniors must give an oral presentation of their independent work during 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?
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.
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.
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.
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.
Our experience is that employers and graduate schools do not care whether you're an AB or a BSE (and most don't understand the distinction).
Any time before graduation. As long as you have satisfied the requirements for either degree, you can switch (multiple times!) from one to the other just by filling out a form.
Quite possibly. Princeton alumni 10 years past graduation look back on their study abroad as one of the best parts of their undergraduate experience.
The most common semesters are junior fall and spring; sophomore spring and senior fall are possible (though a senior AB would have to plan thesis work very carefully). At most two courses can count as CS departmentals in a semester, and only one as a track (e.g., theory). We do not give CS credit for courses that look like courses in other Princeton departments that we would have credited if you took them at Princeton. For example, you can count ORF 309 as a CS departmental, but not an ORF 309 lookalike at another school. CS courses have to be pre-approved by the CS dep rep, but as a practical matter, what you find on the ground in a faraway place is often not what was in the catalog when you were choosing. We can almost always work through this. Non-CS courses have to be approved by the corresponding department at Princeton. You can do IW abroad, and if you're an AB, you have to. You can either find someone there to supervise and give us a report at the end, or you can be supervised by remote control from here. The former is probably better if you can manage it. If you're a BSE, it might be easier to finesse by not doing IW while abroad, but don't let bureaucratic considerations stop you from taking advantage of a good opportunity. Your grades are converted into "T for transfer" by Princeton, and are not used in computing GPA, honors, and the like.
Both. As when you applied to college, you should maximize your options, then make an informed choice at the appropriate time.
I really think that I need to get a job. How can anyone afford to keep going to school at these rates?
Graduate school in computer science doesn't cost anything; all the top schools give you a research assistantship or a teaching assistantship that covers full tuition *and* pays you a monthly stipend for living expenses. Salaries for people with advanced degrees in C.S. are not necessarily that much higher than what you might earn by just going directly to work with an A.B. or B.S.E. and getting career advancement and raises. The reason to do it is not just that you would have a different kind of career---in industry you'd have more choice about what kind of work to do, or you might go into academia---but also that it would better prepare you (as does Princeton) for a lifetime of teaching and learning.
I worked at an internship at an awesome startup over the summer. Now they want me to stay on and take a leave of absence from Princeton. What should I do?
This is a difficult and personal question. Different students in different situations will make different decisions. Here are some thoughts from some professors assuming that the student is about to enter his or her junior year.
My personal opinion is that one year off won't hurt you any, if you're having fun. It could be good experience. But more than one year is a bad idea. Work out a deal with your boss that even if your startup company takes off like a rocket, you can still have two 9-month leaves, Sept-May a year from now and Sept-May two years from now to finish your bachelor's degree, without giving up your stock options or whatever. Get it in writing. Then make sure you stick to it: come back, ace all your courses, do stellar independent work.
Ultimately, the decision has to be one that you're comfortable with, but let me weigh in with what I personal experience I have. I almost took a year off during undergrad as co-founder of a games company. We'd had one semi-successful product, and it was a case of either trying to go all-out or take the chance that the next product wouldn't carry the momentum we had. The issues for me were:
a) how much risk are you willing to take? what happens if the experience leaves you jaded and your time post-return just isn't as successful as you'd imagined?
b) if your parents are funding your education, are they really ok with it, or is it one of those conditional approvals but they secretly pray every night that you don't do it? If it's the latter, it's going to be a pretty rough trek, especially if things with the company start going sour.
c) are you socially ok with it? In the event that you return, will you be ok with your cohort having moved on, and having to watch them graduate as you now have classes with a whole new set of people?
Now, if the answer to all of those is "I can deal with it", then I'd say that Professor Appel's response spells things out pretty nicely. It's not a major issue as far as Princeton is concerned, and the upside can be quite good. My personal observation is that the really successful startup folks have a pretty comfortable position from which they can take risk. In other words, if you know the worst that can happen is a one-year delay in your education, and that your parents and friends will be supportive, it's often a good gamble. In case you're wondering what happened to me personally:
1st company - during undergrad. Decided to not take the year off. Stayed at home instead of on-campus for the first part of the year, and worked on the company as I went to class.
2nd company - had an amazingly good buyout offer, but would have required me to leave my tenure-track position at Princeton, with no real hope of return. Figured I could make money later, but wouldn't have the chance at tenure at Princeton again.
3rd company - had tenure by now, so I had the safety to be more risky. Sold the company and took a leave to pursue it.
From Princeton's side, taking a year off is not unusual. The reasons vary a lot, but wanting to be part of a startup is certainly one of them. A year away is fine, two years is harder though still manageable, and after that, it's unlikely that you would come back. If you're the next Zuckerberg, that might be just fine; otherwise, I think you would have given up sometime valuable. No matter what, you are likely to lose some of the connection with your cohort, though in return you learn a great deal and have a chance to make money if the company does well. (Do check out the arrangements very carefully if that's a consideration.)
Yes. You can find these on the Career Services On-Campus Recruiting Polices Web page. Of particular interest is the offer policy. Companies that recruit on campus cannot give you an offer that expires before a specific date. For 2019-2020 the restrictions are:
See Offer Policy for additional details.