You must attend the lab every week.
You should complete at home any part of the lab you did not finish during the lab time. At times, we expect that the
lab has to be finished at home: The goal is to give you a guidance in how to apply the concepts we have learned in a concrete
situation, and the lab materials act as a tutorial.
Data Definitions; Loops, Accumulator style programs
ProfessorJ; Data definitions for simple classes,
classes with containment, unions, self-reference, mutual reference. Design recipes for classes
Designing methods, Using libraries: The World teachpack;
Eclipse; Intergrity of data: constructors, privacy modifiers, exceptions.
Abstracting classes: lifting fields, lifting methods, creating a super class, a union.
Circular Data; Methods for Circular Data; Equality.
Stateful Classes, Imperative Methods; Equality.
Testing the effects; Imperative World
Abstracting over the data type.
Reading and writing Javadocs.
Abstracting over the behavior; Traversals, Visitors, Function objects.
Designing programs with iterators: recursion vs. iteration; ArrayList; Java loops
Using Java libraries and algorithms: Overriding toString and equals; Using JUnit
Using libraries (Maps, hash tables, trees, priority queues); Stress Tests