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

AC221 | Critical Thinking in Data Science | corecs |

AC295 / CS287r (Fall 2021 only) | corecs, 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 |

AM120 | Applicable Linear Algebra | corecs |

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

CS1 | Great Ideas in Computer Science | corecs |

CS10 / STAT10 | Elements of Data Science | corecs |

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

CS32 | Computational Thinking and Problem Solving | corecs, programming1 |

CS50 | Introduction to Computer Science | corecs, programming1 |

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

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

CS91R | Supervised Reading and Research | corecs |

CS96 | System Design Projects | corecs |

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

CS100 | corecs, advancedcs | |

CS105 | Privacy and Technology | corecs, advancedcs |

CS107 / CS207 / AC207 | Systems Development for Computational Science | corecs, programming1, advancedcs |

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

CS109A / STAT121A / AC209A | Data Science 1: Introduction to Data Science | corecs, programming1, computationandtheworld, advancedcs |

CS109B / STAT121B / AC209B | Data Science 2: Advanced Topics in Data Science | corecs, programming1, computationandtheworld, advancedcs |

CS120 | Introduction to Algorithms, Computability, and Complexity | corecs, formalreasoning, complimitations, algorithms, advancedcs |

CS121 | Introduction to Theoretical Computer Science | corecs, formalreasoning, complimitations, advancedcs |

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

CS126 | Fairness and Privacy: Perspectives of Law and Probability | corecs, computationandtheworld, advancedcs |

CS127 / CS227 | Cryptography | corecs, formalreasoning, advancedcs |

CS134 | Networks | corecs, formalreasoning, computationandtheworld, advancedcs |

CS136 | Economics and Computation | corecs, formalreasoning, computationandtheworld, advancedcs |

CS141 | Computing Hardware | corecs, systems, advancedcs |

CS143 | Computer Networks | corecs, advancedcs |

CS144R / CS244R | Networks Design Projects | corecs, advancedcs |

CS145 / CS245 | Networking at Scale | corecs, systems, advancedcs |

CS146 | Computer Architecture | corecs, systems, advancedcs |

CS148 / CS248 | Design of VLSI Circuits and Systems | corecs, advancedcs |

CS152 | Programming Languages | corecs, formalreasoning, advancedcs |

CS153 | Compilers | corecs, programming2, systems, advancedcs |

CS161 | Operating Systems | corecs, programming2, systems, advancedcs |

CS165 | Data Systems | corecs, systems, advancedcs |

CS171 | Visualization | corecs, computationandtheworld, advancedcs |

CS175 | Computer Graphics | corecs, computationandtheworld, advancedcs |

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

CS181 | Machine Learning | corecs, computationandtheworld, ai, advancedcs |

CS182 | Artificial Intelligence | corecs, computationandtheworld, ai, advancedcs |

CS183 | Foundations of Machine Learning | corecs, formalreasoning, ai, advancedcs |

CS187 | Introduction to Computational Linguistics and Natural-language Processing | corecs, computationandtheworld, ai, advancedcs |

CS189 | Autonomous Robot Systems | corecs, advancedcs |

CS191 | Classics of Computer Science | corecs, advancedcs |

CS205 | Computing Foundations for Computational Science | corecs, advancedcs |

CS208 | Applied Privacy for Data Science | corecs, advancedcs |

CS221 | Computational Complexity | corecs, formalreasoning, complimitations, advancedcs |

CS222 | Algorithms at the Ends of the Wire | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs |

CS223 | Probabilistic Analysis and Algorithms | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs |

CS224 | Advanced Algorithms | corecs, formalreasoning, algorithms, intermediatealgorithms, advancedcs |

CS226R | Topics in Theory for Society: Fairness and Validity | corecs, advancedcs |

CS228 | Computational Learning Theory | corecs, advancedcs |

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

CS229R | Topics in Theoretical Computer Science: Biology and Complexity | corecs, advancedcs |

CS234R | Topics on Computation in Networks and Crowds | corecs, formalreasoning, advancedcs |

CS236R | Topics at the Interface between Computer Science and Economics | corecs, computationandtheworld, advancedcs |

CS238 | Optimized Democracy | corecs, formalreasoning, computationandtheworld, advancedcs |

CS242 | Computing at Scale | corecs, systems, advancedcs |

CS243 | Advanced Computer Networks | corecs, systems, advancedcs |

CS246 | Advanced Computer Architecture | corecs, systems, advancedcs |

CS247R | Advanced Topics in Computer Architecture | corecs, systems, advancedcs |

CS249R | Tiny Machine Learning | corecs, computationandtheworld, advancedcs |

CS252R | Advanced Topics in Programming Languages | corecs, advancedcs |

CS260R | Projects and Close Readings in Software Systems | corecs, advancedcs |

CS261 | Research Topics in Operating Systems | corecs, systems, advancedcs |

CS262 | Introduction to Distributed Computing | corecs, systems, advancedcs |

CS263 | Systems Security | corecs, systems, advancedcs |

CS265 | Big Data Systems | corecs, systems, advancedcs |

CS271 | Topics in Data Visualization | corecs, advancedcs |

CS279R | Research Topics in Human-Computer Interaction | corecs, advancedcs |

CS281 | Advanced Machine Learning | corecs, computationandtheworld, ai, advancedcs |

CS 282R | Topics in Machine Learning | corecs, computationandtheworld, ai, advancedcs |

CS282BR | Topics in Machine Learning: Interpretability and Explainability | corecs, computationandtheworld, ai, advancedcs |

CS283 | Computer Vision | corecs, computationandtheworld, advancedcs |

CS286 | Multi-Robot Systems: Control, Communication, and Security | corecs, computationandtheworld, advancedcs |

CS287 | corecs, advancedcs | |

CS288 | AI for Social Impact | corecs, advancedcs |

CS289 | Autonomous Robot Systems | corecs, computationandtheworld, advancedcs |

CS290 | PhD Grad Cohort Research Seminar | |

CS299R | Special Topics in Computer Science | |

CS333 | Individual Risk | |

ES50 | Introduction to Electrical Engineering | corecs |

ES54 | Electronics for Engineers | corecs |

ES143 | Computer Vision | corecs |

ES150 | Probability with Engineering Applications | probability |

ES153 | Laboratory Electronics | corecs |

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 |

MATH154 | Probability Theory | corecs |

PHY123 | Instructional Physics Lab | corecs |

PHY160 | Introduction to Quantum Information | corecs |

STAT110 | Introduction to Probability | probability |

STAT195 | Statistical Machine Learning | corecs |

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