Read the latest updates on coronavirus from Harvard University. For SEAS specific-updates, please visit SEAS & FAS Division of Science: Coronavirus FAQs

Course Listing

For a snapshot of courses being offered by Harvard School of Engineering over the next four years, visit our Muliti Year Course Planning tool.

Great Ideas in Computer Science

COMPSCI 1
2023 Spring

Henry Leitner
Tuesday, Thursday
10:30am to 11:45am

An introduction to the most important discoveries and intellectual paradigms in computer science, designed for students with little or no previous background. Explores problem-solving and data analysis using the Python programming language; presents an integrated view of computer systems, from switching circuits up through compilers and object-oriented design. Examines theoretical and practical limitations related to unsolvable and intractable computational problems, and the social and ethical dilemmas presented by such issues as software unreliability, algorithmic bias, and invasions of privacy.

Course Website

Discrete Mathematics for Computer Science

COMPSCI 20
2023 Spring

Rebecca Nesson
Monday, Wednesday, Friday
9:45am to 11:00am

Widely applicable mathematical tools for computer science, including topics from logic, set theory, combinatorics, number theory, probability theory, and graph theory. Practice in reasoning formally and proving theorems.

Course Website

Computational Thinking and Problem Solving

COMPSCI 32
2023 Spring

Michael Smith
Monday, Wednesday, Friday
12:45pm to 2:00pm

An introduction to computational thinking, useful concepts in the field of computer science, and the art of computer programming using Python. Significant emphasis is placed on class meetings and learning to use computers to solve complex, real-world problems. Concepts and techniques are introduced as they are needed to help solve the problems confronting us. Students will learn how to go from an ambiguous problem description to a running solution and will leave the class knowing how to instruct computers to do what they want them to do. Prior experience in computer science or computer programming is not necessary.

Course Website

Introduction to Computer Science

COMPSCI 50
2022 Fall

David J. Malan
Monday
1:30pm to 4:15pm

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (Two thirds of CS50 students have never taken CS before.) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project, optional hackathon, and campus-wide CS50 Fair. See cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Introduction to Computer Science (for students unable to take in the fall term)

COMPSCI 50
2023 Spring

David J. Malan, Carter Zenke
Tuesday
3:45pm to 6:30pm

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (Two thirds of CS50 students have never taken CS before.) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project, optional hackathon, and campus-wide CS50 Fair. See cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Introduction to Computer Science (for students unable to take in the fall term)

COMPSCI 50
2023 Spring

David J. Malan, Carter Zenke
Wednesday
9:00am to 11:45am

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (Two thirds of CS50 students have never taken CS before.) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project, optional hackathon, and campus-wide CS50 Fair. See cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Abstraction and Design in Computation

COMPSCI 51
2023 Spring

Stuart Shieber
Tuesday, Thursday
3:45pm to 5:00pm

Fundamental concepts in the design of computer programs, emphasizing the crucial role of abstraction. The goal of the course is to give students insight into the difference between programming and programming well. To emphasize the differing approaches to expressing programming solutions, you will learn to program in a variety of paradigms -- including functional, imperative, and object-oriented. Important ideas from software engineering and models of computation will inform these different views of programming.

Course Website

Abstraction and Design in Computation

COMPSCI 51
2023 Spring

Stuart Shieber
Tuesday, Thursday
12:45pm to 2:00pm

Fundamental concepts in the design of computer programs, emphasizing the crucial role of abstraction. The goal of the course is to give students insight into the difference between programming and programming well. To emphasize the differing approaches to expressing programming solutions, you will learn to program in a variety of paradigms -- including functional, imperative, and object-oriented. Important ideas from software engineering and models of computation will inform these different views of programming.

Course Website

Systems Programming and Machine Organization

COMPSCI 61
2022 Fall

Eddie Kohler
Monday, Wednesday, Friday
2:15pm to 3:30pm

Fundamentals of computer systems programming, machine organization, and performance tuning. This course provides a solid background in systems programming and a deep understanding of low-level machine organization and design. Topics include C and assembly language programming, program optimization, memory hierarchy and caching, virtual memory and dynamic memory management, concurrency, threads, and synchronization.

Course Website

Code, Data, and Art

COMPSCI 73
2022 Fall

Fernanda Viegas, Martin Wattenberg
Tuesday, Thursday
12:45pm to 2:00pm

A studio course where software is used as an artistic medium. The course is designed to expose students to current perspectives on the intersection of computer science and art, and to build skills that will allow them to express themselves creatively via software. An additional focus will be the role of data in modern artistic practice.

Course Website

Design of Useful and Usable Interactive Systems

COMPSCI 79
2022 Fall

Krzysztof Gajos
Monday, Wednesday
11:15am to 12:30pm

Formerly CS 179, the course covers skills and techniques necessary to design innovative interactive products that are useful, usable and that address important needs of people other than yourself. You will learn how to uncover needs that your customers cannot even articulate. You will also learn a range of design principles, effective creativity-related practices, and techniques for rapidly creating and evaluating product prototypes. You will also have several opportunities to formally communicate your design ideas to a variety of audiences. You will complete two large team-based design projects.

Course Website

Supervised Reading and Research

COMPSCI 91R
2022 Fall

Boaz Barak, Adam Hesterberg

Supervised individual study of advanced topics in computer science. A student wishing to enroll in Computer Science 91r must be accepted by a faculty member who will supervise the course work. Additional information and a form are available via https://harvardcs.info/forms/#cs-91r-form. The form must be filled out and signed by the student and faculty supervisor. Students writing theses may enroll in this course while conducting thesis research and writing.

Course Website

Supervised Reading and Research

COMPSCI 91R
2023 Spring

Boaz Barak, Stephen Chong, Adam Hesterberg

Supervised individual study of advanced topics in computer science. A student wishing to enroll in Computer Science 91r must be accepted by a faculty member who will supervise the course work. Additional information and a form are available via https://harvardcs.info/forms/#cs-91r-form. The form must be filled out and signed by the student and faculty supervisor. Students writing theses may enroll in this course while conducting thesis research and writing.

Course Website

System Design Projects: Machine Learning for Social Impact

COMPSCI 96
2023 Spring

Milind Tambe
Monday, Wednesday
3:45pm to 5:00pm

Student teams will work with real partner organizations to use machine learning techniques on a directly impactful project. Students will learn how to effectively explore data, create and iterate on real models, communicate and work with external partners, and incorporate ethics into their technical work. The class will include guest lectures from experts in various fields of the social impact tech space.

Course Website

Privacy and Technology

COMPSCI 105
2022 Fall

James Waldo
Tuesday, Thursday
12:45pm to 2:00pm

What is privacy, and how is it affected by recent developments in technology? This course critically examines popular concepts of privacy and uses a rigorous analysis of technologies to understand the policy and ethical issues at play. Case studies: database anonymity, research ethics, wiretapping, surveillance, and others. Course relies on some technical material, but is open and accessible to all students, especially those with interest in economics, engineering, political science, computer science, sociology, biology, law, government, philosophy.

Course Website

Systems Development for Computational Science

COMPSCI 107
2022 Fall

Fabian Wermelinger
Tuesday, Thursday
2:15pm to 3:30pm

This is a project-based course emphasizing designing, building, testing, maintaining and modifying software for scientific computing and data sciences. The class is focusing on a thorough introduction of the Python programming language with discussion of core concepts in object oriented programming as well as essential data structures useful in most programming tasks. Students will work in groups on a semester long project that combines the subjects discussed in class and applies them to the topic of automatic differentiation. Students will further learn how to work with SQL databases and how to integrate them in Python using SQLite3 and Pandas. After completion of this course, students will be able to adapt basic tools and techniques to design complex software systems aimed at solving computational and data processing problems in academic and industrial environments.

Course Website

Data Science 1: Introduction to Data Science

COMPSCI 109A
2022 Fall

Pavlos Protopapas, Natesh Pillai
Monday, Wednesday, Friday
9:45am to 11:00am

Data Science 1 is the first half of a one-year introduction to data science. The course will focus on the analysis of messy, real life data to perform predictions using statistical and machine learning methods. Material covered will integrate the five key facets of an investigation using data: (1) data collection - data wrangling, cleaning, and sampling to get a suitable data set;  (2) data management - accessing data quickly and reliably; (3) exploratory data analysis – generating hypotheses and building intuition; (4) prediction or statistical learning; and (5) communication – summarizing results through visualization, stories, and interpretable summaries. Part one of a two part series. The curriculum for this course builds throughout the academic year. Students are strongly encouraged to enroll in both the fall and spring course within the same academic year.

Course Website

Data Science 2: Advanced Topics in Data Science

COMPSCI 109B
2023 Spring

Pavlos Protopapas, Mark Glickman
Monday, Wednesday, Friday
9:45am to 11:00am

Data Science 2 is the second half of a one-year introduction to data science. Building upon the material in Data Science 1, the course introduces advanced methods for statistical modeling, representation, and prediction. Topics include multiple deep learning architectures such as CNNs, RNNs, transformers, language models, autoencoders, and generative models as well as basic Bayesian methods, and unsupervised learning. Students are strongly encouraged to enroll in both the fall and spring course within the same academic year. Part two of a two-part series.

Course Website

Introduction to Algorithms and their Limitations

COMPSCI 120
2022 Fall

Salil Vadhan, Adam Hesterberg
Tuesday, Thursday
9:45am to 11:00am

An introductory course in theoretical computer science, aimed at giving students the power of using mathematical abstraction and rigorous proof to understand computation. Thus equipped, students will be able to design and use algorithms that apply to a wide variety of computational problems, with confidence about their correctness and efficiency, as well as recognize when a problem may have no algorithmic solution. At the same time, they will gain an appreciation for the beautiful mathematical theory of computation that is independent of (indeed, predates) the technology on which it is implemented.

Course Website

Introduction to Theoretical Computer Science

COMPSCI 121
2022 Fall

Boaz Barak
Tuesday, Thursday
11:15am to 12:30pm

Computation occurs over a variety of substrates including silicon, neurons, DNA, the stock market, bee colonies and many others. In this course we will study the fundamental capabilities and limitations of computation, including the phenomenon of universality and the duality of code and data. Some of the questions we will touch upon include: Are there functions that cannot be computed? Are there true mathematical statements that can't be proven? Are there encryption schemes that can't be broken? Is randomness ever useful for computing? Can we use the quirks of quantum mechanics to speed up computation?

Course Website

Data Structures and Algorithms

COMPSCI 124
2023 Spring

Adam Hesterberg, Madhu Sudan
Monday, Wednesday
2:15pm to 3:30pm

Design and analysis of efficient algorithms and data structures. Algorithm design methods, graph algorithms, approximation algorithms, and randomized algorithms are covered.

Course Website

Fairness and Privacy: Perspectives from Law and Probability

COMPSCI 126
2022 Fall

Cynthia Dwork
Monday
9:00am to 10:15am

Students will learn to analyze and mitigate privacy loss, overfitting, and unfairness in data analysis. Principal techniques will come from cryptography, differential privacy, and the emerging areas of adaptive data analysis and algorithmic fairness. 

Course Website

Computing Hardware

COMPSCI 141
2023 Spring

Vijay Janapa Reddi
Monday, Wednesday
11:15am to 12:30pm

This course introduces fundamentals in designing and building modern information devices and systems that interface with the real world. It focuses on digital devices and systems, and it complements ENG-SCI 152, which focuses on devices and systems that use analog electronics. Topics include: combinational and sequential logic; computer architecture; machine code; and altogether the infrastructure and computational framework composing a MIPS processor. Consideration is given in design to interactions between hardware and software systems. Students will design application specific hardware for an embedded system.

Course Website

Computer Networks

COMPSCI 143
2023 Spring

H. Kung
Monday, Wednesday
12:45pm to 2:00pm

Computer networking has enabled the emergence of mobile and cloud computing, creating two of the most significant technological breakthroughs in computing. Computer networks have become even more critical these days since remote activities have become a new norm. We expect several focuses in the coming years. First, we will witness the emergence of 5G wireless mobile networks, which have already begun to replace the current 4G networks. Second, cybersecurity and privacy will receive unprecedented attention from the industry. Third, blockchain technology, which underlies Bitcoin, creates a new trusted network infrastructure for many new distributed applications. Fourth, distance learning and virtual meetings will push the limits of current multicast and network management technologies. In this course, students will learn basic networking protocols as well as these timely topics.

Course Website

Networking at Scale

COMPSCI 145
2023 Spring

Minlan Yu
Monday, Wednesday
2:15pm to 3:30pm

Modern networks have grown to extremely large scale (connecting millions of servers) and high speed (with Terabits per second) to meet the needs of a variety of cloud applications in business and society (e.g., social media, public health, and entertainment). In this course, we will study not only basic concepts in networking but also how these concepts get applied and extended for networking at scale. We will discuss the recent technology trends and design choices of performance, scalability, manageability, and cost faced by companies who own large-scale networks such as Amazon, Google, Microsoft, and Facebook. This course includes lectures and system programming projects. More information can be found at https://github.com/minlanyu/cs145-site.

Course Website

Computer Architecture

COMPSCI 146
2023 Spring

David Brooks
Friday
9:00am to 11:45am

Review of the fundamental structures in modern processor design. Topics include computer organization, memory system design, pipelining, and other techniques to exploit parallelism. Discussion of modern topics including GPU architectures, datacenter architecture, mobile/embedded SoC architectures, and machine learning acceleration as time permits. Emphasis on a quantitative evaluation of design alternatives and an understanding of performance and energy consumption issues.

Course Website

Programming Languages

COMPSCI 152
2023 Spring

Stephen Chong
Tuesday, Thursday
11:15am to 12:30pm

Comprehensive introduction to the principal features and overall design of both traditional and modern programming languages, including syntax, formal semantics, abstraction mechanisms, modularity, type systems, naming, polymorphism, closures, continuations, and concurrency. Provides the intellectual tools needed to design, evaluate, choose, and use programming languages.

Course Website

Data Systems

COMPSCI 165
2022 Fall

Stratos Idreos
Tuesday, Thursday
9:45am to 11:00am

We are in the big data era and data systems sit in the critical path of everything we do. We are going through major transformations in businesses, sciences, as well as everyday life - collecting and analyzing data changes everything and data systems provide the means to store and analyze a massive amount of data. This course is a comprehensive introduction to modern data systems. The primary focus of the course is on the modern trends that are shaping the data management industry right now: column-store and hybrid systems, shared nothing architectures, cache conscious algorithms, hardware/software co-design, main-memory systems, adaptive indexing, stream processing, scientific data management, and key-value stores. We also study the history of data systems, traditional and seminal concepts and ideas such as the relational model, row-store database systems, optimization, indexing, concurrency control, recovery and SQL. In this way, we discuss both how and why data systems evolved over the years, as well as how these concepts apply today and how data systems might evolve in the future. We focus on understanding concepts and trends rather than specific techniques that will soon be outdated - as such the class relies largely on recent research material and on a semi-flipped class model with a lot of hands-on interaction in each class.

Course Website

Visualization

COMPSCI 171
2022 Fall

Hanspeter Pfister
Monday, Wednesday
2:15pm to 3:30pm

An introduction to key design principles and techniques for visualizing data. Covers design practices, data and image models, visual perception, interaction principles, visualization tools, and applications. Introduces programming of web-based interactive visualizations.

Course Website

Computer Graphics

COMPSCI 175
2023 Spring

Steven Gortler
Tuesday, Thursday
12:45pm to 2:00pm

This course covers the fundamentals of 3D computer graphics using a modern shader-based version of OpenGL. Main topics include: geometric coordinate systems and transformations, keyframe animation and interpolation, camera simulation, triangle rasterization, material simulation, texture mapping, image sampling and color theory. The course also touches on ray tracing, geometric modeling and simulation-based animation.

Course Website

Engineering Usable Interactive Systems

COMPSCI 178
2023 Spring

Elena Glassman
Monday, Wednesday
3:45pm to 5:00pm

In this course, students learn critical techniques, concepts, and technologies for building usable interactive systems, alone and in pairs. Assignments provide hands-on experiences with different modern frameworks, platforms, and libraries while conceptual commonalities and distinctions are annotated and explained, e.g., PL concepts particularly common in UI engineering. Lectures cover relevant basic and advanced topics, such as human cognitive capabilities, iterative prototyping, human-AI interaction, and probabilistic input. The final project will require both front-end and back-end development, iterative prototyping with humans, and a final evaluation with target users. Designed for advanced undergraduates interested in a programming-heavy HCI course.

Course Website

Machine Learning

COMPSCI 181
2023 Spring

Weiwei Pan
Tuesday, Thursday
2:15pm to 3:30pm

Introduction to machine learning, providing a probabilistic view on artificial intelligence and reasoning under uncertainty. Topics include: supervised learning, ensemble methods and boosting, neural networks, support vector machines, kernel methods, clustering and unsupervised learning, maximum likelihood, graphical models, hidden Markov models, inference methods, and computational learning theory. Students should feel comfortable with multivariate calculus, linear algebra, probability theory, and complexity theory. Students will be required to produce non-trivial programs in Python.

Course Website

Artificial Intelligence

COMPSCI 182
2022 Fall

Ariel Procaccia, Stephanie Gil
Monday, Wednesday
12:45pm to 2:00pm

Artificial Intelligence (AI) is already making a powerful impact on modern technology, and is expected to be even more transformative in the near future. The course introduces the ideas and techniques underlying this exciting field, with the goal of teaching students to identify effective representations and approaches for a wide variety of computational tasks. Topics covered in this course are broadly divided into search and planning, optimization and games, and uncertainty and learning. Special attention is given to ethical considerations in AI and to applications that benefit society. For more information please see the course website.

Course Website

Introduction to Reinforcement Learning

COMPSCI 184
2022 Fall

Sham Kakade, Lucas Janson
Tuesday, Thursday
10:30am to 11:45am

Modern AI systems often need the ability to make sequential decisions in an unknown, uncertain, possibly hostile environment, by actively interacting with the environment to collect relevant data. Reinforcement Learning (RL) is a general framework that can capture the interactive learning setting and has been used to design intelligent agents that achieve high-level performance in challenging applications such as Go, computer games, robotic manipulation, health care, and education.

This course provides an introduction to reinforcement learning covering a range of problem formulations, algorithms, and theory. The four main themes of the course are (1) multi-armed bandits (best arm identification, UCB, contextual bandits, linear bandits) (2) Markov decision processes (Bellman equations/optimality, planning, UCB, unknown environments, finite/infinite horizon problems) (3) methods for large-scale systems (policy gradient methods, deepRL)  (4) selected further topics (linear quadratic regulators, Thompson sampling, provably efficient exploration, offline RL, imitation learning). The assignments will focus on a mix of algorithmic and statistical principles, along with their programming implementations. 

Course Website

Classics of Computer Science

COMPSCI 191
2023 Spring

Harry Lewis
Tuesday, Thursday
11:15am to 12:30pm

Papers every computer scientist should have read, from all areas of the field and dating from its origins to the present.

Course Website

AI Research Experiences

COMPSCI 197
2022 Fall

Pranav Rajpurkar
Wednesday, Friday
3:45pm to 5:00pm

Learn the practical skills required for applied deep learning work, including hands on experience with method development, model training at scale, and error analysis. You will learn the technical writing skills required for applied AI research, including experience composing different elements of a full research paper. Through structured assignments, you will tackle a scoped-out research project in a small team from conception to co-authoring a manuscript.

Course Website

High Performance Computing for Science and Engineering

COMPSCI 205
2023 Spring

Fabian Wermelinger
Tuesday, Thursday
11:15am to 12:30pm

With manufacturing processes reaching the limits in terms of transistor density on today’s computing architectures, efficient utilization of computing resources must exploit parallel execution to maintain scaling. The use of computers in academia, industry and society is a fundamental tool for (scientific) solving problems while the "think parallel" mindset of code developers is still lagging behind. The aim of this class is to introduce the student to the fundamentals of parallel programming and its relationship on computer architectures by introducing techniques to analyze performance and scaling of parallel applications. Various forms of parallelism are discussed and exploited through different programming models with focus on shared and distributed memory programming. The course is application oriented and includes a group project where students will apply topics discussed in class to a real application.

Course Website

Algorithms at the Ends of the Wire

COMPSCI 222
2022 Fall

Michael Mitzenmacher
Monday, Wednesday
9:45am to 11:00am

Covers topics related to algorithms for big data, especially related to networks and database systems. Themes include sketch-based data structures, compression, graph and link information, and information theory. Requires a major final research-based project.

Course Website

Probabilistic Analysis and Algorithms

COMPSCI 223
2023 Spring

Michael Mitzenmacher
Tuesday, Thursday
9:45am to 11:00am

Probabilistic techniques and tools for the design and analysis of algorithms. Designed for all first-year graduate students in all areas.

Course Website

Topics in Theoretical Computer Science: Analysis of Boolean Functions

COMPSCI 229BR
2022 Fall

Chin Ho Lee
Tuesday, Thursday
3:45pm to 5:00pm

Boolean functions are basic objects of study in theoretical computer science. This course will cover fundamental concepts and techniques in the analysis of Boolean functions, including influence and noise sensitivity, random restrictions, polynomial approximation, and hypercontractivity. We will see applications to various areas in theoretical computer science and mathematics, including circuit complexity, pseudorandomness, learning theory, and combinatorics.

Course Website

Topics in the Foundations of Machine Learning

COMPSCI 229BR
2023 Spring

Boaz Barak
Thursday
3:45pm to 6:30pm

This will be a graduate level course on recent advances and open questions in the foundations of machine learning and specifically deep learning. We will review both classical results as well as recent papers in areas including classifiers and generalization gaps, representation learning, generative models, adversarial robustness, out of distribution performance, and more.

This is a fast-moving area and it will be a fast-moving course. We will aim to cover both state-of-art results, as well as the intellectual foundations for them, and have a substantive discussion on both the “big picture” and technical details of the papers. In addition to the theoretical lectures, the course will involve a programming component aiming to get students to the point where they can both reproduce results from papers and work on their own research. This component will be largely self-directed and we expect students to be proficient in Python and in picking up technologies and libraries such as pytorch/numpy/etc on their own (aka “Stack Overflow oriented programming”).

Course Website

Topics in Theoretical Computer Science: Information Theory in CS

COMPSCI 229R
2022 Fall

Madhu Sudan
Monday, Wednesday
11:15am to 12:30pm

Information Theory originated in a seminal work of Shannon that attempted to formalize and quantify communication. This theory was mostly ignored by theoretical computer science till the 1990s when tools and concepts from Information Theory started to play a central role in powerful results in the field. Notable examples include the Parallel Repetition Theorem of Raz (1994), the development of the Information Complexity measure as a means of understanding Communication Complexity (2001). Today Information Theoretic measures and tools influence many aspects of CS theory including analysis of streaming algorithms, differential privacy and game theory.  This course will introduce the basic concepts in information theory and then sample topics of interest to CS theory where information theoretic tools play a central role.  See http://madhu.seas.harvard.edu/courses/Fall2022 for more information.

Course Website

Topics in Theoretical Computer Science: Biology and Complexity

COMPSCI 229R
2023 Spring

Leslie Valiant
Tuesday, Thursday
12:45pm to 2:00pm

Many processes in biology consist of step-by-step processes, whether in evolution, neural activity, development, or protein circuits. In many of these processes the actual steps taken by biological systems are not currently understood. Further, even the outcomes that are being realized by these processes are not well understood. In general, current understanding of most aspects of biology is not complete or specific enough to provide theories in which predictions can be made by analysis or computer simulation. Computer science is the study of step-by-step processes and of specifications of the outcomes that such processes can realize. For many computational outcome specifications, it is known or believed that no mechanism with feasible resources can realize them. Computer science therefore offers a top-down approach to understanding what could possibly be computed in biology, and how. In this course we shall pursue this computational complexity approach, whose origins go back to Turing and von Neumann. Emphasis will be on evolution and neuroscience, but other topics such as development will be also discussed. Research papers that address some aspect of the complexity question, whether by mathematical analysis, computer simulations or experimental findings will be discussed.

Course Website

Topics at the Interface between Computer Science and Economics

COMPSCI 236R
2022 Fall

Yiling Chen
Tuesday, Thursday
9:45am to 11:00am

Interplay between computation and economics. Rotating topics in mechanism design, strategy-aware machine learning, information elicitation and forecasting, computational social choice and other emerging areas. Readings in AI, theoretical CS, multi-agent systems, economic theory, and operations research.

Course Website

Optimized Democracy

COMPSCI 238
2023 Spring

Ariel Procaccia
Monday, Wednesday
11:15am to 12:30pm

The course examines the mathematical and algorithmic foundations of democracy, running the gamut from theory to applications. The goal is to provide students with a rigorous perspective on, and a technical toolbox for, the design of better democratic systems. Topics include computational social choice (identifying optimal voting rules), fair division with applications to political redistricting (avoiding gerrymandering) and apportionment (allocating seats on a representative body), sortition (randomly selecting citizens' assemblies), liquid democracy (transitively delegating votes), and weighted voting games (analyzing legislative power through cooperative game theory).

Course Website

Computing at Scale

COMPSCI 242
2022 Fall

H. Kung
Monday, Wednesday
3:45pm to 5:00pm

Machine learning accelerators have enabled a new era of special general computing. This course addresses computation scaling techniques required in implementing these accelerators over parallel, distributed and embedded computing platforms. Students will learn principled methods for mapping prototypical computations onto compute nodes of various hardware capabilities and interconnect patterns, as well as about the close interactions between computational algorithms, machine learning models, and computer organizations. After successfully taking this course, students will have acquired an integrated understanding of these issues, and can take on the challenging tasks of designing and using energy-efficient high-performance accelerators.

Course Website

Advanced Computer Networks

COMPSCI 243
2022 Fall

Minlan Yu
Monday, Wednesday
11:15am to 12:30pm

This is a graduate-level course on computer networks. Each year we select a subset of advanced topics in networked systems to showcase latest developments in the entire networking stack (hosts, NICs, switches), how networks interact with high-level applications, and how networks interact with the other system components such as compute and storage.

For Fall 2022, we will take machine learning as an example to study their needs for networking and the key challenges they bring to the network stack. The growth of machine learning applications is driven by system hardware and software advances. On the other hand, emerging machine learning applications also call for innovations in systems. A new trend in machine learning is to build increasingly large models (with hundreds of billions of parameters) for a wide range of tasks. This trend brings new challenges to networked systems: We now need to build large-scale distributed systems across the network to process such a large amount of data from various sources, train large models that run on thousands of GPUs/TPUs, and serve inference requests with high performance. In this course, we will study system challenges in machine learning and how to co-design networks and the other parts of the systems to meet the needs of machine learning applications. The course will include lectures, in-class presentations, paper discussions, and a research project.

More information of this course is at https://github.com/minlanyu/cs243-site

Course Website

Advanced Computer Architecture

COMPSCI 246
2023 Spring

David Brooks
Friday
9:00am to 11:45am

Review of the fundamental structures in modern processor design. Topics include computer organization, memory system design, pipelining, and other techniques to exploit parallelism. Discussion of modern topics including GPU architectures, datacenter architecture, mobile/embedded SoC architectures, and machine learning acceleration as time permits. Emphasis on a quantitative evaluation of design alternatives and an understanding of performance and energy consumption issues.

Course Website

Advanced Topics in Computer Architecture

COMPSCI 247R
2022 Fall

David Brooks
Friday
9:00am to 11:45am

Seminar course exploring recent research in computer architecture. Topics vary from year to year and will include subjects such as multi-core architectures, energy-efficient computing, reliable computing, and the interactions of these issues with system software. Students read and present research papers, undertake a research project.

Course Website

Tiny Machine Learning

COMPSCI 249R
2022 Fall

Vijay Janapa Reddi
Monday
12:45pm to 3:30pm

Tiny machine learning (TinyML) is defined as a fast-growing field of machine learning technologies and applications including hardware (dedicated integrated circuits), algorithms and software capable of performing on-device sensor (vision, audio, IMU, biomedical, etc.) data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery-operated devices. The pervasiveness of ultra-low-power embedded devices, coupled with the introduction of embedded machine learning frameworks like TensorFlow Lite for Microcontrollers, will enable the mass proliferation of AI-powered IoT devices. The explosive growth in machine learning and the ease of use of platforms like TensorFlow (TF) make it an indispensable topic of study for modern computer science and electrical engineering students.

Course Website

Advanced Topics in Programming Languages

COMPSCI 252R
2022 Fall

Nada Amin
Tuesday, Thursday
11:15am to 12:30pm

Seminar course exploring recent research in programming languages. Topics vary from year to year. Students typically read and present research papers, undertake a research project.

Course Website

Introduction to Distributed Computing

COMPSCI 262
2023 Spring

James Waldo
Monday, Wednesday
2:15pm to 3:30pm

An examination of the special problems associated with distributed computing such as partial failure, lack of global knowledge, asynchrony and coordination of time, and protocols that function in the face of these problems. Emphasis on both the theory that grounds thinking about these systems and in the ways to design and build such systems.

Course Website

Big Data Systems

COMPSCI 265
2023 Spring

Stratos Idreos
Tuesday, Thursday
9:45am to 11:00am

Big data is everywhere. A fundamental goal across numerous modern businesses and sciences is to be able to utilize as many machines as possible, to consume as much information as possible and as fast as possible. The big challenge is how to turn data into useful knowledge. This is a moving target as both the underlying hardware and our ability to collect data evolve. In this class, we discuss how to design data systems, data structures, and algorithms for key data-driven areas, including relational systems, distributed systems, graph systems, noSQL, newSQL, machine learning, and neural networks. We see how they all rely on the same set of very basic concepts and we learn how to synthesize efficient solutions for any problem across these areas using those basic concepts.

Course Website

Design, Technology, and Social Impact

COMPSCI 276
2023 Spring

Krzysztof Gajos
Tuesday, Thursday
9:45am to 11:00am

The course explores major areas of research and practice at the intersection of design, technology, and social impact. Specifically, we will explore the current state of research and interesting real-world examples related to the design, evaluation, and implementation of interventions comprising of technical, social, and organizational elements. We will also explore leading theories and methods for anticipating broader, indirect societal impacts of such intervention. Course activities will involve discussion of primary literature, some guided instruction, assignments, and a major research project.

Course Website

Research Topics in Human-Computer Interaction

COMPSCI 279R
2022 Fall

Elena Glassman
Monday, Wednesday
12:45pm to 2:00pm

Students will read and discuss systems HCI papers, i.e., papers published in human-computer interaction and related venues that build and evaluate novel systems, with a focus on systems that work especially well with (or clash against) human cognitive capabilities. Activities will also include lectures on key topics relevant to building and testing systems in HCI. As a final project, students will implement and evaluate components of one or more selected papers and present their findings in writing and orally in a conference-style format, as means to understand more deeply the processes behind systems HCI research.

Course Website

AI for Social Impact

COMPSCI 288
2022 Fall

Milind Tambe
Monday, Wednesday
2:15pm to 3:30pm

Recent years have seen AI successfully applied to societal challenge problems; indeed, it has a great potential to provide tremendous social good in the future. In this course, we will discuss the successful deployments and the potential use of AI in various topics that are essential for social good, including but not limited to health, environmental sustainability, public safety and public welfare. We will focus on challenges in “AI for Social Impact” (AI4SI), what makes projects successful, and why projects fail. A key part of this course will be to start AI4SI projects with local area non-profits.

Course Website

Seminar on Effective Research Practices and Academic Culture

COMPSCI 290A
2022 Fall

Madhu Sudan, John Girash
Friday
9:00am to 11:00am

This is a reading and discussion-based seminar designed for entering Computer Science Ph.D. students. This course prepares students to manage the difficult and often undiscussed challenges of Ph.D. programs through sessions on research skill building (e.g. paper reading, communication), soft skill building (e.g. managing advising relationships, supporting your peers), and academic culture (e.g. mental health in academia, power dynamics in scientific communities), as well as research and professional-oriented discussions. 

This is a full-year, 4-unit course, meeting once a week in each of the fall and the spring. Students must complete both terms of this course (parts A and B) within the same academic year to receive credit.

Course Website

Seminar on Effective Research Practices and Academic Culture

COMPSCI 290B
2023 Spring

This is a reading and discussion-based seminar designed for entering Computer Science Ph.D. students. This course prepares students to manage the difficult and often undiscussed challenges of Ph.D. programs through sessions on research skill building (e.g. paper reading, communication), soft skill building (e.g. managing advising relationships, supporting your peers), and academic culture (e.g. mental health in academia, power dynamics in scientific communities), as well as research and professional-oriented discussions. 

This is a full-year, 4-unit course, meeting once a week in each of the fall and the spring. Students must complete both terms of this course (parts A and B) within the same academic year to receive credit.

 

Course Website

Special Topics in Computer Science

COMPSCI 299R
2022 Fall

Krzysztof Gajos

Supervision of experimental or theoretical research on acceptable problems in computer science and supervision of reading on topics not covered by regular courses of instruction.

Course Website

Special Topics in Computer Science

COMPSCI 299R
2023 Spring

Krzysztof Gajos

Supervision of experimental or theoretical research on acceptable problems in computer science and supervision of reading on topics not covered by regular courses of instruction.

Course Website