Syllabus for the second course

Week 1	review of the design recipe; accumulators

	assignment: accumulator practice - DrRacket

Week 2	data definitions: struct in DrRacket vs. Class in Java; class diagram
	references; unions of data; self-referential data; examples of data; Java syntax

	assignment: data definitions for classes, containment, unions, self-referential data
	sketch out the first outline of the game

Week 3	Methods for classes, containment, unions; drawing shapes

	assignment: methods for classes, containment, unions; tests for inexact numbers; game drawing

Week 4	Methods for self-referential data:; complex class hierarchies; methods for the String class

	assignment: mobiles, Excel cells evaluation (complex self-referential class hierarchies)

Week 5	Eclipse; Understanding constructors

	assignment: abstract classes; methods for complex class hierarchies; GPS directions

Week 6	Function objects

	assignment: function objects

Week 7	State change; equality

	assignment: State change; equality; circularly-referential data

Week 8	Abstracting over the data types: parametrized types

	assignment: parametrized types; direct access data structures (ArrayList); Stack/Queue

Week 9	Loops; text-based user interactions; imperative game

	assignment: Eliza, Insertion sort (loops)

Week 10	HashMap, sorting JUnit

	assignments: HashMap, JUnit, quicksort, using libraries (Shakespeare)

Week 11	Stress tests; priority queue

	assignment: Heapsort; stress tests

Week 12	User Interactions (GUIs)

	assignment: final project 
		- Graph Algorithms with visualization
		- Mars Images processing
		- Musical Frogger
		- Universe Game