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
2018 Spring
Henry Leitner
Tuesday, Thursday
10:00 am to 11:29 am

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.

Discrete Mathematics for Computer Science

COMPSCI 20
2018 Spring
TBA
Monday, Wednesday, Friday
10:00 am to 10:59 am

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.

Introduction to Computer Science I

COMPSCI 50
2017 Fall
David J. Malan
Friday
10:00 am to 11:59 am

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, machine learning, 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.

Introduction to Computer Science II

COMPSCI 51
2018 Spring
Stuart Shieber
Tuesday
1:00 pm to 2:29 pm

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.

Systems Programming and Machine Organization

COMPSCI 61
2017 Fall
Eddie Kohler
Tuesday, Thursday
2:30 pm to 3:59 pm

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.

Supervised Reading and Research

COMPSCI 91R
2017 Fall
Stephen Chong,
Steven Gortler

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. A form available from the Student Affairs Office, Pierce Hall 110, 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.

Supervised Reading and Research

COMPSCI 91R
2018 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. A form available from the Student Affairs Office, Pierce Hall 110, 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.

System Design Projects

COMPSCI 96
2017 Fall
Stuart Shieber
Monday, Wednesday, Friday
4:00 pm to 5:59 pm

Cooperative design, development, and testing of a sizable and realistic computer system. Students work as a group with a client on a real-world open-ended problem, and gain experience in problem definition, software development, and system lifecycle issues, and in the area of application. Students work in groups; both student participation in the classroom and effective group cooperation outside the classroom are stressed. This term the problem to be addressed is the fragmentation of civil discourse in the United States and abroad, often going under the terms ‘polarization’ and ‘filter bubbles’, and leading to incorrect beliefs and allegations of ‘alternative facts’ or 'fake news'.

Privacy and Technology

COMPSCI 105
2017 Fall
James Waldo
Tuesday, Thursday
1:00 pm to 2:29 pm

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.

Intelligent Systems: Design and Ethical Challenges

COMPSCI 108
2017 Fall
Barbara Grosz,
Jeffrey Behrends
Tuesday, Thursday
11:30 am to 12:59 pm

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.

Data Science 1: Introduction to Data Science

COMPSCI 109A
2017 Fall
Pavlos Protopapas,
Kevin A. Rader,
Margo Levine
Monday, Wednesday
1:00 pm to 2:29 pm

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.

Data Science 2: Advanced Topics in Data Science

COMPSCI 109B
2018 Spring
Mark Glickman,
Margo Levine
Monday, Wednesday
1:00 pm to 2:29 pm

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.

Introduction to Theoretical Computer Science

COMPSCI 121
2017 Fall
Boaz Barak,
Salil Vadhan
Tuesday, Thursday
10:00 am to 11:29 am

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?

Data Structures and Algorithms

COMPSCI 124
2018 Spring
Jelani Nelson,
Salil Vadhan
Tuesday, Thursday
11:30 am to 12:59 pm

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

Fairness, Privacy, and Validity in Data Analysis

COMPSCI 126
2017 Fall
Cynthia Dwork
Tuesday, Thursday
10:00 am to 11:29 am

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.

Cryptography

COMPSCI 127
2018 Spring
Boaz Barak
Tuesday, Thursday
10:00 am to 11:29 am

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.

Networks

COMPSCI 134
2017 Fall
Yaron Singer
Monday, Wednesday
2:30 pm to 3:59 pm

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.

Economics and Computation

COMPSCI 136
2017 Fall
David Parkes
Monday, Wednesday
11:30 am to 12:59 pm

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.

Computing Hardware

COMPSCI 141
2017 Fall
Gu-Yeon Wei
Monday, Wednesday
10:00 am to 11:29 am

Introduction to the design, structure, and operation of digital computers; logic circuits and digital electronics; computer arithmetic; computer architecture; and machine language programming. Consideration of the design interactions between hardware and software systems.

Computer Networks

COMPSCI 143
2017 Fall
H. Kung
Monday, Wednesday
2:30 pm to 3:59 pm

Networking has enabled the emergence of mobile and cloud computing, creating one of the most important technological paradigm shifts in computing of the past decade. The next major paradigm shift in computer networking will be the emergence of 5G wireless mobile networks, which will begin to replace the current 4G networks as early as 2019/2020. These further advancements in wireless networking are expected to transform the technological landscape over the next decade by enabling an endless possibility of new applications, including the Internet of Things and wireless virtual reality, through the emergence of wireless networks with gigabit speeds. In order to play a role in this era of new network-powered advancements, students must have a thorough understanding of emerging networking topics, especially in the wireless domain. Rather than teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach the new issues and topics of interest, which will power important emerging applications. This focus on upcoming wireless advancements and mobile applications is the motivation for CS 143 this semester. The class will be organized into the following nine modules: A View of the Future: 5G—A World with Gigabit Wireless Networking; Basic Networking Concepts; Fundamental Radio Propagation Physics; Basic Wireless Networking Concepts: Wi-Fi, MAC protocols; New Fundamentals of Mobile Networking: 5G Millimeter Wave, Ultra Dense Networks (UDNs); Advanced Topics in 5G: Beam Forming, MIMO; 5G System Infrastructure: Network Function Virtualization and Software Defined Networking; 5G Applications: The Internet of Things and Massive Machine Type Communications; and Machine Learning Assisted Networking. Students in the course will read and discuss the latest wireless networking literature, gain hands-on experience through a programming assignment, and have the opportunity to present the concepts learned in the course through writing a final position paper on emerging wireless networking technologies.

Networks Design Projects

COMPSCI 144R
2018 Spring
H. Kung
Monday, Wednesday
2:30 pm to 3:59 pm

Networking has evolved to a new era of supporting large-scale distributed computing for big data. These new networks are software defined in the sense that they can be dynamically programmed to meet various communications needs in computing. In CS 144r/244r, students will obtain the knowledge and experience necessary not only to understand this momentous technological shift in networking, but also to be able to play a part themselves. To this end, the course will not only teach the fundamental concepts necessary to understand this emerging field of software-defined networking, but also real world applications of the technologies such as next-generation ultra-dense 5G cellular networks, as well as their connection with complementary topics such as machine learning. The class will be organized into the following eight modules: A View of the Future: The Promise of Next Generation Networking; Basic Network Design and Protocols; Datacenter Design and Networking; Software Defined Networking; Cross-Disciplinary Applications of Next Generation Networking: Machine Learning, Distributed Computing, and Consumer Applications; Wireless Networking: 5G Networks and Millimeter Wave Communication; Connecting the Internet of Things; Next Generation Networking Enabled Infrastructure: Network Function Virtualization. Students will gain mastery of the subject through lectures, programming assignments, discussion of the latest networking literature, and a final project. Students will have wide latitude in designing and implementing a final project they are passionate about. Industry partners will support the course and provide resources for the final projects.

Design of VLSI Circuits and Systems

COMPSCI 148
2018 Spring
Gu-Yeon Wei
Tuesday, Thursday
11:30 am to 12:59 pm

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.

Programming Languages

COMPSCI 152
2018 Spring
Stephen Chong
Tuesday, Thursday
10:00 am to 11:29 am

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.

Data Systems

COMPSCI 165
2017 Fall
Stratos Idreos
Monday, Wednesday
4:00 pm to 5:29 pm

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.

Visualization

COMPSCI 171
2017 Fall
Johanna Beyer,
Fritz Lekschas,
Michael Behrisch,
Ronell Sicat
Tuesday, Thursday
2:30 pm to 3:59 pm

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.

Computer Graphics

COMPSCI 175
2017 Fall
Steven Gortler
Monday, Wednesday
1:00 pm to 2:29 pm

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.

Design of Useful and Usable Interactive Systems

COMPSCI 179
2018 Spring
Krzysztof Gajos
Tuesday, Thursday
2:30 pm to 3:59 pm

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.

Machine Learning

COMPSCI 181
2018 Spring
Finale Doshi-Velez
Monday, Wednesday
9:00 am to 10:29 am

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.

Artificial Intelligence

COMPSCI 182
2017 Fall
Scott Kuindersma
Tuesday, Thursday
1:00 pm to 2:29 pm

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.

Autonomous Robot Systems

COMPSCI 189
2018 Spring
Radhika Nagpal
Friday
1:00 pm to 3:59 pm

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.

Classics of Computer Science

COMPSCI 191
2018 Spring
Harry Lewis
Monday, Wednesday
9:00 am to 10:29 am

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

Computing Foundations for Computational Science

COMPSCI 205
2018 Spring
Ignacio Llorente
Tuesday, Thursday
2:30 pm to 3:59 pm

An applications course highlighting the use of computers in solving scientific problems. Students will be exposed to fundamental computer science concepts such as computer architectures, data structures, algorithms, and parallel computing. Fundamentals of scientific computing including abstract thinking, algorithmic development, and assessment of computational approaches. Students will learn to use open source tools and libraries and apply them to data analysis, modeling, and visualization of real scientific problems. Emphasizes parallel programming and "parallel thinking."

Systems Development for Computational Science

COMPSCI 207
2017 Fall
David Sondak
Monday, Wednesday
11:30 am to 12:59 pm

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.

Computational Complexity

COMPSCI 221
2018 Spring
Madhu Sudan
Tuesday, Thursday
2:30 pm to 3:59 pm

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.

Sketching Algorithms for Big Data

COMPSCI 226
2017 Fall
Jelani Nelson
Tuesday, Thursday
2:30 pm to 3:59 pm

Big data is data so large that it does not fit in the main memory of a single machine. The need to process big data by space-efficient algorithms arises in Internet search, machine learning, network traffic monitoring, scientific computing, signal processing, and other areas. This course will cover mathematically rigorous models for developing such algorithms, as well as some provable limitations of algorithms operating in those models. Some topics covered include streaming algorithms, dimensionality reduction and sketching, randomized algorithms for numerical linear algebra, sparse recovery and the sparse Fourier transform.  The course will also cover some applications of these methods.

Cryptography

COMPSCI 227R
2018 Spring
Boaz Barak
Tuesday, Thursday
10:00 am to 11:29 am

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.

Computational Learning Theory

COMPSCI 228
2018 Spring
Leslie Valiant
Tuesday, Thursday
2:30 pm to 3:59 pm

Possibilities of and limitations to performing learning by computational agents. Topics include computational models, polynomial time learnability, learning from examples and learning from queries to oracles. Applications to Boolean functions, automata and geometric functions.

Topics in Theoretical Computer Science : Arithmetic Circuits

COMPSCI 229R
2017 Fall
Mrinal Kumar
Friday
10:00 am to 12:59 pm

The goal of this course is to provide an introduction to the area of Arithmetic Circuit Complexity and to try and get a sense of the power and limitations of arithmetic circuits as a computational model. We hope to see a combination of both classical and recent results in this area, including some upper bounds, lower bounds and questions about factoring and derandomization. 

A more detailed description of the course, and tentative content can be found at https://mrinalkr.bitbucket.io/arithmeticcktsF17.html

Topics on Computation in Networks and Crowds

COMPSCI 234R
2017 Fall
Nicole Immorlica
Friday
9:00 am to 11:59 am

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.

Topics on Computation in Networks and Crowds

COMPSCI 234R
2018 Spring
Yaron Singer

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.

Topics at the Interface between Computer Science and Economics

COMPSCI 236R
2018 Spring
Yiling Chen
Monday, Wednesday
1:00 pm to 2:29 pm

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.

Networks Design Projects

COMPSCI 244R
2018 Spring
H. Kung
Monday, Wednesday
2:30 pm to 3:59 pm

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.

Advanced Design of VLSI Circuits and Systems

COMPSCI 248
2018 Spring
Gu-Yeon Wei
Tuesday, Thursday
11:30 am to 12:59 pm

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.

Advanced Topics in Programming Languages

COMPSCI 252R
2017 Fall
Stephen Chong
Monday, Wednesday
11:30 am to 12:59 pm

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

Projects and Close Readings in Software Systems

COMPSCI 260R
2018 Spring
Eddie Kohler
Monday, Wednesday
1:00 pm to 2:29 pm

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.

Introduction to Distributed Computing

COMPSCI 262
2018 Spring
James Waldo
Monday, Wednesday
11:30 am to 12:59 pm

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.

Systems Security

COMPSCI 263
2017 Fall
James Mickens
Tuesday, Thursday
1:00 pm to 2:29 pm

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.

Big Data Systems

COMPSCI 265
2018 Spring
Stratos Idreos
Wednesday, Friday
4:00 pm to 5:29 pm

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.

Research Topics in Human-Computer Interaction

COMPSCI 279
2017 Fall
Krzysztof Gajos
Tuesday, Thursday
10:00 am to 11:29 am

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. Special focus this year is on social computing and crowd-powered systems. Specifically, we will look at the design and analysis of systems, in which crowds of intrinsically motivated volunteers contribute to meaningful and non-trivial human computation tasks as a byproduct of doing something that they are motivated to do anyway.

Advanced Machine Learning

COMPSCI 281
2017 Fall
Alexander Rush
Monday, Wednesday
1:00 pm to 2:29 pm

Advanced statistical machine learning and probabilistic data analysis. Topics include: Variational inference, graphical models, deep learning, text modeling, unsupervised learning, dimensionality reduction and visualization. Requires a major final project.

Topics in Machine Learning: Reinforcement Learning for Healthcare

COMPSCI 282R
2017 Fall
Finale Doshi-Velez
Monday, Wednesday
9:00 am to 10:29 am

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.  This course will first cover the fundamentals of reinforcement learning through lectures, readings, and coding assignments.  Topics will include Markov decision process and partially observable Markov decision processes, planning under uncertainty, model-free and model-based reinforcement learning, function approximation in reinforcement learning, and batch reinforcement learning.  Students will also engage in a semester-long project applying these techniques to clinical decision making in intensive care units.

Computer Vision

COMPSCI 283
2017 Fall
Todd Zickler
Tuesday, Thursday
11:30 am to 12:59 pm

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.

Optimization Algorithms for Robotics

COMPSCI 284
2018 Spring
Scott Kuindersma
Tuesday, Thursday
2:30 pm to 3:59 pm

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.

Machine Learning for Natural Language

COMPSCI 287
2018 Spring
Alexander Rush
Tuesday, Thursday
2:30 pm to 3:59 pm

Machine learning for natural language processing, with a focus on supervised deep learning methods based on recurrent neural networks. Topics include language modelling, information extraction, question answering, text generation, and machine translation. Requires comfort with reading ML research papers and completion of a major final project.

Biologically-inspired Multi-agent Systems

COMPSCI 289
2017 Fall
Radhika Nagpal
Tuesday, Thursday
11:30 am to 12:59 pm

Surveys biologically-inspired approaches to designing distributed systems. Focus is on algorithms, analysis, and programming paradigms. Topics: swarm intelligence, amorphous computing, immune-inspired systems, synthetic biology. Discussion of research papers and a research project required.

Computer Science Research Seminar

COMPSCI 290HFA
2017 Fall
Stuart Shieber
Monday
4:00 pm to 4:59 pm
Thursday
4:00 pm to 5:29 pm

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

Computer Science Research Seminar

COMPSCI 290HFB
2018 Spring
TBA
Monday
4:00 pm to 4:59 pm
Thursday
4:00 pm to 5:29 pm

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

Special Topics in Computer Science

COMPSCI 299R
2017 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.

Special Topics in Computer Science

COMPSCI 299R
2018 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.

SEAS Teaching Practicum

COMPSCI 365
2017 Fall
John Girash
Wednesday
2:30 pm to 4:29 pm

Practicum emphasizing an active but reflective approach to teaching applied sciences and engineering; there is nothing in the course that is specific to Computer Science. Topics: presentation and communication; in-class teaching and interaction; developing, grading and giving feedback on assignments; course head / TF relations and expectations; cognition and learning. Seminar style with an emphasis on observation, practice, feedback, discussion, and reflection. While the primary context of the course is classroom-style teaching, those interested in developing instructional communication skills in other contexts within science and engineering -- labs/studios, presentations, etc. -- are quite welcome, and course tasks can be adjusted for such.