The following is the list of CS courses that satisfy the various tags. This list is continuously updated, but once a plan of study has been approved, it will remain valid even if the course no longer satisfies a certain tag. The SEAS 4 year course plan contains the most up to date plan for courses to be offered in the near future.

Course number | Title | Tags | Notes |
---|---|---|---|

AC221 | Critical Thinking in Data Science | corecs, computationandtheworld | |

AC295 / CS2871r (Fall 2021 only) | Deep Learning for NLP | corecs, computationandtheworld, advancedcs | |

AM21A | Mathematical Methods in the Sciences | ||

AM22A | Solving and Optimizing | linearalgebra | |

AM22B | Integrating and Approximating | ||

AM106 | Applied Algebra | corecs | |

AM107 | Graph Theory and Combinatorics | corecs, formalreasoning, discretemath | |

AM115 | Mathematical Modeling | corecs, computationandtheworld | |

AM120 | Applicable Linear Algebra | corecs | |

AM121 | Introduction to Optimization: Models and Methods | corecs | |

AM158 / ES158 | Introduction to Optimal Control and Estimation | corecs | |

AM207 | Stochastic Methods for Data Analysis, Inference and Optimization | corecs | |

AM220 | Geometric Methods for Machine Learning | corecs, formalreasoning, advancedcs, secondary | |

CS1 | Great Ideas in Computer Science | corecs | |

CS10 / STAT10 | Elements of Data Science | corecs | No longer offered |

CS20 | Discrete Mathematics for Computer Science | corecs, formalreasoning, discretemath, secondary | |

CS32 | Computational Thinking and Problem Solving | corecs, programming1, secondary | Mutually exclusive with CS50 and CSCI S-111 |

CS37 | Incentives in the Wild: from Tanking in Sports to Mining Cryptocurrencies | corecs, computationandtheworld, secondary | |

CS50 | Introduction to Computer Science | corecs, programming1, secondary | Mutually exclusive with CS32 and CSCI S-111 |

CS51 | Abstraction and Design in Computation | corecs, programming2, secondary | |

CS61 | Systems Programming and Machine Organization | corecs, programming2, systems, secondary | |

CS73 | Code, Data, and Art | corecs, secondary | |

CS79 | Design of Useful and Usable Interactive Systems | corecs, secondary | |

CS90NAR | Applied Ethical and Governance Challenges in AI | ||

CS90NBR | Internet & Society: The Technologies and Politics of Control and CS | ||

CS90NCR | Law for Algorithms: A Research and Discussion Forum | ||

CS90NDR | Case Studies in Public and Private Policy Challenges of AI | ||

CS91R | Supervised Reading and Research | corecs | For MBB & Joint plans, counts as advancedcs |

CS96 | System Design Projects | corecs, secondary | |

CS100 | corecs, advancedcs, secondary | ||

CS1050 (formerly CS105) | Privacy and Technology | corecs, advancedcs, secondary | |

CS1070 / AC207 (formerly CS107) | Systems Development for Computational Science | corecs, programming1, advancedcs, secondary | |

CS108 | Intelligent Systems: Design and Ethical Challenges | corecs, advancedcs, secondary | |

CS1090A / STAT109A / AC209A (formerly CS109A) | Data Science 1: Introduction to Data Science | corecs, programming1, computationandtheworld, advancedcs, secondary | AKA STAT121A before 2022 |

CS1090B / STAT109B / AC209B (formerly CS109B) | Data Science 2: Advanced Topics in Data Science | corecs, programming1, computationandtheworld, advancedcs, secondary | AKA STAT121B until 2022 |

CS1200 (formerly CS120) | Introduction to Algorithms, Computability, and Complexity | corecs, formalreasoning, complimitations, algorithms, advancedcs, secondary | |

CS1210 (formerly CS121) | Introduction to Theoretical Computer Science | corecs, formalreasoning, complimitations, advancedcs, secondary | |

CS1240 (formerly CS124) | Data Structures and Algorithms | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs, secondary | |

CS1260 (formerly CS126) | Fairness and Privacy: Perspectives of Law and Probability | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS1270 / CS2270 (formerly CS127) | Cryptography | corecs, formalreasoning, advancedcs, secondary | |

CS1280 / AM122 (formerly CS128) | Convex Optimization and Applications in Machine Learning | corecs, formalreasoning, advancedcs, secondary | |

CS1360 (formerly CS136) | Economics and Computation | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS1410 (formerly CS141) | Computing Hardware | corecs, systems, advancedcs, secondary | |

CS1430 (formerly CS143) | Computer Networks | corecs, advancedcs, secondary | |

CS144R | Networks Design Projects | corecs, advancedcs, secondary | |

CS1450 (formerly CS145) | Networking at Scale | corecs, systems, advancedcs, secondary | |

CS1411 (formerly CS146) | Computer Architecture | corecs, systems, advancedcs, secondary | |

CS1480 (formerly CS148) | Design of VLSI Circuits and Systems | corecs, advancedcs, secondary | |

CS1520 (formerly CS152) | Programming Languages | corecs, formalreasoning, advancedcs, secondary | |

CS1530 (formerly CS153) | Compilers | corecs, programming2, systems, advancedcs, secondary | |

CS1610 (formerly CS161) | Operating Systems | corecs, programming2, systems, advancedcs, secondary | |

CS1650 (formerly CS165) | Data Systems | corecs, programming2, systems, advancedcs, secondary | |

CS1710 (formerly CS171) | Visualization | corecs, computationandtheworld, advancedcs, secondary | |

CS1750 (formerly CS175) | Computer Graphics | corecs, computationandtheworld, advancedcs, secondary | |

CS1780 (formerly CS178) | Engineering Usable Interactive Systems | corecs, programming2, computationandtheworld, advancedcs, secondary | |

CS179 | Design of Useful and Usable Interactive Systems | corecs, advancedcs, secondary | 2022 and earlier |

CS1810 (formerly CS181) | Machine Learning | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS1820 (formerly CS182) | Artificial Intelligence | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS1840 (formerly CS184) | Reinforcement learning | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS1870 (formerly CS187) | Introduction to Computational Linguistics and Natural-language Processing | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS1890 (formerly CS189) | Autonomous Robot Systems | corecs, advancedcs, secondary | |

CS1910 (formerly CS191) | Classics of Computer Science | corecs, advancedcs, secondary | |

CS1960 (formerly CS196) | Designing K–12 Computer Science Learning Experiences | corecs, secondary | |

CS1970 (formerly CS197) | AI Research Experiences | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS2050 (formerly CS205) | Computing Foundations for Computational Science | corecs, advancedcs, secondary | |

CS2080 (formerly CS208) | Applied Privacy for Data Science | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS2210 (formerly CS221) | Computational Complexity | corecs, formalreasoning, complimitations, advancedcs, secondary | |

CS2241 (formerly CS222) | Algorithms at the Ends of the Wire | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs, secondary | |

CS2242 (formerly CS223) | Probabilistic Analysis and Algorithms | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs, secondary | |

CS2243 (formerly CS224) | Advanced Algorithms | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs, secondary | |

CS2260 (formerly CS226R) | Topics in Theory for Society: Fairness and Validity | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS2280 (formerly CS228) | Computational Learning Theory | corecs, formalreasoning, complimitations, ai, advancedcs, secondary | |

CS229BR (Spring 2021 only) | Advanced Topics in the Theory of Machine Learning | corecs, computationandtheworld, advancedcs, secondary | |

CS229BR (Spring 2023 only) | Advanced Topics in the Theory of Machine Learning | corecs, formalreasoning, advancedcs, secondary | |

CS229CR (Spring 2023 only) | High Dimensional Probability: Spectral Graph Theory in CS | corecs, formalreasoning, advancedcs, secondary | |

CS229R (Spring 2023 only) | Topics in Theoretical Computer Science: Biology and Complexity | corecs, computationandtheworld, advancedcs, secondary | |

CS229R (Fall 2023 only) | Essential Coding Theory | corecs, formalreasoning, advancedcs, secondary | |

CS229R (Fall 2022 only) | Topics in Theoretical Computer Science: Information Theory | corecs, formalreasoning, advancedcs, secondary | |

CS2231 (formerly CS231) | Quantum Computation and Quantum Complexity | corecs, formalreasoning, advancedcs, secondary | |

CS2340 (formerly CS234R) | Topics on Computation in Networks and Crowds | corecs, formalreasoning, advancedcs, secondary | |

CS2360r (formerly CS236R) | Topics at the Interface between Computer Science and Economics | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS2370 (formerly CS237) | Economic Analysis as a Frontier of Theoretical Computer Science | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS2380 (formerly CS238) | Optimized Democracy | corecs, formalreasoning, computationandtheworld, advancedcs, secondary | |

CS2420 (formerly CS242) | Computing at Scale | corecs, systems, advancedcs, secondary | |

CS2430 (formerly CS243) | Advanced Computer Networks | corecs, systems, advancedcs, secondary | |

CS2411 (formerly CS246) | Advanced Computer Architecture | corecs, systems, advancedcs, secondary | |

CS2470r (formerly CS247R) | Advanced Topics in Computer Architecture | corecs, systems, advancedcs, secondary | |

CS2490r (formerly CS249R) | Tiny Machine Learning | corecs, systems, computationandtheworld, advancedcs, secondary | |

CS2520r (formerly CS252R) | Advanced Topics in Programming Languages | corecs, advancedcs, secondary | |

CS2540 (formerly CS254) | Formal Method for Computer Security | corecs, formalreasoning, advancedcs, secondary | |

CS2600r (formerly CS260R) | Projects and Close Readings in Software Systems | corecs, advancedcs, secondary | |

CS2610 (formerly CS261) | Research Topics in Operating Systems | corecs, systems, advancedcs, secondary | |

CS2620 (formerly CS262) | Introduction to Distributed Computing | corecs, systems, advancedcs, secondary | |

CS2630 (formerly CS263) | Systems Security | corecs, systems, advancedcs, secondary | |

CS2650 (formerly CS265) | Big Data Systems | corecs, systems, advancedcs, secondary | |

CS2710 (formerly CS271) | Topics in Data Visualization | corecs, advancedcs, secondary | |

CS2760 (formerly CS276) | Design, Technology, and Social Impact | corecs, advancedcs, secondary | |

CS2780 | Conceptualizing, Building, and Evaluating Usable Novel Interactive Systems | corecs, advancedcs, secondary | |

CS2790r (formerly CS279R) | Research Topics in Human-Computer Interaction | corecs, advancedcs, secondary | |

CS2810 (formerly CS281) | Advanced Machine Learning | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS2822r (formerly CS282R) | Topics in Machine Learning | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS2821r (formerly CS282BR) | Topics in Machine Learning: Interpretability and Explainability | corecs, computationandtheworld, ai, advancedcs, secondary | |

CS2831 (formerly CS283) | Computer Vision | corecs, computationandtheworld, advancedcs, secondary | |

CS2860 (formerly CS286) | Multi-Robot Systems: Control, Communication, and Security | corecs, computationandtheworld, advancedcs, secondary | |

CS2871 (formerly CS287) | corecs, advancedcs, secondary | ||

CS2880 (formerly CS288) | AI for Social Impact | corecs, computationandtheworld, advancedcs, secondary | |

CS2890 (formerly CS289) | Autonomous Robot Systems | corecs, computationandtheworld, advancedcs, secondary | |

CS2901 (formerly CS290) | PhD Grad Cohort Research Seminar | ||

CS2990r (formerly CS299R) | Special Topics in Computer Science | ||

CS3330 (formerly CS333) | Individual Risk | ||

ECON 2070 | A Computer Science Toolbox for Modern Economic Theory | corecs, formalreasoning, computationandtheworld, advancedcs | |

ES50 | Introduction to Electrical Engineering | corecs | Mutually exclusive with ES54 |

ES54 | Electronics for Engineers | corecs | Mutually exclusive with ES50 |

ES143 | Computer Vision | corecs, computationandtheworld | |

ES150 | Probability with Engineering Applications | probability | |

ES170 | Engineering Quantum Mechanics | corecs | |

ES256 | Informal Robotics | corecs | |

MATHMA | Introduction to Functions and Calculus I | ||

MATHMB | Introduction to Functions and Calculus II | ||

MATH1A | Introduction to Calculus | ||

MATH1B | Introduction to Calculus | ||

MATH21A | Multivariable Calculus | ||

MATH21B | Linear Algebra and Differential Equations | linearalgebra | |

MATH22A | Vector Calculus and Linear Algebra I | linearalgebra | |

MATH23A | Linear Algebra and Real Analysis I | linearalgebra | |

MATH23B | Linear Algebra and Real Analysis II | linearalgebra | |

MATH23C | Mathematics for Computation, Statistics, and Data Science | discretemath | |

MATH25A | Theoretical Linear Algebra and Real Analysis I | linearalgebra | |

MATH25B | Theoretical Linear Algebra and Real Analysis II | ||

MATH55A | Studies in Algebra and Group Theory | linearalgebra | |

MATH55B | Studies in Real and Complex analysis | ||

MATH101 | Sets, Groups and Topology | corecs, formalreasoning, discretemath | Class of 2026 and later: Mutually exclusive with CS20 and MATH152 |

MATH152 | Discrete Mathematics | corecs, formalreasoning, discretemath | Mutually exclusive with CS20 and MATH101 |

MATH154 | Probability Theory | probability | |

Neuro140 / Neuro240 | corecs | ||

Neuro1401 | Computational Cognitive Neuroscience: Building Models of the Brain | corecs | |

PHY123b / ES153 | Laboratory Electronics | corecs, systems | |

PHY160 | Introduction to Quantum Information | corecs | |

PHY260b / QSE 210b | Introduction to quantum information II | ||

STAT110 / STAT S-110 | Introduction to Probability | probability | |

STAT111 | Introduction to Statistical Inference | probability | |

STAT195 | Statistical Machine Learning | corecs, computationandtheworld | |

STAT210 | Probability Theory and Statistical Inference I | probability | |

STAT220 | Bayesian Data Analysis | probability | |

MIT 6.1040 / MIT 6.170 | Software Studio | corecs | |

MIT 6.1060 / MIT 6.172 | Performance Engineering of Software Systems | corecs, systems | |

MIT 6.4120 / MIT 6.804 / MIT 9.66 | Computational Cognitive Science | corecs | |

MIT 6.4550 / MIT 21M.385 / MIT 6.185 | Interactive Music Systems | corecs | |

MIT 6.5210 / MIT 6.854 | Advanced Algorithms | corecs, formalreasoning, algorithms, intermediatealgorithms | |

MIT 6.5310 / MIT 6.849 | Computational Geometry | corecs, formalreasoning | |

MIT 6.5410 / MIT 18.405 / MIT 6.841 | Advanced Complexity Theory | corecs, formalreasoning, complimitations | |

MIT 6.5610 / MIT 6.857 | Computer and Network Security | corecs | |

MIT 6.5620 / MIT 6.875 | Cryptography and Cryptanalysis | corecs, formalreasoning | |

MIT 6.5660 / MIT 6.858 | Comp Systems Security | corecs, systems | |

MIT 6.5940 | TinyML and Efficient Deep Learning Computing | corecs, computationandtheworld, ai | |

MIT 6.7320 / MIT 6.338j | Parallel Computing and Scientific Machine Learning | corecs | |

MIT 6.7900 / MIT 6.867 | Machine Learning | corecs, computationandtheworld, ai | |

MIT 6.8200 / MIT 6.484 | Computational Sensorimotor Learning | corecs, computationandtheworld, ai | |

MIT 6.8611 / MIT 6.8610 / MIT 6.806 | Advanced Natural Language Processing | corecs, computationandtheworld, ai | Mutually exclusive with MIT 9.19. Also 6.864. |

MIT 6.S898 (Fall 2023 only) | corecs, computationandtheworld, ai | ||

MIT 8.370 / MIT 18.435 / MIT 2.111 | Quantum Computation | corecs | |

MIT 9.19 | Computational Psycholinguistics | corecs, computationandtheworld | Mutually exclusive with MIT 6.806/6.864 |

MIT 21M.387 / MIT 6.S197 | Fundamentals of Music Processing | corecs, computationandtheworld | |

AIT Deep learning | corecs, computationandtheworld, ai, advancedcs | ||

AIT Algorithms and Data Structures | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs |

Courses that count towards the Computer Science core requirements.

A Programming course must include significant software construction and good engineering practice (e.g., invariants, assertions, testing).

A Formal Reasoning course should include significant formal reasoning about computer science as an integral part of the course material and student work. Such a course should define properties of some computational entities (e.g., computers, functional programming languages, auctions) and prove statements that apply to every entity with those properties. Formal reasoning courses instill in students the formal habits of mind that are central to academic computer science.

A Computational Limitations course covers basic computability and complexity theory. It exposes students to the beautiful results concerning the fundamental limits of universal (Turing-complete) model of computation, the equivalence of different computational models, and the impossibility or infeasibility of computing certain functions.

All Computational Limitations courses are also Formal Reasoning courses. The prototypical Computational Limitations courses are CS 120 and CS 121.

An Algorithms course covers introductory algorithms, algorithmic analysis, and data structures. It exposes students to fundamental algorithms for problems involving topics such as sorting, searching, and graphs, and to the basic toolkit for algorithmic analysis, such as recurrences for runtime.

All Algorithms courses are also Formal Reasoning courses. The prototypical Algorithms courses are CS 120 and CS 124.

An Intermediate Algorithms course, like an Algorithms course, covers algorithms, algorithmic analysis, data structures, and algorithmic analysis, but at a greater level of sophistication and covering more ground.

Intermediate Algorithms courses are also Formal Reasoning courses and Algorithms courses. The prototypical Intermediate Algorithms course is CS 124. Our honors requirements mention Intermediate Algorithms instead of Algorithms. We assume that a good fraction of honors students will take CS 120 and CS 124, and a good fraction will take CS 121 and CS 124.

A systems course should feature significant computer system development, i.e., the development of systems where interaction with and adaptation to other software or hardware interfaces is an important concern. Systems courses require that students complete extensive programming or computer system development assignments on their own or in small groups. These assignments must be in part open-ended and require the design of software or hardware components. Assignments must involve adapting to existing interfaces, and concern for performance, robustness, and/or security. Many systems courses will also satisfy a Programming tag.

A Computation and the World course should introduce rigorous methods for developing and evaluating computational models and systems that encapsulate, interact with, and adapt to aspects of the empirical world. This often involves computational modeling, or the distilled expression of properties of the complex world—of natural, human, social, and informational systems—in terms amenable to computation, and the formulation of computational objectives to capture positive interventions in that world. Ideally, Computation and the World courses should give students tools and metrics for constructing their own models and objectives, as well as specific ones that apply to specific phenomena. Discretion, selection, and design are fundamental to these courses (modeling complex systems in computation, or designing systems that interact with humans or the world, rarely has one right answer).

An Artificial Intelligence course should introduce, motivate, and analyze tools and techniques to model or replicate behaviors that in humans are thought of as requiring or exhibiting intelligence. These behaviors include representation of knowledge, reasoning, planning, language use, and sensory interpretation.

Most Artificial Intelligence courses are also Computation and the World courses, human behaviors being aspects of the empirical world. However, some AI courses that do not focus on the discretion, selection, design, and interaction fundamental to Computation and the World might not fulfill the corresponding tag. (Such courses might focus, instead, on mathematical foundations.)

An Advanced Computer Science course should correspond to computer science courses at an advanced undergraduate level or above (typically corresponding to courses with a course number CS 100 or above).