For a description of the course, see the program listing on the Professional Programs site.
For more details of the course content, see the course web pages.
For information about the project of which this course is a part, including other related courses and efforts, see the Rethinking CS101 project pages.
The next revolution in programming education has come. MIT has always been at the forefront of computer education, and this groundbreaking course is no exception.
Over the last few years, the uses of computation have undergone dramatic transformations. Computational education has too often failed to keep pace. While old-style computation emphasized problem-solving, new applications are increasingly designed around interactions with users, networks, and environments.
This course teaches the fundamental computational vocabulary required to design modern interactive software. It emphasizes concurrency (many things happening at once), embeddedness (paying attention to what's going on around you), interfaces (how to glue pieces together), and interaction patterns (cannonical ways of building computational systems). Networked applications figure prominently.
The Java programming language, originally designed for set-top boxes, is tailored to this new kind of programming. Although it is too often taught as "just a variant of C++", Java represents a whole new way of thinking about computation. This course is an innovative introduction to programming in Java.
This course is a part of Lynn Andrea Stein's Rethinking CS101 project at the MIT AI Lab and the Department of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology.