CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. The course uses small coding experiments in the browser to play with the nature of computers, understanding their strengths and limitations. Sign up for the "To be announced" session to be notified by email when the class is next run, and sign up for "Self-Study" to start browsing the class materials right away. Self-Study mode makes all the videos and assignments available to be done at your own pace, but without a certificate of completion at the end.

In this course, you will learn how to formalize information and reason systematically to produce logical conclusions. We will also examine logic technology and its applications - in mathematics, science, engineering, business, law, and so forth.

This course will discuss the major ideas used today in the implementation of programming language compilers. You will learn how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines!

In this course, we will study the concepts and algorithms behind some of the remarkable successes of computer vision - capabilities such as face detection, handwritten digit recognition, reconstructing three-dimensional models of cities and more.

The course covers the basics: representing games and strategies, the extensive form (which computer scientists call game trees), repeated and stochastic games, coalitional games, and Bayesian games (modeling things like auctions).

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers basic iterable data types, sorting, and searching algorithms.

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations.

Networked Life will explore recent scientific efforts to explain social, economic and technological structures -- and the way these structures interact -- on many different scales, from the behavior of individuals or small groups to that of complex networks such as the Internet and the global economy.

This course will use social network analysis, both its theory and computational tools, to make sense of the social and information networks that have been fueled and rendered accessible by the internet.

This course delivers a systematic overview of computer vision, emphasizing two key issues in modeling vision: space and meaning. We will study the fundamental theories and important algorithms of computer vision together, starting from the analysis of 2D images, and culminating in the holistic understanding of a 3D scene.