FAQ

Boaz Barak and Stephen Chong are the co-Directors of Undergraduate Studies for Computer Science. On this page are answers for some frequently asked questions.

You can email the DUSes at cs-dus@seas.harvard.edu with any question or come to the office hours of either Prof. Chong or Prof. Barak.

First years and pre-concentrators

What is CS?

We like to say that CS teaches you how to think more methodically and how to solve problems more effectively. As such, its lessons are applicable well beyond the boundaries of CS itself.

But CS is also, more generally, the study of information. How do you represent it? With what methods (aka algorithms) can you process it?

Perhaps the most liberal answer, though, is that CS is a modern “queen of the sciences” in the sense that it is not restricted to any particular domain, and can be applied to problems in all sorts of human endeavors including the natural and social sciences, law, government and medicine, and even the humanities. CS empowers you with tools and ideas that can be applied to practically any domain of interest to you, both in college and beyond.

What is CS not?

Contrary to popular belief, CS is not really about programming, even though you do learn how to program. Programming languages are tools that computer scientists use or create in order to solve problems of interest to them.

I am interested in concentrating CS: where do I learn more about it?

The resources section of this web page contains many useful sources of information. In particular, if you have any interest in CS, we recommend that you join the CS Undergraduate Piazza Forum is run by students for students, and is an excellent place to ask all sorts of questions about the concentration.

For more detailed information, the CS beginner’s guide is an extremely useful and detailed google doc that is written by CS concentrators. You can also be involved in clubs such as WiCS, HCS, and more.

Will everyone in CS know more than me?

No! Contrary to popular belief, not every Computer Scientist has been programming since childhood! In fact, 68% of the students who took CS50 in Fall 2017 had never taken a CS course before. Only 22% had taken one, and only 10% had taken two or more

I have some CS background: should I skip CS 50?

Many students benefit from CS 50 even if they have some programming experience or have taken a CS course. In particular, most students who took CS AP A in high school find it useful to take CS 50 as well. However, if you have significant academic and/or programming experience, you might consider going straight to more advanced courses such as CS 51, 61 or 121. You can look at the syllabi and webpages of these courses, as well as reach out to their instructors, to determine if you are ready for them. See the CS 50 website for more information.

Should I concentrate or do a secondary in CS even if I don't want to be a programmer?

Yes! CS concentrators head off in all sorts of directions after graduation.

Can I switch from my current concentration to CS?

Yes, so long as you still have time to satisfy the requirements. Even David J. Malan ‘99, who now teaches CS50, didn’t take his first CS course until his sophomore year, when he switched from Government to CS.

Take a look at the CS concentration requirements, and try filling in a Plan of Study to see if you can satisfy the course requirements.

What courses do you recommend I take in my first year?

The sample courses page of this website contains some common sample course schedules for CS concentration in their freshman and sophomore years. However, plenty of other combinations are possible!

What math courses are useful for CS?

We find that the most useful mathematical background for computer science includes linear algebra, probability/statistics, and discrete mathematics. Some areas such as optimization and machine learning, also use multivariate calculus.

At Harvard there is a variety of courses to achieve this background. Most CS concentrators take one of the Math 21, 22, 23, 25 or 55 series. The math department has a useful pamphlet detailing the difference between these courses. If you are up for it, we find that the emphasis on mathematical proofs in the Math 22 and above series can be very useful for courses in computer science. (In particular, Math 23a + 23c can be a good combination for CS concentrators.)

The most common way to get the background in probability/statistics and discrete mathematics is via STAT 110 and CS 20 respectively. We find that many students who are comfortable with mathematical proofs (especially those that have taken Math 23/25/55) are able to skip CS 20 and pick up the required background on discrete mathematics via self study.

The CS 121 background page contains information on the mathematical background that is useful for both CS 121 and CS 124, which are courses many CS concentrators take in their sophomore year.

Do any CS courses count for Gen Ed?

Yes! See, http://courses.my.harvard.edu/ to find the Computer Science courses that satisfy a Gen Ed requirement. At the time of this writing, you can satisfy Empirical & Mathematical Reasoning using CS1, CS20, CS50, or CS171. (Note that CS1 does not count toward a concentration or secondary in CS.) You can satisfy Culture & Belief using CS105.

How do I declare a concentration in computer science?

See the page Declaring CS Concentration.

It is your responsibility to make sure you follow the plan of study. If your plan changes, you can update and send us a new plan of study form at any time.

See the CS handbook entry for information about honors vs. basic tracks, the MBB FAQ for information about the Mind, Brain, and Behavior, and the secondary CS handbook entry for information about declaring a CS secondary.

Concentrators

What's the one motto I should follow to make sure I can graduate with a computer science concentration?

“It’s better to ask permission than forgiveness”. If you want any kind of exception, counting non-CS or non-Harvard courses towards CS, course credit for study abroad, or anything else, email us or come and talk to us in our office hours (see above).

Even if you know of someone that had a similar exception before, don’t assume that you can get one too without checking with us: individual conditions, policies, and course contents can all vary from term to term. It’s always better to ask permission ahead of time so you can plan your courses before the term begin, rather than finding out you need to change courses late into the term.

Will course X count towards Y?

See this page for an overview of which courses count towards which requirements, including which courses other than Harvard-CS courses can be used for the CS concentration.

How do I go about studying abroad?

See this page for information about study abroad. You should talk to the Office of International Education. Feel free to email us to ask about whether particular courses could count towards concentration credit. There are many strong computer science programs whose courses can be taken for concentration credit, but this depends on the details such as the exact syllabus of the course, the number of hours, what courses you’ve taken at Harvard, and more. You should not assume that a course will count without checking it with us beforehand. The final approval only comes after you have completed the term and we receive the transcripts from the institution you studied in.

Does CS require a thesis?

A thesis is not required for the non-Honors or Honors tracks. But to be eligible for the English honors of “High Honors” and “Highest Honors”, a thesis is required.

Is a thesis just a big program?

No, a thesis is a research paper. You might end up writing programs in order to evaluate your ideas, but those programs are ordinarily means to an end, not an end in themselves. See this page for more information and some examples.

Can I do research in CS?

Yes! Many CS courses offer opportunities for research, particularly 200-level courses. And you can take CS91r to work one-on-one with faculty. Students and faculty do research in all sorts of areas, including, but not limited to: Architecture, Artificial Intelligence, Computational and Data Science, Computational Neuroscience, Economics & Computation, Graphics, Vision, Visualization, & Interaction, Information & Society, Programming Languages, Systems, Networks, & Databases, Theory of Communication, and Theory of Computation.

For more information see the Research page.

How do I get involved in research?

This page contains a wealth of information on getting involved with research, and in particular the list of all faculty office hours and research interests. Taking advanced courses, such a CS 2xx course, is often a good way to get exposed to research in various areas. Your faculty advisor can also be a good source of information on this topic.

How do I do a "CS 91r" Computer Science project course?

A CS 91r needs to be project where you learn to “think like a scientist” and take part in scientific study. While it may involve coding, it should have a clear research purpose and your role in the project should not be as just a developer. After you find a suitable advisor (either a Computer faculty, or potentially other Harvard faculty doing a project that intersects with computer science), you need to fill out together with the advisor the CS91r form and have your advisor send it to us at cs-dus@seas.harvard.edu

What is the difference between CS91r and independent study?

A CS 91r is a directed research project with an advisor, and is letter graded. An Independent Study is a non-departmental course that has an advisor but is not letter graded. As the name implies, a student in an independent study project is expected to work with little supervision. See this page for more information.

What is the difference between English honors and Latin honors?

There are two types of honors for undergraduates: Latin honors (summa, magna, cum laude) are determined by the College and English honors (highest honors, high honors, honors) are determined by concentrations. More precisely, the Latin honors are: “summa cum laude in a field”, “magna cum laude with Highest Honors in a field”, “magna cum laude in a field”, “cum laude in a field”, and “cum laude on the basis of the student’s overall record”.

See the Degree programs page for information about requirements for English honors in Computer Science.

See this page for information about the requirements for Latin honors. Latin honors are determined based on your overall GPA and your English honors.

How do I graduate with Honors in CS?

Take an honors-track CS program and have a sufficiently high concentration GPA.

Honors-track CS programs include the Honors program, joint concentrations, and the Mind, Brain, and Behavior Program. The Honors program differs from the basic program by requiring six technical electives instead of four.

How do I graduate with High Honors in CS?

High Honors are decided by faculty vote. You must ordinarily write an “excellent thesis” and have a sufficiently high concentration GPA to be considered.

See the Degree programs page for more information about requirements for English honors in Computer Science.

How do I graduate with Highest Honors in CS?

Highest Honors are decided by faculty vote. You must ordinarily write an “outstanding thesis” and have a sufficiently high concentration GPA to be considered.

See the Degree programs page for more information about requirements for English honors in Computer Science.

Should I activate Advanced Standing and get a fourth-year master’s degree in CS?

Maybe! If you are eligible for Advanced Standing and think you could handle eight (mostly) 200-level CS courses, it’s a great opportunity. Your bachelor’s degree doesn’t even need to be in CS, so long as you can still satisfy the prerequisites for the 200-level courses. See Other Academic Opportunities in the Handbook for Students.

Is CS part of Mind, Brain, and Behavior?

Yes! See Computer Science under Fields of Concentration in the Handbook for Students.

Does a grade of SAT in CS50 count toward concentration or secondary credit?

Yes, a SAT in CS50 would count toward concentration or secondary credit.

Secondary concentration

How do I declare a secondary in computer science?

You need to take four CS courses, which are either CS 50,51,61 or CS courses numbered 100 or higher. Note that the courses must be Harvard CS courses: no substitutions are allowed. See here for the full requirements. Follow these instructions to declare a secondary concentration on my.harvard.edu.

Can course X count towards a secondary in Computer Science?

Non-Harvard CS courses, MIT courses, and study abroad courses, do not count towards a secondary in computer science. See here fore more details.

Joint concentration

What are the requirements for a joint concentration?

The requirements for a CS joint concentration are the same regardless of whether CS is the primary or allied concentration. Course requirements are the same as for the Requirements for Honors Eligibility, except that only three technical electives are required. See this page for more details.

A thesis in the intersection of the fields is required for joint concentrators, which will be read by both concentrations. Note that a joint concentration should be at the intersection of the two fields. If you happen to be interested in both fields (as opposed to the intersection of the fields) consider doing a secondary in one of the fields instead.

We strongly advise all our joint concentrators to make sure that they satisfy the non-joint requirements for at least one concentration, in case they are unable to complete a thesis.