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.
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.
The work in unit two introduces the concepts of expressions, statements, and interactions between objects in Java. This is the basis of actual coding.
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.
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.
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.
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.
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.
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.
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|