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
2020 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 using high and low-level programming languages; presents an integrated view of computer systems, from switching circuits up through compilers and GUI 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 and invasions of privacy.

Course Website

Elements of Data Science

COMPSCI 10
2020 Spring

Hanspeter Pfister, Joseph Blitzstein, Xiao-Li Meng, Liberty Vittert
Monday, Wednesday, Friday
03:00pm to 04:15pm

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

Rebecca Nesson
Monday, Wednesday, Friday
12:00pm to 01:15pm

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
2019 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, and software engineering. Languages include C, Python, and SQL plus students' choice of: HTML, CSS, and JavaScript (for web development); Java or Swift (for mobile app development); or Lua (for game development). 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 concentrators unable to take in fall term)

COMPSCI 50
2020 Spring

David Malan, Brian Yu
Tuesday
03:00pm to 05:45pm

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, and software engineering. 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
2020 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
2019 Fall

Eddie Kohler, Michael Smith
Tuesday, Thursday
01:30pm to 02:45pm

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

Stephen Chong, Boaz Barak

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

Stephen Chong, Boaz Barak

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

CS+X: Software Engineering in the Arts and Humanities

COMPSCI 100
2019 Fall

Douglas Lloyd
Monday, Wednesday
01:30pm to 02:45pm

Introduction to applications of computer science (including web technologies, visualization, and database design) to domains in the arts and humanities. Emphasis on principles of software engineering and best practices, including code reviews, source control, and testing. Languages include JavaScript and SQL. Students work in teams to design and implement solutions to problems proposed by faculty from departments across campus. Offered jointly with Yale University.

Course Website

Privacy and Technology

COMPSCI 105
2019 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

Intelligent Systems: Design and Ethical Challenges

COMPSCI 108
2020 Spring

Milind Tambe
Monday, Wednesday
03:00pm to 04:15pm

For centuries, people have imagined smart machines in fictional stories.  Computer systems now communicate in speech and text, learn, negotiate, and work in teams (with people and other systems).  These intelligent-systems capabilities raise questions about the impact of such systems on people and societies. This course introduces the basic techniques of AI in the context of (science) fiction imaginings and ethical challenges.  It examines the roles of design and of policy in reducing potential negative consequences. The course presumes a basic programming ability, but is accessible to concentrators in the humanities and social sciences as well as science and engineering.

Course Website

Data Science 1: Introduction to Data Science

COMPSCI 109A
2019 Fall

Pavlos Protopapas, Kevin A. Rader, Christopher Tanner
Monday, Wednesday
01:30pm to 02:45pm

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

Pavlos Protopapas, Mark Glickman, Christopher Tanner
Monday, Wednesday
01:30pm to 02:45pm

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

Boaz Barak, Madhu Sudan
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
2020 Spring

Michael Mitzenmacher
Monday, Wednesday
12:00pm to 01:15pm

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

Cynthia Dwork, Martha Minow
Monday
09:00am to 10:10am

Students will learn to analyze and mitigate privacy loss, unfairness, and lack of statistical validity, in data analysis. Principal techniques will come from cryptography, differential privacy, and the newly emerging areas of adaptive data analysis and fairness in machine learning.

Course Website

Cryptography

COMPSCI 127
2020 Spring

Boaz Barak
Tuesday, Thursday
12:00pm to 01:15pm

Cryptography is as old as human communication itself, but has undergone a revolution in the last few decades. It is now about much more than "secret writing" and includes seemingly paradoxical notions such as communicating securely without a shared secret, and computing on encrypted data. In this challenging but rewarding course we will start from the basics of private and public key cryptography and go all the way up to advanced notions such as fully homomorphic encryption and software obfuscation. This is a proof-based course that will be best appreciated by mathematically mature students.

Course Website

Economics and Computation

COMPSCI 136
2019 Fall

David Parkes
Tuesday, Thursday
09:00am to 10:15am

The interplay between economic thinking and computational thinking as it relates to electronic commerce, social networks, collective intelligence and networked systems. Topics covered include: game theory, peer production, reputation and recommender systems, prediction markets, crowd sourcing, network influence and dynamics, auctions and mechanisms, privacy and security, matching and allocation problems, computational social choice and behavioral game theory. Emphasis will be given to core methodologies, with students engaged in theoretical, computational and empirical exercises.

Course Website

Computing Hardware

COMPSCI 141
2020 Spring

Vijay Janapa Reddi
Tuesday, Thursday
01:30pm to 02:45pm

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
2019 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 important technological breakthroughs in computing of the past decade.  We expect three major focuses in the next ten years. First, we will witness the emergence of 5G wireless mobile networks, which will begin to replace the current 4G networks as early as 2020, enabling new applications and paradigm shifts in edge computing, such as uploading sensor data for AI applications everywhere. Second, cyber security, and in particular its relation to networking and supply chain security for 5G network infrastructure, will receive unprecedented attention from industry.  Third, blockchain technology, which has powered Bitcoin, is creating a new trusted network infrastructure that will allow information to be distributed but not copied. While these areas are each rich in intellectual content on their own, they will also interplay with one other, creating interesting opportunities for those versed in all three.  In order to play a role in this era of network-based computing, students must have a thorough understanding of these networking technologies and applications. Beyond teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach new networking issues and topics of significance. This focus on upcoming wireless, cyber security as it relates to networks, network infrastructure, and the broader supply chain, and blockchain advancements is the motivation for CS 143 this semester.  Students in the course will read and discuss basic material as well as the latest literature, work on homework assignments, gain hands-on experience through network programming, and have the opportunity to present the concepts and insights learned through a final project.

Course Website

Cloud Networking and Computing

COMPSCI 145
2020 Spring

Minlan Yu
Monday, Wednesday
01:30pm to 02:45pm

Clouds have become critical infrastructures for many applications in business and society (e.g., social media, public health, and entertainment). In this course, we will take a look inside the cloud infrastructure and learn critical technology trends and challenges in the networking and computing layers. We will discuss the design choices of performance, scalability, manageability, and cost in various cloud companies 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/cs145spring20.

Course Website

Computer Architecture

COMPSCI 146
2019 Fall

David Brooks
Friday
09: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. Emphasis on a quantitative evaluation of design alternatives and an understanding of timing issues.

Course Website

Design of VLSI Circuits and Systems

COMPSCI 148
2020 Spring

Gu-Yeon Wei
Wednesday, Friday
03:00pm to 04:15pm

Presentation of concepts and techniques for the design and fabrication of VLSI systems and digital MOS integrated circuits. Topics include: basic semiconductor theory; MOS transistors and digital MOS circuits design; synchronous machines, clocking, and timing issues; high-level description and modeling of VLSI systems; synthesis and place and route design flows; and testing of VLSI circuits and systems. Various CAD tools for design, simulation, and verification are extensively used.

Course Website

Programming Languages

COMPSCI 152
2020 Spring

Nada Amin
Tuesday, Thursday
01:30pm to 02:45pm

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

Compilers

COMPSCI 153
2019 Fall

Stephen Chong
Tuesday, Thursday
12:00pm to 01:15pm

Implementation of efficient interpreters and compilers for programming languages. Associated algorithms and pragmatic issues. Emphasizes practical applications including those outside of programming languages proper. Also shows relationships to programming-language theory and design. Participants build a working compiler including lexical analysis, parsing, type checking, code generation, and register allocation. Exposure to run-time issues and optimization.

Course Website

Operating Systems

COMPSCI 161
2020 Spring

James Mickens
Monday, Wednesday
03:00pm to 04:15pm

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

Data Systems

COMPSCI 165
2019 Fall

Stratos Idreos
Monday, Wednesday
12:00pm to 01:15pm

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

Hanspeter Pfister
Monday, Wednesday
03:00pm 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
2020 Spring

Steven Gortler
Tuesday, Thursday
12:00pm to 01:15pm

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

Elena Glassman
Monday, Wednesday
10:30am to 11:45am

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

Finale Doshi-Velez
Monday, Wednesday
09:00am to 10:15am

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

Autonomous Robot Systems

COMPSCI 189
2020 Spring

Radhika Nagpal
Friday
09:00am to 11:45am

Building autonomous robotic systems requires understanding how to make robots that observe, reason, and act.  Each component uses many engineering principles: how to fuse, multiple, noisy sensors; how to balance short-term versus long-term goals; how to control one’s actions and how to coordinate with others. This year theme will be "Robots Roam the Halls", where we will focus on kinect-based robots that move in the SEAS buildings, to do applications like navigating, map building, and interacting with people. The class format will have a mixed lecture and lab format, and have a final project component.

Course Website

Computing Foundations for Computational Science

COMPSCI 205
2020 Spring


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

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

Systems Development for Computational Science

COMPSCI 207
2019 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

Probabilistic Analysis and Algorithms

COMPSCI 223
2019 Fall

Michael Mitzenmacher
Tuesday, Thursday
10:30am to 11:45am

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 Theory for Society: Fairness and Validity

COMPSCI 226R
2020 Spring

Cynthia Dwork
Monday, Wednesday
09:00am to 10:15am

Topics from the literature on theoretical computer science addressing technical problems of societal concern. Focus for 2019-2020: Algorithmic Fairness and Statistical Validity in Adaptive (Exploratory) Data Analysis.

Course Website

Cryptography

COMPSCI 227
2020 Spring

Boaz Barak
Tuesday, Thursday
12:00pm to 01:15pm

Cryptography is as old as human communication itself, but has undergone a revolution in the last few decades. It is now about much more than "secret writing" and includes seemingly paradoxical notions such as communicating securely without a shared secret, and computing on encrypted data. In this challenging but rewarding course we will start from the basics of private and public key cryptography and go all the way up to advanced notions such as fully homomorphic encryption and software obfuscation. This is a proof-based course that will be best appreciated by mathematically mature students.

Course Website

Computational Learning Theory

COMPSCI 228
2020 Spring

Leslie Valiant
Tuesday, Thursday
01:30pm to 02:45pm

Possibilities of and limitations to performing learning by a computational process. Computationally feasible generalization and its limits. Topics include computational models of learning, polynomial time learnability, learning from examples and from queries to oracles. Applications to Boolean functions, languages and geometric functions. Darwinian evolution as learning.

Course Website

Topics in Theoretical Computer Science: Essential Coding Theory

COMPSCI 229R
2020 Spring

Madhu Sudan
Monday, Wednesday
03:00pm to 04:15pm

Introduces essential elements the theory of error-correcting codes. Focuses on the basic results in the area, taught from first principles. Special focus will be given on results of asymptotic or algorithmic significance. Principal topics include    1. Construction and existence results for error-correcting codes;    2. Limitations on the combinatorial performance of error-correcting codes;    3.  Decoding algorithms    4. Applications to other areas of mathematics and computer science. Lecture notes for this course from previous offerings give further details on the material covered. These may be found at http://madhu.seas.harvard.edu/courses/Spring2017.

Course Website

Topics at the Interface between Computer Science and Economics

COMPSCI 236R
2020 Spring

Yiling Chen
Tuesday, Thursday
09:00am to 10:15am

Interplay between computation and economics. Topics in electronic commerce, computational social choice, computational mechanism design, peer production, prediction markets and reputation systems. Readings in AI, theoretical CS, multi-agent systems, economic theory, and operations research.

Course Website

Computing at Scale

COMPSCI 242
2020 Spring

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

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 Networks

COMPSCI 243
2019 Fall

Minlan Yu
Monday, Wednesday
01:30pm to 02:45pm

This is a graduate-level course on computer networks. It provides a comprehensive overview of advanced topics in network protocols and networked systems. The course will cover both classic papers on computer networks and recent research results. It will examine a wide range of topics including routing, congestion control, network architectures, network management, data center networks, software-defined networking, and programmable networks, with an emphasis on core networking concepts and principles and their usage in practice. The course will include lectures, in-class presentations, paper discussions, and a research project.

More information can be found at http://minlanyu.seas.harvard.edu/teach/cs243-fall19/.

Course Website

Advanced Computer Architecture

COMPSCI 246
2019 Fall

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

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

Advanced Topics in Computer Architecture

COMPSCI 247R
2020 Spring

David Brooks
Friday
09: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

Advanced Design of VLSI Circuits and Systems

COMPSCI 248
2020 Spring

Gu-Yeon Wei
Wednesday, Friday
03:00pm to 04:15pm

The contents and course requirements are similar to those of Computer Science 148, with the exception that students enrolled in Computer Science 248 are expected to do a substantial design project and paper discussions on advanced topics.

Course Website

Special Topics in Edge Computing: Autonomous Machines

COMPSCI 249R
2019 Fall

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

The course covers a range of emerging research topics in edge computing. The Fall 2019 course focuses on computing systems for autonomous machines (drones, cars, etc.). We survey fundamental and cutting-edge research across algorithms, systems, and hardware, and learn how to optimize the cyber-physical system-stack for performance, power efficiency, reliability, and safety. This research-oriented course is ideal for students interested in interdisciplinary and cross-layer research.

Course Website

Advanced Topics in Programming Languages

COMPSCI 252R
2019 Fall

Nada Amin
Monday, Wednesday
12:00pm to 01:15pm

This year only: We’ll focus on making communication with computers more accessible: easier, faster, and safer. The course co-locates two advanced graduate seminars in HCI and PL. From HCI, students will learn new design and evaluation methods focused on utility and usability. From PL, students will learn new PL techniques relevant to building user-centric systems.

Students enrolled in 252r will select and present papers on PL topics including type systems, program synthesis, and metaprogramming. Students enrolled in 279 will select and present systems HCI papers about communicating intent between humans and computers, such as programming by demonstration and representing transformations on large piles of data. Activities will include a small number of lectures, discussion of relevant literature in each field, and a project, in which students from 252 and 279 will work together in groups to propose and carry out research at the intersection of PL and HCI.

Course Website

Advanced Topics in Programming Languages

COMPSCI 252R
2020 Spring

Stephen Chong
Tuesday, Thursday
10:30am to 11:45am

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

Course Website

Systems Security

COMPSCI 263
2019 Fall

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

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

Big Data Systems

COMPSCI 265
2020 Spring

Stratos Idreos
Monday, Wednesday
10:30am to 11:45am

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

Topics in Data Visualization

COMPSCI 271
2020 Spring

Johanna Beyer
Monday, Wednesday
04:30pm to 05:45pm

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

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

This year only: We’ll focus on making communication with computers more accessible: easier, faster, and safer. The course co-locates two advanced graduate seminars in HCI and PL. From HCI, students will learn new design and evaluation methods focused on utility and usability. From PL, students will learn new PL techniques relevant to building user-centric systems.

Students enrolled in 252r will select and present papers on PL topics including type systems, program synthesis, and metaprogramming. Students enrolled in 279 will select and present systems HCI papers about communicating intent between humans and computers, such as programming by demonstration and representing transformations on large piles of data. Activities will include a small number of lectures, discussion of relevant literature in each field, and a project, in which students from 252 and 279 will work together in groups to propose and carry out research at the intersection of PL and HCI.

Course Website

Curricular Design for Computer Science: Computational Linguistics and Natural-language Processing

COMPSCI 280R
2019 Fall

Stuart Shieber
Monday, Wednesday
03:00pm to 04:15pm

This graduate seminar focuses on the design of a curriculum and pedagogical infrastructure for a new computer science course. This term, the target course will be an undergraduate course in computational linguistics, the study of human language using the tools and techniques of computer science, and the technological applications thereof. The class will investigate appropriate subject matter for the target course, canvas existing and novel pedagogical methods for teaching the subject, and construct a curriculum and course materials and infrastructure for a new course on the subject, to be taught in the fall of 2020.

Course Website

Advanced Machine Learning

COMPSCI 281
2019 Fall

Jean-Baptiste Tristan, Michael Wick
Monday, Wednesday
01:30pm to 02:45pm

Advanced statistical machine learning and probabilistic data analysis. Covers discrete and continuous probabilistic modeling and computational inference. Topics include: Bayesian modeling, probabilistic graphical models, latent variables and unsupervised learning, deep learning, time series models, variational inference, and sampling. Requires a final project.

Course Website

Topics in Machine Learning: Interpretability and Explainability

COMPSCI 282BR
2019 Fall

Hima Lakkaraju
Friday
12:00pm to 02:30pm

As machine learning models are increasingly being employed to aid decision makers in high-stakes settings such as healthcare and criminal justice, it is important to ensure that the decision makers (end users) correctly understand and consequent trust the functionality of these models. This graduate level course aims to familiarize students with the recent advances in the emerging field of explainable ML. In this course, we will review seminal position papers of the field, understand the notion of model interpretability from the perspective of decision makers (end users), discuss in detail different classes of interpretable models (e.g., case (prototype) based approaches, sparse linear models, rule-based techniques, saliency maps, generalized additive models, and counterfactual explanations), and explore the connections between model interpretability and causality, debugging, and fairness. The course will also emphasize on various applications which can immensely benefit from model interpretability including medical imaging and judicial decision making.

Course Website

Topics in Machine Learning: Batch Reinforcement Learning

COMPSCI 282R
2019 Fall

Finale Doshi-Velez
Monday, Wednesday
09:00am to 10:15am

This course will take a deep dive into batch reinforcement learning, with a focus on healthcare applications.  Sequential decision making is at the core of many healthcare problems: a clinician observes a patient, determines a treatment, and based on the response and the patient's previous history, determines what to try next.  Reinforcement learning is a formal framework for thinking about such problems.  Batch reinforcement learning aims to extract as much as possible from previously-observed trajectories: given a large batch of previous clinician-patient interactions, what inferences can we make about good courses of action?  What inferences are not possible?

We will first review the fundamentals through lectures, readings, and coding assignments; they will also engage in a semester-long project applying and extending these ideas to problems related to healthcare (including the opportunity to work with clinical decision-making in intensive care units). 

Course Website

Computer Vision

COMPSCI 283
2019 Fall

Todd Zickler
Tuesday, Thursday
12:00pm to 01:15pm

Vision as an ill-posed inverse problem: image formation, two-dimensional signal processing; feature analysis; image segmentation; color, texture, and shading; multiple-view geometry; object and scene recognition; and applications.

Course Website

Biologically-inspired Multi-agent Systems

COMPSCI 289
2019 Fall

Radhika Nagpal
Wednesday, Friday
10:30am to 11:45am

Surveys biologically-inspired approaches to designing distributed systems. Focus is on biological models, algorithms, and programming paradigms for self-organization. Topics vary year to year, and usually include: (1) swarm intelligence: social insects and animal groups, with applications to networking and robotics, (2) cellular computing: including cellular automata/amorphous computing, and applications like self-assembling robots and programmable materials, (3) evolutionary computation and its application to optimization and design.

Course Website

Special Topics in Computer Science

COMPSCI 299R
2019 Fall

David Brooks

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

Course Website

Special Topics in Computer Science

COMPSCI 299R
2020 Spring

Leslie Valiant

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

Course Website