Syllabus for the first course

Week 1	simple functions, expressions, errors: syntax, logical, run-time; 
	simple animations: on-redraw, on-tick

	assignment: simple functions, interactions; fly a plane

Week 2	conditionals; stepper (visualizing the function evaluation)
	on-mouse-click; use 'posn' structure

	assignment: structures, conditionals - functions for these

Week 3	Structure definitions; data definitions; templates for structures; functions for structures

	assignment: analyze program evaluation; unions of data (with structures); rat race world

Week 4	Self-referential data: representing boolean expressions; ancestor trees
	World with current chasing the mouse click place

	assignment: mobiles, message-in-envelopes; data definitions for maze world
	(self-referential data practice)

Week 5	Processing lists

	assignment: processing lists

Week 6	Files and Directories: complex lists and combinations of those

	assignment: XML expressions

Week 7	Program aesthetics; explanation of how the OS works, what are event handlers, how are they registered

	assignment: a simple interpreter; equality; functions that process several lists

Week 8	Functions as values: sort, filter, map - like functions

	assignment: designing abstractions -- defining and using functions as arguments

Week 9	Loops: map, build-list, fold, sort, andmap, ormap

	assignment: using Scheme loops

Week 10	Inexact numbers; tail-recursion (foldl vs foldr)

	assignments: practice with inexact numbers and approximations

Week 11	review for the exam

	assignment: fractal curves; generative recursion; backtracking

Week 12	Accumulators

	assignment: final project - a game