Homework will be assigned every other week. Unless otherwise noted, all homework is due at the beginning of class on Thursday of the following week. If the due date is a holiday and KU offices are closed, the due date becomes the next class period. Late homework is not accepted.

Virtually all homework assigments involve programming and lead up to the development of a major project. Generally, each language paradigm will have two associated homeworks and one associated project.

You must turn in 70% of your homework assignments on time to receive a passing grade in the course. If you have a valid excuse for being late, a new due date will be assigned.
You are required to stop by my office during office hours and introduce yourself.
Basic Java progamming. Emphasis on class definition and manipulation. Due September 5 before class.
ntroduction to using built-in Java classes and interfaces. Introduction to iterators. You will modify your solution to Homework 1 to use Java's Collection interface and Collections class. Revised due date - September 15 before class.
Basic Scheme functions. Lots of list traversal and manipulation. Implementation of basic filters, maps, folds, and finds as well as higher-order equivalents. Due 10/15 before class.
More advanced Scheme functions for manipulating trees, generating curried functions, and elaborating abstract syntax. Due 10/22 before class.
Some basic Haskell functions similar to what we initially wrote for Scheme.  Definitions for shape types and functions similar to those from the Java implementation
More Haskell functions and using type classes to define standard functions.