Lectures: MW(F) 12-1, 35-225
Recitation: F 12-1
Labs: M or T or W or Th 2-5, 34-501
(each student will be assigned to one weekly lab session)
Introduction to computer programming, computer science and modern
software design. Focus on community model of computation as
concurrent, embedded, and interactive. Topics: mechanics of software
design, programming and testing; relationships between behaviors of
entities and behaviors of aggregates; procedural abstraction,
object-oriented, event-driven and network programming; graphical user
interfaces, client-server architectures, distributed systems.
For
students with little or no prior programming experience.
Weekly 3-hour
in-class laboratory and final project with emphasis on student-student
interaction.
This course is an introduction to computer programming. It will be taught in the Java programming language, and will teach the language (i.e., no prior programming experience is assumed), but it is not about the language.
The theme of this course is interactive programming. Most computation these days is not algorithmic question-answering in desktop boxes (as typically taught in introductory computer science). Instead, this course will focus on a model of computation as a set of simultaneous ongoing entities embedded in and interacting with a dynamic environment: computation as interaction; computation as it occurs in spreadsheets and video games, web applications and robots.
A major component of the class will be a weekly three hour in-class laboratory. Much of this laboratory will be spent in collaborative work on program development, with an emphasis on student-student interaction and student-student teaching, facilitated and enriched by the course staff. In addition, design and implementation work will be supplemented with observational laboratory assignments, inviting students to consider not only how to build a program, but how to anticipate its behavior and how to modify that behavior.
For information on previous versions of the course, see the course web page at http://www-cs101.ai.mit.edu/.
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.