These pages present the course materials for an introductory course on program design in Java that emphasizes systematic test-first design discipline as well as the design of data representation of the information on which the program is based.
While the preferred approach expects as a prerequisite a one semester course based on the text How to Design Programs, the lecture notes and the inrtoductory labs and assignments are design to work equally well for students without this prerequisite.
The course materials consist of three complementary parts:
Lecture notes introduce new concepts always in the context of complete working examples.
The code for the programs introduced in the lectures is included.
Lab Materials present hands-on activities for students to work on in a lab where a tutor or a teaching assistant is available to answer questions and help in getting the programs to run.
The goal of the labs of for students to see the lessons from lectures in the context of their own programs and to prepare for independent work on their programming assignments.
At times, the lab materials extend the exposition given in the lectures with additional tutorials.
Assignments challenge the student to work independently (or with a pair-programming partner) on solving problems and designing programs that apply the new concepts covered in the lectures and labs.
Solutions to the labs and the assignments, together with the grading rubric for the assignments are avaliable upon request from instructors and teachers.