CS101 Tutorial

This tutorial is intended for students who want to learn from the materials on this site on their own. It relies heavily upon Professor Lynn Andrea Stein's textbook, Interactive Programming in Java. At the moment, the tutorial also borrows heavily from the Programming Interactively course taught in the spring semester of 2003 at Olin College.

We'd love to hear what you have to say about this tutorial, as it is still very much a work in progress. Please let us know if you're using this tutorial, and either send us feedback via email or our bugzilla page.

Unit-by-unit index

  1. Unit one: Program Design

    This unit's assignments focus on understanding the process of designing computer programs from an interactive perspective. The readings focus on understanding the principles of object-oriented design, and introduce the concepts of Java types and interfaces, and exercises emphasize the creation of interfaces, and reading and understanding documentation.

  2. Unit two: Expressions, Statements, and Interactions

    The work in unit two introduces the concepts of expressions, statements, and interactions between objects in Java. This is the basis of actual coding.

  3. Unit three: Interfaces, Classes, and Objects

    Interfaces, class, and objects are the fundamental concepts of object-oriented programming. Unit three goes into the concepts of object-oriented programming in detail. In addition to introducing the building blocks of object-oriented design, this unit's work introduces advanced object-oriented concepts such as inheritance and polymorphism.

  4. Unit four: Systems of Objects

    The work in unit four focuses on the interactions of objects. The reading covers animate objects and threads, as well as error handling through exceptions, while continuing to explore object-oriented design techniques.

  5. Unit five: Dispatch and Procedures

    The work in unit five is designed to introduce some more general concepts in computer science, including basic data structures and control structures. This unit also provides opportunities for more practice with error handling, and continues the exploration of object-oriented design.

  6. Unit six: Polymorphism and Graphics

    Unit six features the introduction of event-driven programming in the context of graphics and graphical user interfaces (GUIs), based heavily on the object-oriented concept of method overloading.

  7. Unit seven: AWT

    Most of this unit's work focuses on AWT, Java's Advanced Windowing Toolkit, which allows for the construction of graphical user interfaces. Emphasis is placed on the use of interface implementation and method overloading by way of message listeners, which allow GUIs to respond to user input.

  8. Unit eight: Netowrking and Concurrency

    Unit eight's work introduces the advanced concepts of networking and concurrency. The reading covers the role of the client and server in networking, explains various communication models and interfaces, and explains concurrency and some common concurrency problems. The lab demands an understanding of both concepts.

  9. Unit nine: Network Programming

    This, the final unit of the tutorial, goes into greater depth in examining Java's handling of network programming. It focuses on the use of streams and sockets.

Problem set index

Problem set Recommended reading Handout Download Documentation
Etch-a-Sketch Etch-a-Sketch handout .jar (binary) Javadoc
BallWorld BallWorld handout .jar (binary) Javadoc
NodeNet NodeNet handout .jar (binary) Javadoc
Calculator Calculator handout .jar (binary) Javadoc
Breakout Breakout handout .jar (binary) Javadoc
Scribble Scribble handout .jar (binary) Javadoc
NetBreakout NetBreakout handout See Breakout materials

This page is a part of Lynn Andrea Stein's Rethinking CS101 project, part of the Computers and Cognition Group at the Franklin W. Olin College of Engineering.
This material is based upon work supported by the National Science Foundation under Grant No. EIA-0196404. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation
Valid HTML 4.01!
Valid CSS!
Last modified: Monday, December 5 2005 at 5:19 AM EST