Computer Science Courses

For more information on specific courses, including prerequisites, registration details and any last-minute changes, visit my.harvard

Great Ideas in Computer Science

COMPSCI 1
2019 Spring
Dr 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

Discrete Mathematics for Computer Science

COMPSCI 20
2019 Spring
Ms 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 I

COMPSCI 50
2018 Fall
David J. Malan
Friday
09:00am to 11:45am

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches you how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for concentrators and non-concentrators alike, with or without prior programming experience. 68% of CS50 students have never taken CS before.

Course Website

Abstraction and Design in Computation

COMPSCI 51
2019 Spring
Stuart Shieber
Tuesday
10:30am to 11:45am

Abstraction and design in computation. Topics include functional and object-oriented styles of programming, software engineering in the small, and models of computation. Our main goal is to understand how to design large programs to make them readable, maintainable, elegant, and efficient.

Course Website

Systems Programming and Machine Organization

COMPSCI 61
2018 Fall
Eddie Kohler
Monday, Wednesday
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

Applied Ethical and Governance Challenges in AI

COMPSCI 90NAR
2019 Spring
Jonathan Zittrain,
Joichi Ito
Tuesday
05:00pm to 07:00pm

This course will pursue a cross-disciplinary investigation of the development and deployment of the opaque complex adaptive systems that are increasingly in public and private use. We will explore the proliferation of algorithmic decisionmaking, autonomous systems, and machine learning and explanation; the search for balance between regulation and innovation; and the effects of AI on the dissemination of information, along with questions related to individual rights, discrimination, and architectures of control.

Course Website

Internet & Society: The Technologies and Politics of Control

COMPSCI 90NBR
2019 Spring
Jonathan Zittrain,
Jordi Weinstock
Monday
05:00pm to 07:00pm

This course offers a rigorous introduction to the field of cyberlaw. We will investigate the evolving nature of online architecture and activities, and the ways in which, law has been, and will be, leveraged to influence them.

Course themes include the complex interaction between Internet governance organizations and sovereign states, the search for balance between the ease of disseminating information online and the interest of copyright holders, privacy advocates, and others in controlling that dissemination, and the roles of intermediaries and platforms in shaping what people can and cannot do online. The course will entail an intense array of learning and teaching methods. Students will be expected to participate in a variety of activities. May include Berkman Center fellows and affiliates.

Course Website

Supervised Reading and Research

COMPSCI 91R
2018 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://tiny.cc/CS91r. 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
2019 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://tiny.cc/CS91r. 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
2018 Fall
David J. Malan
Tuesday, Thursday
01:30pm to 02:45pm

Introduction to applications of computer science and data science (including web technologies, visualization, and database design) to domains in the arts and humanities (including poetry, archaeology, and architecture). Emphasis on principles of software engineering and best practices, including code reviews, source control, and testing. Languages include Python, 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
2018 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

Data Science 1: Introduction to Data Science

COMPSCI 109A
2018 Fall
Pavlos Protopapas,
Kevin A. Rader
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
2019 Spring
Pavlos Protopapas,
Mark Glickman
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
2018 Fall
Boaz Barak
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
2019 Spring
Jelani Nelson
Monday, Wednesday
10:30am to 11:45am

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

Course Website

Networks

COMPSCI 134
2018 Fall
Yaron Singer,
Michael Mitzenmacher
Monday, Wednesday
12:00pm to 01:15pm

Networks—of social relationships, economic interdependencies, and digital interactions—are critical in shaping our lives. This course introduces models and algorithms that help us understand networks. Fundamental concepts from applied mathematics, microeconomics, and computer science will be presented through the lens of network science, in order to equip students to usefully analyze the “big data” generated by online networks. Applications discussed include the viral spread of ideas, maximizing influence, and the contagion of economic downturns.  Concepts and tools covered include game theory, graph theory, data mining, and machine learning.

Course Website

Economics and Computation

COMPSCI 136
2018 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
2019 Spring
David Brooks
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
2018 Fall
H. Kung
Monday, Wednesday
04:30pm to 05:45pm

Computer networking has enabled the emergence of mobile and cloud computing, creating one of the most important technological breakthroughs in computing of the past decade. We expect two major paradigm shifts will take place 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. Second, blockchain technology, which has powered Bitcoin, is creating a new trusted network infrastructure that will allow information to be distributed but not copied.  In order to play a role in this era of network-based computing, students must have a thorough understanding of these emerging 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 and blockchain advancements is the motivation for CS 143 this semester.  The class will be organized into the following eight modules: (1) A view of the future: 5G and blockchain; (2) Basic networking concepts: network interoperability, decentralization, security, and robustness; (3) Radio basics: Wave propagation physics; (4) Wireless networking protocols: Wi-Fi, MAC protocols; (5) New 5G technologies: Millimeter wave, Ultra Dense Networks (UDNs), MIMO; (6) Fundamentals of blockchains: Peer-to-peer networking, distributed database, cryptography-driven consensus protocols; (7) Blockchain in mobile networks: trust economy, smart contract, blockchain-as-a-service; (8) Machine learning assisted networking: Data-driven network protocols.  Students in the course will read and discuss basic material as well as the latest literature, gain hands-on experience through a programming assignment, and have the opportunity to present the concepts and insights learned through a final project.

Prerequisites: CS50 (or programming experience) and a strong interest in the subject matter. Lab sessions will be provided to give extra support.

Course Website

Networks Design Projects

COMPSCI 144R
2019 Spring
H. Kung
Monday, Wednesday
03:00pm to 04:15pm

As networking technologies advance, networks and their applications can operate more and more by themselves without help. For example, based on blockchains, we can develop autonomous systems that will provide forever-improving peer-to-peer services. More specifically, with proper incentives provided to participants to contribute, the network will continue to improve over time.  In this course, we will study core network-related technologies whose interplay will be responsible for these autonomous systems of the future, which range from the Internet of Things (IoT) to decentralized autonomous organizations. These technologies include blockchains, machine learning, IoT, datacenter networking, video-analytics over heterogeneous networks, mobile computing, and homomorphic encryption for cloud computing.  We will first review these core technologies. Following this, we will illustrate novel autonomous applications such as peer-to-peer business models for machine learning systems, including the models themselves and the data on which they operate.  Another application example will be the distributed classification of security attacks, including designing incentives to encourage collaboration in mitigating attacks.  Students will work in pairs on projects related to autonomous technologies and business model experimentation.

Course Website

Programming Languages

COMPSCI 152
2019 Spring
Stephen Chong
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
2018 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
2019 Spring
Eddie Kohler,
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
2018 Fall
Stratos Idreos
Monday, Wednesday
09:00am to 10:15am

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
2018 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
2018 Fall
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
2019 Spring
Krzysztof Gajos
Tuesday, Thursday
12:00pm to 01:15pm

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

Artificial Intelligence

COMPSCI 182
2018 Fall
TBA
Monday, Wednesday
03:00pm to 04:15pm

Artificial Intelligence (AI) is an exciting field that has enabled a wide range of cutting-edge technology, from driverless cars to grandmaster-beating Go programs. The goal of this course is to introduce the ideas and techniques underlying the design of intelligent computer systems. Topics covered in this course are broadly be divided into 1) planning and search algorithms, 2) probabilistic reasoning and representations, and 3) machine learning (although, as you 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 wild and, in some cases, explore the relationship to state-of-the-art techniques. The class will include lectures connecting the models and algorithms we discuss to applications in robotics, computer vision, and speech processing.

Course Website

Autonomous Robot Systems

COMPSCI 189
2019 Spring
Dr 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

Classics of Computer Science

COMPSCI 191
2019 Spring
Harry Lewis
Monday, Wednesday
10:30am to 11:45am

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

Course Website

Computing Foundations for Computational Science

COMPSCI 205
2019 Spring
Ignacio Martin Llorente
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
2018 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

Algorithms at the Ends of the Wire

COMPSCI 222
2018 Fall
Michael Mitzenmacher
Tuesday, Thursday
12:00pm to 01:15pm

Covers topics related to algorithms for big data, especially related to networks. Themes include compression, cryptography, coding, and information retrieval related to the World Wide Web. Requires a major final project.

Course Website

Topics in Theoretical Computer Science

COMPSCI 229R
2018 Fall
Boaz Barak
Friday
01:30pm to 02:45pm

In this graduate seminar we will explore some of the connections between theoretical computer science and physics. Some topics include: connections between statistical physics and computational complexity, quantum information theory, quantum Hamiltonian complexity, black holes, bulk/boundary correspondence, "quantum superiority experiments", the "conformal bootstrap". and more.

All of these are topics that I personally find fascinating, but know very little about. I hope we can learn about them together. Each one of those can probably be the topic of a full semester-long course (and even that, assuming significant physics background). I hope this seminar will be like a “tasting menu” where we pick some of the juiciest and most interesting questions and results from all these areas, and attempt to understand and present them using the minimal amount of physics.

See the website https://www.boazbarak.org/fall18seminar/ for more information about this seminar.

Course Website

Topics in Theoretical Computer Science: Biology and Complexity

COMPSCI 229BR
2019 Spring
Leslie Valiant
Tuesday, Thursday
01:30pm to 02:45pm

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 in Theoretical Computer Science: Information Theory in CS

COMPSCI 229R
2019 Spring
Dr Madhu Sudan
Tuesday, Thursday
12:00pm to 01:15pm

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/Spring2019 for more information.

Course Website

Topics at the Interface between Computer Science and Economics

COMPSCI 236R
2019 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

Networks Design Projects

COMPSCI 244R
2019 Spring
H. Kung
Monday, Wednesday
03:00pm to 04:15pm

The contents and course requirements are similar to those of Computer Science 144r, with the exception that students enrolled in Computer Science 244r are expected to do substantial system implementation and perform graduate-level work.

As networking technologies advance, networks and their applications can operate more and more by themselves without help. For example, based on blockchains, we can develop autonomous systems that will provide forever-improving peer-to-peer services. More specifically, with proper incentives provided to participants to contribute, the network will continue to improve over time.  In this course, we will study core network-related technologies whose interplay will be responsible for these autonomous systems of the future, which range from the Internet of Things (IoT) to decentralized autonomous organizations. These technologies include blockchains, machine learning, IoT, datacenter networking, video-analytics over heterogeneous networks, mobile computing, and homomorphic encryption for cloud computing.  We will first review these core technologies. Following this, we will illustrate novel autonomous applications such as peer-to-peer business models for machine learning systems, including the models themselves and the data on which they operate.  Another application example will be the distributed classification of security attacks, including designing incentives to encourage collaboration in mitigating attacks.  Students will work in pairs on projects related to autonomous technologies and business model experimentation.

Course Website

Advanced Topics in Computer Architecture

COMPSCI 247R
2018 Fall
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

Projects and Close Readings in Software Systems

COMPSCI 260R
2019 Spring
Eddie Kohler
Monday, Wednesday
10:30am to 11:45am

Modern software systems construction and analysis. Distributed systems; operating systems; networks; data centers; big data; emerging systems deployments. Close, careful reading of research papers and code, coupled with programming projects. Readability and programmability. Topic focus will change each offering. May be repeated for credit with instructor permission.

Course Website

Systems Security

COMPSCI 263
2018 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
2019 Spring
Stratos Idreos
Monday, Wednesday
09:00am to 10:15am

Big data is everywhere. A fundamental goal across numerous modern businesses and sciences is to be able to exploit 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 far from a simple task and a moving target as both the underlying hardware and our ability to collect data evolve. In this class, we will discuss how to design data systems and algorithms that can "scale up" and "scale out". Scale up refers to the ability to use a single machine to all its potential, i.e., to exploit properly the memory hierarchy and the multiple CPU and GPU cores. Scale out refers to the ability to use more than 1 machines (typically 100s or 1000s) effectively. This is a research oriented class. Every week we will read two modern research papers; one from the scale up area and one from the scale out area. We will use examples from several areas, including relational systems and distributed databases, graph processing systems (i.e., for social networks), key value stores, noSQL and newSQL systems as well as mobile computing. Each student will work on a semester long data systems research project (in groups of 2-4 students) which can be in any of the above areas and will be based on an open research problem.

Course Website

Research Topics in Human-Computer Interaction

COMPSCI 279
2018 Fall
Krzysztof Gajos
Tuesday, Thursday
10:30am to 11:45am

The course covers major areas of inquiry and core research methods in Human-Computer Interaction including experimental design, statistical data analysis, and qualitative methods. Activities will include discussion of primary literature, a small number of lectures, assignments (design, execution and analysis of both lab-based and on-line experiments), and a research project.

Course Website

Advanced Machine Learning

COMPSCI 281
2018 Fall
Alexander Rush
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: Deep Bayesian Models

COMPSCI 282R
2018 Fall
Finale Doshi-Velez
Monday, Wednesday
09:00am to 10:15am

Many domains involve placing uncertainties over functions: If we took two precipitation readings two miles apart, what are the possible precipitations in between?  If we have a function mapping drug dosage to blood pressure change for a variety of patients, what is our uncertainty for a new patient?  Deep Bayesian models are a flexible class of priors over deterministic and stochastic functions, but truly understanding that model class, and performing inference in it, has many open questions.  In this course, we will begin with Gaussian processes, a much simpler prior over functions, and then explore deep Bayesian models via readings, coding assignments, and a final project.  Along the way, we'll learn what works when, and where the research questions are.

Course Website

Optimization Algorithms for Robotics

COMPSCI 284
2019 Spring
Scott Kuindersma
Wednesday, Friday
03:00pm to 04:15pm

Numerical methods have revolutionized the way we control dynamic motions in complex robots. In this course, we study a variety of optimization algorithms for designing and stabilizing trajectories for walking, manipulating, and flying systems. Topics will include optimal control, nonlinear programming, trajectory planning and stabilization, model-predictive control, Lyapunov analysis via sums-of-squares programming, legged systems, and estimation and control through frictional contact. Students will gain practical experience implementing modern algorithms to control a variety of simulated systems using the Drake MATLAB software toolbox.

Course Website

Machine Learning for Natural Language

COMPSCI 287R
2019 Spring
Alexander Rush
Monday, Wednesday
10:30am to 11:45am

Machine learning for natural language processing with a focus on deep learning and generative models. Topics include language modelling, information extraction, multi-model applications, text generation, machine translation, and deep generative models. Course is taught as a reading seminar with student presentations. Requires comfort with reading ML research papers and completion of a major final project.

Course Website

Biologically-inspired Multi-agent Systems

COMPSCI 289
2018 Fall
Dr 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

Computer Science Research Seminar

COMPSCI 290HFA
2018 Fall
TBA
Monday
03:00pm to 04:15pm

This course introduces first year Computer Science PhD students to the CS colloquium series. Required for G1 PhDs in CS.

Course Website

Computer Science Research Seminar

COMPSCI 290HFB
2019 Spring
TBA
Monday
03:00pm to 04:15pm

This course introduces first year Computer Science PhD students to the CS colloquium series. Required for G1 PhDs in CS.

Course Website

Special Topics in Computer Science

COMPSCI 299R
2018 Fall
Salil Vadhan

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
2019 Spring
Salil Vadhan

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