The following table summarizes the 2020 concentration requirements. Students who enrolled in courses at Harvard College for at least one term before Fall 2021 can choose between following the requirements below or the current requirements (comparison). A list of permitted course substitutions for the 2020 concentration requirements is further down the page.
Category | Number of required courses | Basic Concentration | Honors Concentration |
---|---|---|---|
Mathematics | (Total: 2-4 courses) | ||
Preparation | 0-2 | Math 1a and/or Math 1b as needed | same |
Linear algebra | 1 | Math 21b/22a/23a/25a/55a, AM 21b/22a | same |
Probability/statistics or Multivariable calculus | 1 | Stat 110 or Math 21a/22b/23b/23c/25b/55b, AM 21a | same |
Basic Software | 2 | 2 out of CS 50, CS 51, CS 61 | same |
Theory | 2 | CS 121 + CS 124 or other theory course | same |
Technical Electives | 4 (6 for honors) | 4 courses from list that includes CS 20, CS 51-289, STAT 110, AM 106, AM 107, and others. (at most one CS 91r) | 6 courses from same list |
Breadth Requirement | 2 tech electives must be CS with distinct penultimate digit 3-8 | 3 tech electives must be CS with distinct penultimate digit 3-8 | |
Tutorial | At most one CS91r is tech elective | same | |
Thesis | Not required | Not required but recommended |
from the 2020-21 handbook
REQUIREMENTS
There are four types of concentrations in Computer Science: Basic Concentration, Honors Concentration, Joint Concentration, and the Mind, Brain, Behavior track of the Computer Science concentration.
The number of credits required for each degree depends on the student’s mathematics placement. The ranges given here depend on whether the student starts mathematics at the Mathematics 1a, Mathematics 1b, or Mathematics 21a level. (With good planning it is also possible to earn a Computer Science degree starting with Mathematics Ma.) For example, a basic concentration requires 48 credits (12 courses), of which Mathematics 1a and/or Mathematics 1b can be waived, depending on placement, to reduce the number to 44 or 40 credits (11 or 10 courses).
In all of the requirements below, a student may replace a course with another course covering the same material at a more advanced level. For example, Mathematics 21b can be replaced with Mathematics 25a. For information on which courses are considered acceptable replacement, see our website or ask the Directors of Undergraduate Studies.
No student may reduce concentration requirements by omitting any other course other than Mathematics 1a or Mathematics 1b: any other required course not taken must be replaced by a similar course at a more advanced level.
The four concentration options share the following common requirement structure.
Joint concentrations with certain other fields are possible. This option is intended for students who have interests in the intersection of two fields, not simply in the two fields independently; for example, a combined concentration in computer science and linguistics might be appropriate for a student with a special interest in computational linguistics. Course requirements are the same as for the Requirements for Honors Eligibility, except that only three technical electives are required. These three technical electives must satisfy the breadth requirement as stated in Breadth Requirement, with the further provision that one semester of Computer Science 91r may be used to satisfy the breadth requirement for joint concentrations. Such courses may also be double-counted towards the requirements of the other field. Joint concentrations are not “double majors.” Joint concentrators should be interested in the overlap between two fields, not simply in both. A thesis in the intersection of the fields is required for joint concentrators, read by both concentrations. The student is typically awarded the minimum honors recommended by the two concentrations separately. These requirements, including the thesis requirement, are the same whether Computer Science is the primary field or the allied field of the joint concentration. Students interested in combined programs should consult the Directors of Undergraduate Studies at an early date and should work carefully with both concentrations to ensure all deadlines and requirements of both concentrations are met. Students with separate interests in more than one field should consider a secondary rather than a joint concentration, or simply using some of their electives to study one of the fields. We 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.
Students interested in addressing questions of neuroscience and cognition from the perspective of computer science may pursue a special program of study affiliated with the University-wide Mind, Brain, and Behavior Initiative, that allows them to participate in a variety of related activities. (Similar programs are available through the Anthropology, History and Science, Human Evolutionary Biology, Linguistics, Neurobiology, Philosophy, and Psychology concentrations.) Requirements for this honors-only program are based on those of the computer science Requirements for Honors Eligibility, as explained below:
Requirements for Mind, Brain, and Behavior Program: 12-14 courses (48-56 credits)
The following table summarizes some course substitutions that are allowed for the 2020 concentration requirements. It also includes the answers to some commonly asked questions about which courses satisfy certain requirements. If a course appears here as a valid substitution then you can use it in your plan of study instead of the original course. However, when you use a substitution, you should add a note saying so to the plan of study and mention it in your email to cs-dus submitting the plan of study. Courses change, and so can the allowed substitutions. If you have any question about a course that’s not listed here (or one that is) you can check with the DUSes. These substitutions are only valid for the computer science concentration. These substitutions are not valid for a secondary in CS, for which the requirements are listed here.
Course | Can be used in place of |
---|---|
Math 23b,23c, 25b, 55b, 110, 112, 113, 114, 115, 116, AM 105, 108, and 111 | Math 21a: Multivariate Calculus |
Math 22b (Fall 2019 and after) | Math 21a: Multivariate Calculus |
Math 23a, 25a, 55a,121,122, AM 120, 121 | Math 21b: Linear algebra |
Math 22a (Fall 2019 and after) | Math 21b: Linear algebra |
AM 22a: Solving and Optimizing | Math 21b: Linear algebra |
STAT 185: Introduction to Dimension Reduction | Math 21b: Linear algebra |
STAT 210: Probability Theory and Statistical Inference I | STAT 110: Probability |
STAT 220: Bayesian Data Analysis | STAT 110: Probability |
STAT 111: Introduction to Statistical Inference | STAT 110: Probability |
Math 154 Probability Theory | STAT 110: Probability |
ES 150: Introduction to Probability with Engineering Applications | STAT 110: Probability |
STAT S-110 (Summer course: intro to probability) | STAT 110: Probability |
ENSC S-138: (Summer course: intro to probability) | STAT 110: Probability |
CSCI S-20 (Summer course: intro to discrete math) (Currently Summer 2020 only) | CS 20: Discrete Mathematics for Computer Science |
CSCI S-50 (Summer course: intro to programming) (Currently Summer 2020 only) | CS 50: Introduction to Computer Science |
CSCI S-111 (Summer course intro to programming) | CS 50: Introduction to Computer Science |
MIT 6.849: Computational Geometry | Tech elective |
CS 1xx, 2xx | Tech elective, can satisfy breadth if penultimate digit 3-8 |
CS 20: Discrete Mathematics | Tech elective (no breadth) |
CS 91r: Supervised Reading and Research | Tech elective (one semester only) |
CS 96: System Design Projects | Tech elective (no breadth) |
STAT 110: Probability | Can be used as tech elective (not breadth) if not used to satisfy probability requirement. |
AM 106: Applied Algebra | Tech elective (no breadth): as of fall 2018 cannot be used as second theory course |
AM 120: Applied linear algebra and big data | Tech elective (no breadth) |
AM 121: Introduction to Optimization: Models and Methods | Tech elective (no breadth) |
AM 216: Inverse Problems in Science and Engineering | Tech elective (no breadth) |
AM 231 (ES 201): Decision Theory | Tech elective (no breadth) |
STAT 195: Statistical Machine Learning | Tech elective |
APCOMP 221 Critical Thinking in Data Science | Tech elective (no breadth) - equivalent to a CS 20x course |
ES 170: Engineering Quantum Mechanics | Tech elective (no breadth) |
SCI-6478 / ES 256: Informal robotics | Tech elective (no breadth) |
MIT 6.338j: Parallel Computing and Scientific Machine Learning | Tech elective |
MIT 6.809 / 21M.385: Interactive Music Systems | Tech elective (no breadth) |
MIT 8.370: Quantum Computation | Tech elective (no breadth) |
MIT 6.857: Computer and Network Security | Tech elective (no breadth) |
MIT 6.875: Cryptography and Cryptanalysis | Tech elective (no breadth) |
PHYS 160 | Tech elective (no breadth) |
STAT 121a/b , AC 209a/b | CS 109a/b: Introduction to Data Science |
CSCI S-109A (Summer course: intro to data science) | CS 109a: Introduction to Data Science I |
CS 221: Computational Complexity | CS 121: Introduction to Theoretical Computer Science |
AM 107: Graph Theory and Combinatorics | Tech elective (no breadth), also second theory course |
CS 229r courses: theory advanced topics | Sometimes satisfy second theory course requirement but check with DUS as topics vary from term to term |
MIT 6.841 / 18.405: Advanced Complexity Theory | CS 221: Computational Complexity |
MIT 6.854: Advanced Algorithms | CS 224: Advanced Algorithms |
PHY123, ES153: Laboratory Electronics | CS 14x |
CS 51: Abstraction and design in computation / CS 61: Systems Programming and Machine Organization | One of CS51/61 can satisfy breadth if student took CS50+51+61 |
MIT 6.172: Performance Engineering of Software Systems | CS 16x |
MIT 6.858: Comp Systems Security | CS 26x |
MIT 6.170: Software Studio | CS 17x |
MIT 6.837: Computer Graphics | CS 17x |
ES 143: Computer Vision | CS 17x |
AM 207: Stochastic Methods for Data Analysis, Inference and Optimization | CS 28x |
Study abroad courses | Case by case basis, check with DUS |
MIT 6.006: Introduction to Algorithms | Can not be used for concentration requirements |
AM 101: Statistical Inference for Scientists and Engineers | Can not be used for concentration requirements |
Math 157: Mathematics in the World | Can not be used for concentration requirements |
DPI 663: Tech and Innovation in Government | Can not be used for concentration requirements |
ES 21: The innovator's practice | Can not be used for concentration requirements |
CS 1: Great Ideas in Computer Science | Can not be used for concentration requirements |
CS courses with "n" suffix (for example CS90nar and CS90nbr) | Can not be used for concentration requirements |
MIT 6.042: Mathematics for Computer Science | As of Spring 2021, cannot be used for concentration requirements (CS 20 equivalent) |
MIT 6.00: Introduction to Computer Science and Programming | As of Spring 2021, cannot be used for concentration requirements (CS 50 equivalent) |
MIT 6.031: Software Construction | As of Spring 2021, cannot be used for concentration requirements (CS 51 equivalent) |
MIT 6.004: Computation Structures | As of Spring 2021, cannot be used for concentration requirements |
MIT 6.045: Automata, Computability, and Complexity Theory | As of Spring 2021, cannot be used for concentration requirements (CS 121 equivalent) |
MIT 6.840: Introduction to the Theory of Computation | As of Spring 2021, cannot be used for concentration requirements (CS 121 equivalent) |
MIT 6.046: Algorithms | As of Spring 2021, cannot be used for concentration requirements (CS 124 equivalent) |
MIT 6.036: Introduction to Machine Learning | As of Spring 2021, cannot be used for concentration requirements |
MIT 6.034: Artifical Intelligence | As of Spring 2021, cannot be used for concentration requirements (CS 182 equivalent) |
MIT 18.600 (18.440) Probability and random variables | As of Spring 2021, cannot be used for concentration requirements (STAT 110 equivalent) |
MIT 6.033: Computer Systems Engineering | As of Spring 2021, cannot be used for concentration requirements (CS 16x equivalent) |