CS 257: Syllabus

This syllabus will be revised as the semester progresses. Links to lecture notes, keys for the quizzes and problems sets, and other germane material will be added at appropriate points below.

For relevant add/drop dates consult the UNM Academic Calendar.

Miscellaneous stuff goes here: Helper Functions!

WedJan 20 My idiosyncratic view of programming languages (Lecture Notes)
FriJan 22 Scheme expressions and defining functions; (Lecture Notes)
Problem Set 1
MonJan 25 Formal presentation of Scheme syntax; using Emacs and mzscheme (lecture notes, thanks to Will Schultz)
WedJan 27 Combining little functions; if (Lecture Notes)
FriJan 29 and, or, not, cond, (Lecture Notes)
Problem Set 2
MonFeb 1 Plumbing Graphics (Plumbing Graphics Howto by Anthony Vestal)
WedFeb 3 Recursion with plumbing graphics Quiz 1 key
FriFeb 5 (continued) Problem Set Three
MonFeb 8 Lists, car, cdr, cons, box-and-pointer
WedFeb 10 (continued)
FriFeb 12 (continued) sum-list, length
MonFeb 15 (continued) guest lecturer: Lance Williams lists: member, append, reverse
WedFeb 17 (continued) replace, count-atoms, exaggerate, Problem Set 4 solutions
FriFeb 19 (continuted) (Lecture Notes)
MonFeb 22 tiny-eval Quiz 2 key
WedFeb 24 higher-order functions
FriFeb 26 (continued) map, filter, apply Problem Set 5 solutions
MonMar 1 (continued) accumulate, functions in sexprs and alists
WedMar 3 lambda
FriMar 5 (continued) let
MonMar 8 cond's => construct
WedMar 10 the repeat higher-order function
arithmetic: lists as numbers, functions as numbers (Church numerals) Problem Set Six solutions Notes
FriMar 12 functions as data; kons Notes quiz 3
Spring Break
MonMar 22 a taxonomy of recursive patterns
WedMar 24 problem set six, the Y combinator
FriMar 26 midterm
MonMar 29 call graphs; tail recursion
WedMar 31 writing tail-recursive functions
FriApr 2 (continued) Notes on Fibonacci and parallel prefix
MonApr 5 translating imperative code to functional code problem set seven solutions
WedApr 7 symbolic differentiation guest lecture: Charles Crowley
FriApr 9 (continued) guest lecture: Charles Crowley quiz 4
MonApr 12 building objects out of lambda Problem Set Eight; solutions: lame, non-lame
WedApr 14 (continued)
FriApr 16 (continued)
MonApr 19 backquote (quasiquote)
WedApr 21 adding lambda to an interpreter
FriApr 23 (continued)
MonApr 26 adding memoization to an interpreter final project (adventure game)
WedApr 28 memoize; begin; set!; hash tables
FriApr 30
MonMay 3 thunks (promises): delay, force; infinite streams quiz 5" solutions"
WedMay 5 Undergrad research; cs departmental honors
FriMay 7 Review via implementing quasiquote
Wed?May 12 final exam

I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we are responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun.
-Alan J. Perlis

Barak Pearlmutter <bap@cs.unm.edu>