Introduction to Symbolic Programming http://www-inst.eecs.berkeley.edu/~cs3/su11/