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

Henry Leitner

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

Elements of Data Science

COMPSCI 10
2021 Spring

Hanspeter Pfister, Xiao-Li Meng

Data science combines data, statistical analysis, and computation to gain insights and make useful inferences and predictions. This course will take a holistic approach to helping students understand the key factors involved, from data collection and exploratory data analysis to modeling, evaluation, and communication of results. Working on case studies and a final project in teams will provide students with hands-on experience with the data science process using state-of-the-art tools. Emphasis will be given to the strengths, trade-offs, and limitations of each method to highlight the importance of merging analytical skills with critical quantitative thinking.

Course Website

Discrete Mathematics for Computer Science

COMPSCI 20
2021 Spring

Rebecca Nesson

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

Introduction to Computer Science

COMPSCI 50
2020 Fall

David Malan

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets inspired by the arts, humanities, social sciences, and sciences. Course culminates in a final project. Designed for concentrators and non-concentrators alike, with or without prior programming experience. Two thirds of CS50 students have never taken CS before. Among the overarching goals of this course are to inspire students to explore unfamiliar waters, without fear of failure, create an intensive, shared experience, accessible to all students, and build community among students.

Course Website

Introduction to Computer Science (for SEAS concentrators unable to take in fall term)

COMPSCI 50
2021 Spring

David Malan, Brian Yu

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets inspired by the arts, humanities, social sciences, and sciences. Course culminates in a final project.

Course Website

Abstraction and Design in Computation

COMPSCI 51
2021 Spring

Stuart Shieber

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

Eddie Kohler, Minlan Yu

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

Supervised Reading and Research

COMPSCI 91R
2020 Fall

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

Supervised Reading and Research

COMPSCI 91R
2021 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

COMPSCI 96
2020 Fall

Krzysztof Gajos
Monday, Wednesday
01:30pm to 02:45pm

Cooperative formative research, design, development, and testing of a sizable and realistic sociotechnical system, i.e., a solution to a real-world problem that includes both technical and human components. Students work as a team with a client on a real-world open-ended problem, and gain experience in Computer Science (problem definition, software development, iterative design), and in other fields relevant to the problem. Both student participation in the classroom and effective teamwork outside the classroom are stressed. The specific challenge for Fall 2020 will be announced on the course website.

Course Website

Privacy and Technology

COMPSCI 105
2020 Fall

James Waldo
Tuesday, Thursday
01:30pm to 02:45pm

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

David Sondak
Tuesday, Thursday
12:00pm to 01:15pm

This is a project-based course emphasizing designing, building, testing, maintaining and modifying software for scientific computing. Students will work in groups on a number of projects, ranging from small data-transformation utilities to large-scale systems. Students will learn to use a variety of tools and languages, as well as various techniques for organizing teams. Most important, students will learn to fit tools and approaches to the problem being solved.

Course Website

Data Science 1: Introduction to Data Science

COMPSCI 109A
2020 Fall

Pavlos Protopapas, Kevin A. Rader, Christopher Tanner
Monday, Wednesday, Friday
09:00am to 10:15am

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 1: Introduction to Data Science

COMPSCI 109A
2020 Fall

Pavlos Protopapas, Kevin A. Rader, Christopher Tanner
Monday, Wednesday, Friday
03:00pm to 04:15pm

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

Pavlos Protopapas, Mark Glickman, Christopher Tanner

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 data wrangling, data visualization, and statistical modeling and prediction. Topics include big data and database management, interactive visualizations, nonlinear statistical models, and deep learning. Part two 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

Introduction to Theoretical Computer Science

COMPSCI 121
2020 Fall

Madhu Sudan, Adam Hesterberg
Tuesday, Thursday
10:30am to 11:45am

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

Michael Mitzenmacher, Adam Hesterberg

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 of Law and Probability

COMPSCI 126
2020 Fall

Cynthia Dwork, Martha Minow
Monday, Wednesday
09: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 newly emerging areas of adaptive data analysis and algorithmic fairness.

Course Website

Computing Hardware

COMPSCI 141
2021 Spring

Vijay Janapa Reddi

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

H. Kung
Monday, Wednesday
04:30pm to 05:45pm

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

Minlan Yu

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/cs145spring21.

Course Website

Computer Architecture

COMPSCI 146
2021 Spring

David Brooks

Review of the fundamental structures in modern processor design. Topics include computer organization, memory system design, pipelining, and other techniques to exploit parallelism. Emphasis on a quantitative evaluation of design alternatives and an understanding of timing issues.

Course Website

Programming Languages

COMPSCI 152
2021 Spring

Nada Amin

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

Operating Systems

COMPSCI 161
2021 Spring

James Mickens

This course focuses on the design and implementation of modern operating systems. The course discusses threads, processes, virtual memory, schedulers, and the other fundamental primitives that an OS uses to represent active computations. An exploration of the system call interface explains how applications interact with hardware and other programs which are concurrently executing. Case studies of popular file systems reveal how an OS makes IO efficient and robust in the midst of crashes and unexpected reboots. Students also learn how virtualization allows a physical machine to partition its resources across multiple virtual machines. Class topics are reinforced through a series of intensive programming assignments which use a real operating system.

Course Website

Visualization

COMPSCI 171
2020 Fall

Hanspeter Pfister
Wednesday
09:00am to 10:15am

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

Visualization

COMPSCI 171
2020 Fall

Hanspeter Pfister
Wednesday
04:30pm to 05:45pm

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

Steven Gortler

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

Design of Useful and Usable Interactive Systems

COMPSCI 179
2021 Spring

Elena Glassman

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

Machine Learning

COMPSCI 181
2021 Spring

David Parkes, Finale Doshi-Velez

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

Milind Tambe, Boaz Barak
Monday, Wednesday
12:00pm to 01:15pm

Artificial Intelligence (AI) is an exciting field that has had a tremendous impact on life and society. The goal of this course is to introduce the ideas and techniques underlying the design of computer systems that make intelligent decisions based on data. Topics covered in this course are broadly divided into 1) planning and search algorithms, 2) probabilistic reasoning and representations, and 3) machine learning (although, as we will see, it is impossible to separate these ideas so neatly). Within each area, the course will also present practical AI algorithms being used in the real-world, with a special focus on the recent emergence of applications in "AI for Social Good", i.e., areas of direct societal benefit. The class will include lectures connecting the models and algorithms we discuss to applications in areas such as public health, conservation, social work, education, public safety and also discuss ethical challenges faced in applications of AI in society.

Course Website

Introduction to Computational Linguistics and Natural-language Processing

COMPSCI 187
2020 Fall

Stuart Shieber
Tuesday, Thursday
10:30am to 11:45am

Natural-language-processing applications are ubiquitous: Alexa can set a reminder if you ask; Google Translate can make emails readable across languages; Watson outplays world Jeopardy champions; Grover can generate fake news, and recognize it as well. How do such systems work? This course provides an introduction to the field of computational linguistics, the study of human language using the tools and techniques of computer science, with applications to a variety of natural-language-processing problems such as these. You will work with ideas from linguistics, statistical modeling, and machine learning, with emphasis on their application, limitations, and implications. The course is lab- and project-based, primarily in small teams, and culminates in the building and testing of a question-answering system.

Course Website

Computing Foundations for Computational Science

COMPSCI 205
2021 Spring

David Sondak

Computational science has become a third partner, together with theory and experimentation, in advancing scientific knowledge and practice, and an essential tool for product and process development and manufacturing in industry. Big data science adds the ‘fourth pillar’ to scientific advancements, providing the methods and algorithms to extract knowledge or insights from data. The course is a journey into the foundations of Parallel Computing at the intersection of large-scale computational science and big data analytics. Many science communities are combining high performance computing and high-end data analysis platforms and methods in workflows that orchestrate large-scale simulations or incorporate them into the stages of large-scale analysis pipelines for data generated by simulations, experiments, or observations. This is an applications course highlighting the use of modern computing platforms in solving computational and data science problems, enabling simulation, modeling and real-time analysis of complex natural and social phenomena at unprecedented scales. The class emphasizes on making effective use of the diverse landscape of programming models, platforms, open-source tools, computing architectures and cloud services for high performance computing and high-end data analytics.

Course Website

Computational Complexity

COMPSCI 221
2021 Spring

Madhu Sudan

A quantitative theory of the resources needed for computing and the impediments to efficient computation. The models of computation considered include ones that are finite or infinite, deterministic, randomized, quantum or nondeterministic, discrete or algebraic, sequential or parallel.

Course Website

Algorithms at the Ends of the Wire

COMPSCI 222
2020 Fall

Michael Mitzenmacher
Tuesday, Thursday
12:00pm to 01:15pm

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

Advanced Topics in the Theory of Machine Learning

COMPSCI 229BR
2021 Spring

Boaz Barak

This will be a graduate level course on recent advances and open questions in the theory 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 and 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 on their own (aka “Stack Overflow oriented programming”). We will ensure students have access to the appropriate computational resources (i.e., GPUs).

This Harvard seminar will be coordinated with a "sister seminar" at MIT, taught by Ankur Moitra. Details will be announced later.

Course Website

Topics in Theoretical Computer Science: Biology and Complexity

COMPSCI 229R
2021 Spring

Leslie Valiant

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 on Computation in Networks and Crowds

COMPSCI 234R
2021 Spring

Nicole Immorlica

Topics on the design and analysis of algorithms, processes, and systems related to crowds and social networks. Readings in AI, theoretical CS, machine learning, social science theory, economic theory, and operations research.

Course Website

Optimized Democracy

COMPSCI 238
2021 Spring

Ariel Procaccia

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

H. Kung

Scaling computation over parallel and distributed computing systems is a rapidly advancing area of research receiving high levels of interest from both academia and industry. The objective can be for high-­‐performance computing and energy-­‐efficient computing (“green” data center servers as well as small embedded devices). In this course, students will learn principled methods of mapping prototypical computations used in machine learning, the Internet of Things, and scientific computing onto parallel and distributed compute nodes of various forms. These techniques will lay the foundation for future computational libraries and packages for both high-­‐performance computing and energy-­‐efficient devices. To master the subject, students will need to appreciate the close interactions between computational algorithms, software abstractions, and computer organizations. After having successfully taken this course, students will acquire an integrated understanding of these issues. The class will be organized into the following modules: Big picture: use of parallel and distributed computing to achieve high performance and energy efficiency; End-­‐to-­‐end example 1: mapping nearest neighbor computation onto parallel computing units in the forms of CPU, GPU, ASIC and FPGA; Communication and I/O: latency hiding with prediction, computational intensity, lower bounds; Computer architectures and implications to computing: multi-­‐cores, CPU, GPU, clusters, accelerators, and virtualization; End-­‐to-­‐end example 2: mapping convolutional neural networks onto parallel computing units in the forms of CPU, GPU, ASIC, FPGA and clusters; Great inner loops and parallelization for feature extraction, data clustering and dimension reduction: PCA, random projection, clustering (K-­‐means, GMM-­‐EM), sparse coding (K-­‐SVD), compressive sensing, FFT, etc.; Software abstractions and programming models: MapReduce (PageRank, etc.), GraphX/Apache Spark, OpenCL and TensorFlow; Advanced topics: autotuning and neuromorphic spike-­‐based computing.  Students will learn the subject through lectures/quizzes, programming assignments, labs, research paper presentations, and a final project.  Students will have latitude in choosing a final project they are passionate about. They will formulate their projects early in the course, so there will be sufficient time for discussion and iterations with the teaching staff, as well as for system design and implementation. Industry partners will support the course by giving guest lectures and providing resources.  The course will use server clusters at Harvard as well as external resources in the cloud. In addition, labs will have access to state-­‐of-­‐the-­‐art IoT devices and 3D cameras for data acquisition. Students will use open source tools and libraries and apply them to data analysis, modeling, and visualization problems.

Course Website

Advanced Computer Architecture

COMPSCI 246
2021 Spring

David Brooks

The contents and course requirements are similar to those of Computer Science 146, with the exception that students enrolled in Computer Science 246 are expected to undertake a substantial course project.

Course Website

Tiny Machine Learning

COMPSCI 249R
2020 Fall

Vijay Janapa Reddi
Monday, Wednesday
10:30am to 11:45am

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

Nada Amin
Tuesday, Thursday
12:00pm to 01:15pm

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

Fall 2020: We will explore programming languages for artificial intelligence. Programming Languages drive the way we communicate with computers, including how we make them intelligent and reasonable. In this advanced topic course, we will look at artificial intelligence broadly construed from the point of view of programming languages. We gain clarity of semantics, algorithms and purpose. Topics include differentiable programming, neuro-symbolic systems, constraint and probabilistic programming, interpretable AI and more. Reading and discussion will be based on a selection of papers, suggested collectively. Grading is based on participation, presentation and final project.  For more course information can be found at http://pl-ai-seminar.seas.harvard.edu/

Course Website

Advanced Topics in Programming Languages

COMPSCI 252R
2021 Spring

Stephen Chong

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

Fall 2020: We will explore programming languages for artificial intelligence. Programming Languages drive the way we communicate with computers, including how we make them intelligent and reasonable. In this advanced topic course, we will look at artificial intelligence broadly construed from the point of view of programming languages. We gain clarity of semantics, algorithms and purpose. Topics include differentiable programming, neuro-symbolic systems, constraint and probabilistic programming, interpretable AI and more. Reading and discussion will be based on a selection of papers, suggested collectively. Grading is based on participation, presentation and final project.  For more course information can be found at http://pl-ai-seminar.seas.harvard.edu/

Course Website

Research Topics in Operating Systems

COMPSCI 261
2021 Spring

Eddie Kohler

An introduction to operating systems research. Paper-based seminar course that introduces students to the state of the art in systems research through historical and quantitative lenses. Students will read and discuss research papers and complete a final research project.

Course Website

Introduction to Distributed Computing

COMPSCI 262
2021 Spring

James Waldo

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

Systems Security

COMPSCI 263
2020 Fall

James Mickens
Tuesday, Thursday
12:00pm to 01:15pm

This course explores practical attacks on modern computer systems, explaining how those attacks can be mitigated using careful system design and the judicious application of cryptography. The course discusses topics like buffer overflows, web security, information flow control, and anonymous communication mechanisms such as Tor. The course includes several small projects which give students hands-on experience with various offensive and defensive techniques; the final, larger project is open-ended and driven by student interests.

Course Website

Topics in Data Visualization

COMPSCI 271
2021 Spring

Johanna Beyer

This course covers advanced topics in data visualization. Over the course of the semester, we will examine seminal works and recent state-of-the-art research in information visualization, scientific visualization and visual analytics. Students will work on a semester-long visualization project that will allow them to visualize their own data sets and write a short paper about their project. We will employ peer-feedback and formal design critiques to analyze each other's work.

Course Website

Research Topics in Human-Computer Interaction

COMPSCI 279R
2020 Fall

Elena Glassman
Monday, Wednesday
12:00pm to 01:15pm

This year only: Students will read and discuss HCI papers about computers working with---or clashing against---the strengths and weakness of human cognition, e.g., the positive and negative impacts of AI recommendation systems and the impact of interruptions on continuity of thought. Activities will include a small number of lectures, discussion of relevant literature in each field, and a project, in which students will work together in groups to design and carry out HCI research.

Course Website

Multi-Robot Systems: Control, Communication, and Security

COMPSCI 286
2020 Fall

Stephanie Gil
Monday, Wednesday
03:00pm to 04:15pm

The ability to connect devices over long distances, via the internet, changed our world.  The second phase of this revolution, that we are still living in today, came about when these devices became wireless.  Now we are at the cusp of a new phase of this evolution where devices are connected, wireless, and controlled – i.e. the robot revolution.

Multi-robot systems are becoming more pervasive; from future autonomous vehicle fleets, to drones, to manufacturing robots.  As a result, the question of how to control, coordinate, and secure these systems has been a growing topic in the robotics literature in recent years.  In this seminar-style course we will do a deep dive into this topic by reviewing classic and recent results in multi-agent planning and control literature.  We will cover a wide gamut of applications from control of groups of flying drones, to decision making in autonomous car networks, to space exploring CubeSats.

This class will treat both the theory and the practical applications behind multi-robot systems. Students with mathematical inclinations and exposure to graph theory, probability theory, linear algebra, and algorithms will derive the most benefit from this course.

Course Website

AI for Social Impact

COMPSCI 288
2021 Spring

Milind Tambe

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

PhD Grad Cohort Research Seminar

COMPSCI 290
2020 Fall

David Brooks

In lieu of typical on-campus interactions that normally occur during the first year of the PhD program, this course provides an opportunity for entering CS PhD students to engage with the Harvard CS community and to build a cohort among the entering PhD students. The class is intended for first-year students and students transferring into the Harvard CS PhD program. The class will include an introduction to the community through virtual talks and interactive Q&As with regular course guests. We plan to bring in a broad mixture of CS faculty, current PhD students, and PhD alumni. The course will also include an off-line component primarily consisting of select broad-interest CS research readings and writing assignments.

Course Website

Special Topics in Computer Science

COMPSCI 299R
2020 Fall

David Brooks

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

Leslie Valiant

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