Harvard SEAS logo

Tags for computer science courses

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

Tag Definitions

Programming 1 and 2

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

Formal Reasoning

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.

Computational Limitations

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.

Algorithms

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.

Intermediate Algorithms

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.

Systems

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.

Computation and the World

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

Artificial Intelligence

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

Advanced Computer Science

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