Life in the Computer Science Department

A Guide for the Humble Undergraduate

Tue Sep 22 07:33:23 EDT 2009

Q. What's new?

A. The course formerly known as COS 471 has been renumbered COS 375, since it is cross-listed with ELE 375. COS 475 is now cross-listed with ELE 475 and counts as a systems departmental.

TRA 301/COS 401, Introduction to Machine Translation, offered in Spring 2009, counts as an applications departmental.

Q. What's the bottom line?

A. Here are the requirements for undergrad concentrators in CS. There are three informal tracks, and you must take at least two departmentals from each of them. These are the tracks and the regular courses:

Theory: 340, 342 (MAT 306), 423, 433, 441, 451, 487
Systems: 306 (ELE 206), 318, 320, 333, 375, 425, 461, 475
Applications: 323, 325, 402, 424, 426, 429, 432, 435, 436, 444, 455, 479

By the way, if you're reading this on paper, you might take a quick look at the online version at http://www.cs.princeton.edu/academics/ugradpgm/life.php in case there are changes.

Q. What are the best sources of information about the computer science department?

A. As in any organization, the most useful information is available from people at the bottom and the most official information comes from those at the top. Your classmates can tell you the informal rules. If you need more formal information, check with your class advisor, who knows the rules applying to your class and is familiar with your record. Current class advisors are:

ClassDegreeAdvisor OfficePhoneE-mail
'10BSE Szymon Rusinkiewicz 4068-7479 smr@cs.princeton.edu
'10AB David Blei 4198-9907 blei@cs.princeton.edu
'11BSE Michael Freedman 3088-9179 mfreed@cs.princeton.edu
'11AB Bob Sedgewick 3198-4345 rs@cs.princeton.edu
'12BSE Boaz Barak 4058-0255 boaz@cs.princeton.edu
'12AB Bob Sedgewick 3198-4345 rs@cs.princeton.edu
'13BSE Andrea LaPaugh 3048-4568 aslp@cs.princeton.edu

The Departmental Representative, Brian Kernighan (room 311, bwk@cs.princeton.edu), is the guardian of the rules as they've evolved through the years, and the keeper of this document. If your class advisor is unavailable for an extended period, the Dep Rep can sometimes answer your questions and sign add/drop forms. Finally, Andrew Appel is the department Chair and Vivek Pai is the Associate Chair; between them, they have all the official answers.

Q. What are the department's course requirements?

A. Here, the answer varies depending upon the degree you are seeking. If you are a BSE, you must satisfy the engineering school requirements (physics, chemistry, etc.; see the Undergraduate Announcement) and take COS 126, 217, and 226 as prerequisites for the major. You must also take 8 departmentals. In addition, you must take one semester of independent work by signing up for COS 397 or 398 in your junior year, or COS 497 or 498 in your senior year. If you take two or more semesters of independent work, one may be counted as a departmental.

If you are an AB, you must satisfy the requirements of West College (language requirement, distribution requirements, etc.; see the Undergraduate Announcement) and take Math 103-104 and 200 (or 202 or 204), and COS 126, 217, and 226 as prerequisites for the major. In addition, you must take 8 departmentals. Lastly, you must do two semesters of junior independent work and a senior thesis.

For both AB and BSE, there are three informal tracks -- theory, systems, and applications -- and you must take at least two courses in each of these tracks. The tracks are as follows:

Theoretical computer science:
    340 Reasoning about Computation
    342 Introduction to Graph Theory (MAT 306)
    423 Theory of Algorithms
    433 Cryptography
    441 Programming Languages
    451 Computational Geometry
    487 Theory of Computation
Systems:
    306 Introduction to Logic Design (ELE 206)
    318 Operating Systems
    320 Compiling Techniques
    333 Advanced Programming Techniques
    375 Computer Architecture and Organization (ELE 375) [formerly COS 471]
    425 Database Systems
    461 Computer Networks
    475 Computer Architecture (ELE 475)
Applications:
    323 Computing for the Physical and Social Sciences
    325 Transforming Reality by Computer
    402 Artificial Intelligence
    424 Interacting with Data
    426 Computer Graphics
    429 Computer Vision
    432 Information Security
    435 Information Retrieval, Discovery and Delivery
    436 Human-Computer Interface Technology
    444 Electronic Auctions
    455 Introduction to Genomics and Computational Molecular Biology (MOL 455)
    479 Pervasive Information Systems

COS 495, Special Topics, is a departmental but may be associated with different tracks depending on content. Other one-time courses like the Princeton Laptop Orchestra (COS 414, 314), and The Efficient Universe (345) are also departmentals and may count in one of the tracks depending on level and content; 314/414 is Applications and 345 and 347 (Quantum Physics, Qubits, and Nanoscience, Fall 2007) are Theory. QCB 301 is an applications course.

If you plan to attend graduate school in CS, you are strongly encouraged to include core courses that are needed for successful admission to and progress in grad school, such as 318, 320, 340, 423, and 375.

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

A. No. You must take departmental prerequisites such as Math 103-104-200/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.

Q. I did a lot a programming in high school, so do I have to take 126?

A. 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, students can go directly to 217 and 226 with a score of 5 on the AP Computer Science B exam, or with permission of the instructor.

Q. I did no programming at all in high school, so doesn't this put me at a disadvantage in 126?

A. 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.

Q. I'm a sophomore and I just discovered CS. Can I still be a CS major?

A. It is possible to major in CS as a BSE without taking any CS courses during your freshman year, if you took enough math, physics and chemistry, for example MAT 103 and MAT 104, PHY 103 and PHY 104, and CHM 203. Then you can take 126 plus one of MAT 200, 202 or 204 in the sophomore fall, and 217 and 226 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.

It's even possible to pull this off if you don't discover CS until halfway through your sophomore year, again if you have done the math, physics and chemistry. Take COS 126 in your sophomore spring, then do 217 and 226 and three 300-level courses as a junior, leaving five departmentals and independent work as a senior. (We didn't say it would be easy, but it is possible.)

It's also possible to do this as an AB, this time assuming that you can manage your language and distribution requirements and have taken MAT 103 and 104. Then you can take one of MAT 200, 202 or 204 as a sophomore, along with 126 in the fall and 217 and 226 in the spring. After that, you're on track to take 8 departmentals (two each semester), two junior independent work projects, and your senior thesis.

It's barely possible to pull this off if you don't discover CS until halfway through your sophomore year, again if you have done enough math, say MAT 103. Take 126 and MAT 104 in your sophomore spring, then as a junior do 217 and 226, MAT 200, four 300-level courses and two JPs, leaving four departmentals and a thesis as a senior. (This is feasible but exceedingly tight.)

Q. I like computers, but I'd rather major in something like History or Mechanical Engineering.

A. 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, Ken Steiglitz (room 421).

Q. I'm a Computer Science major, and I'm interested in Applications of Computing too. Can I do the CS major and also the certificate program?

A. No. The same restriction applies to EE majors in the Computer Engineering track.

Q. How do I decide whether I should be a BSE or an AB?

A. It doesn't much matter. The AB program and the BSE program each require 3 prerequisites 126, 217, 226), at least MAT 200, and 8 departmentals. The differences are: (1) The AB program has 4 semesters of independent work in addition to your departmentals; the BSE program has only one semester. (2) For the AB program you have to take a language and distribution requirements; for the BSE program, you have to take more math, physics and chemistry and slightly fewer distribution requirements. (BSE's must take physics; AB's can take any lab science.) See the Undergraduate Announcement for more details.

Q. Doesn't that make the AB and BSE programs more similar than different?

A. Yes.

Q. Doesn't it matter whether my diploma has AB or BSE written on it?

A. Tua diploma lingua Latina scribetur, ergo nemo eam poterit legere. Plurimi adhibentes probabunt aequaliter gradum AB aut BSE.

Q. Say what?

A. Oh, sorry. Your diploma will be written in Latin, so nobody will be able to tell. 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).

Q. When do I have to make a final decision about whether to be AB or BSE?

A. 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.

Q. What courses count as departmentals?

A. Any CS course labeled above 300 can count except 397, 398, 497, and 498. One of 397, 398, 497, or 498 can count for BSE's, but only if the BSE student takes at least two of these four independent work courses. Any Math course numbered above 300 can count except courses whose contents duplicate other courses taken. Any ELE course numbered above 300 can count as a departmental, as can Philosphy 312.

Finally, in an effort to allow students to broaden their interests, one departmental may be chosen from the following list: MUS 314 (PLOrk, with the programming precept), ORF 307, 401, and 406, CHM 303, ECO 312, MOL 437, and Physics 300-level and above, if the course is appropriate to the program of the student and the student has the prior approval of the advisor.

CS graduate courses (500-level) typically do not count as departmentals, but there are exceptions; check with the instructor before signing up if this is a major concern.

Bear in mind that if you are thinking of grad school in CS, it's wise to make sure that you take the core CS curriculum as an undergrad. Graduate programs at most schools will be primarily interested in the CS courses you have taken.

Q. Can I take departmentals in my sophomore year?

A. 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.)

Q. What about substitutions?

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

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

A. 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.)

Q. 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?

A. 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.

Q. Can I study computer architecture in the EE department?

A. Computer Science 375 and 475 are taught by faculty in CS and EE. COS 375A is a lecture-only course. COS 375B, which is cross-listed as ELE 375, in addition has a hardware lab that satisfies the ABET design requirement; if you are interested in the lab, you should sign up for ELE 375.

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.

Q. When do I have to declare which courses are departmentals?

A. 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.

Q. What courses should I take in my first two years?

A. You should take 126, 217 and 226, freshman writing seminar, as well as your math, physics, and chemistry (BSE), or language and science (AB). BSE's can take chemistry as sophomores.

Q. Should I take 217 or 226 first?

A. It doesn't matter. 226 and 217 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.

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

A. Well, you could take 340 in the fall of your sophomore year, or COS 306 in the spring.

Q. What's my GPA?

A. There is no single answer. The university computes a GPA over all graded courses. The department looks at combinations of departmentals, technical courses, and independent work, as described in the next section.

Q. How are departmental averages computed for awarding honors?

A. 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. 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 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 used. There is no specific formula or numerical score that determines honors.

Q. Did you say "senior departmental exam?"

A. 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.

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

A. 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.

Q. If I fail a prerequisite, can I take departmentals that depend upon this course?

A. 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.

Q. What about independent work?

A. AB's are required to do two semesters of junior independent work and a senior thesis (which takes two semesters). BSE's are required to do one semester of independent work and are encouraged to do more, including a thesis if desired; the extra semesters count as a regular course.

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 department 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 Vivek Pai coordinates all independent work, and schedules public talks, checkpoints, and other requirements. Full information is here.

It is possible to do a project with a faculty member in another department if you have the approval of your advisor or Professor Pai.

Q. I have a great independent work idea that will make me rich and famous. Does the university own it?

A. So far as we know, the university has never claimed ownership of any independent work done by undergrads, though the official policy on intellectual property applies to "all faculty members, employees, and students." As a practical matter, even very fine ideas don't make you as rich and famous as you might think, so this should not be a concern.

Q. Can I continue my summer project at Yagoosoft Corp as independent work?

A. We strongly discourage undergraduates from undertaking independent work that is subject to confidentiality agreements with third parties or other similar restrictions, because it may violate University policy and it might limit the scope or nature of your future research at Princeton and elsewhere. Before entering into any such agreement, you must get an opinion about the intellectual property issues from the General Counsel's office and the Office of Technology Licensing.

Q. Can I take a semester abroad?

A. Yes. This program is administered by the Dean of the College. After you get information about the program from the Dean's office, and you choose a university to study at, bring that university's course information to the CS Departmental Representative to see if there are any courses that could substitute for one of your CS departmentals. If independent work is involved (e.g., for AB juniors), you will need to find a faculty advisor here, either as the direct advisor or as someone to assess work done for someone at the far end. You can take a year abroad as well, but this is more complicated, mainly because you have to find more technical courses that can count as departmentals. In any case, if you plan to study abroad, start planning early.

Q. Wh's the best time to see my advisor?

A. If your advisor has regular office hours, that's the best time. If not, you can make an appointment most easily by email. You are responsible for deadlines. In particular, if you want to drop a course, you must do so by the 9th week of classes. If you need a signature at the last minute because you procrastinated and your advisor is not available, you will not get help from other faculty members. Choose courses, ask questions, drop courses, etc., in a timely fashion.

Q. Where can I get more information?

A. We have an e-mail list for CS majors and often send announcements and reminders by mail. Also, every CS major has a mailbox on the 2nd floor of the Computer Science Building directly across from the "Tea Room". There is also a bulletin board there for announcements for undergrads.

Donna O'Leary (doleary@cs.princeton.edu, Room 210) is the Undergraduate Coordinator and has copies of information relevant to undergrads.

Q. What about the undergraduate council?

A. The Computer Science Undergraduate Council looks after your interests and provides feedback to the faculty about student interests and needs. The council members are:

NameClassE-mail
Ellen Kim'10 ellenkim@princeton.edu
Sajid Mehmood'10 smehmood@princeton.edu
Darren Sri-Jayantha'10 dsri@princeton.edu
David Yang'10 davidy@princeton.edu
2011 TBD

Q. How do I apply to grad school?

A. Clay Bavor '05 has written an excellent Guide to Applying to Graduate School; check out the advice there.

Q. What about clown school?

A. A Princeton CS degree has proven to be excellent preparation for admission to selective clown schools, especially when coupled with suitable humanities courses and extracurricular activities. Members of the current undergrad council can offer advice here.

Q. Can you help me find a job?

A. During the semester there are various jobs on campus for computer science majors. The department often needs student lab TA's for courses like COS 109, 116, 126, 217 and 226; see the head TA, Sajid Mehmood '10, who coordinates this.

OIT needs helpers trained in computing. And there are research projects in other departments that wish to hire students with programming skills. Over the summer, some professors hire students to work on research or teaching projects. Also, we receive inquiries from companies seeking to hire undergrads for summer work as well as after graduation. (For jobs after graduation, most companies go through Career Services; this is also a place to look for summer jobs.)

Donna O'Leary posts job announcements -- term-time, summer and post-graduation -- on the undergraduate bulletin board on the first floor. If you are interested in employment, check the bulletin board and the web site on a regular basis, or come by the Undergraduate Office (room 210) to see what's available.

The Keller Center for Innovation in Engineering Education has advice on internships.

Q. Is there life after computer science at Princeton?

A. Probably. Very roughly, 1/4 of each graduating class goes to computer companies or startups, 1/4 to consulting firms or financial institutions, 1/4 to grad school, and the rest disappear without leaving forwarding addresses. Many come back for reunions, however, so we know they are alive.

Q. Why is this Guide so long?

A. Whenever the Dep Rep is asked the same question for the fourth time, the answer goes here.