Class 1 | Tue 17‑1‑2012 | "Syllabus" and introduction to Lisp. | ||||
Class 3 | Tue 24‑1‑2012 | The most common little lisp functions. We defined our own little function at last. | ||||
Class 4 | Thur 26‑1‑2012 | Some more practice functions, COND, some of the standard forms for functions which usually lead to a good start, an introduction to optimised tail recursion and mark-and-sweep garbage collection. | ||||
Class 5 | Tue 31‑1‑2012 | The mechanics of append and reverse; reverse doesn't have to be quadratic. Structure sharing: nice functions don't modify lists, they build new ones. A beginning thought about Weizenbaum's Eliza (1960-ish) and Bobrow's Student (1964) and user input processing. | ||||
Class 6 | Thur 2‑2‑2012 | Association lists and simple pattern matching. Accumulating parameters are very useful, but can have a very slightly annoying effect. | ||||
Class 7 | Tue 7‑2‑2012 | A little bit of basic meta-programming. | ||||
Class 8 | Thur 9‑2‑2012 | Building a list forwards with rplaca and rplacd, selection sort and merge sort. The Lisp Style, Amusements with a strange-looking programmer's tool kit. | ||||
Class 9 | Tue 14‑2‑2012 | Hints about match and replace, and a closer look at Eliza:
Samples,
Original rules. Prettified input processing. | ||||
Class 10 | Thur 16‑2‑2012 | Loop constructs to drive non-terminating interactive systems, and not much else. Implementing Lisp in Lisp. | ||||
Class 11 | Tue 21‑2‑2012 | The setq problem is unnecessary, good Lisp programming only uses setq
to initialise at the "top level" the read-eval loop. Static binding, dynamic binding, and thunks (or closures). | ||||
Class 12 | Thur 23‑2‑2012 | How to cure your files of tabs. Lazy evaluation - programming with infinite lists. | ||||
Class 13 | Tue 28‑2‑2012 | Planning a serious implementation of lisp. Tagged values for S-expressions, cons cells just being arrays of pairs of cons cells, the read-eval-print loop, garbage collection, etc. | ||||
Class 14 | Thur 1‑3‑2012 | Poor me. Bit-stuffing in C and C++ for compact S-expressions. | ||||
Class 15 | Tue 6‑3‑2012 | Lisp in C++ - the code. Thinking about compiling Lisp: The S.E.C.D. machine. | ||||
Class 16 | Thur 8‑3‑2012 | The complete S.E.C.D. machine, and compiling without using append. | ||||
Spring Break | ||||||
Class 17 | Tue 20‑3‑2012 | Introducing Prolog by example: one, | ||||
Class 18 | Thur 22‑3‑2012 | Different styles for predicate definition:
one,
two,
three,
four.
The family tree example. Generators vs Filters, numbers. | ||||
Class 19 | Tue 27‑3‑2012 | What we learned from the family trees. Prolog doesn't treat numbers very flexibly, N>=0 does not work as a generator. The Zermelo Fraenkel Peano System for Numbers, introducing the confusing "cut", filters are usually easier to write than generators, but base-type generator + specific filter = specific generator. | ||||
Class 20 | Thur 29‑3‑2012 | How resolution works, the need to rewrite rules using anonymous variables before unification. reversible calculations, more of the cut, not = failure. | ||||
Class 21 | Tue 3‑4‑2012 | A reversible factorial can be constructed as generator + filter, but it's programming not prolog that does it. "not" just swaps success for failure, so it can never instantiate a variable. Prolog can be adapted to support negation, but the price is too high - linear algorithms tend to become exponential. | ||||
Class 22 | Thur 5‑4‑2012 | Make sure you can predict and understand all the behavious of These Predicates with variables in all sorts of places. | ||||
Class 23 | Tue 10‑4‑2012 | Natural Language Processing (what we developed in class). ((the unsatisfactory version I thought of using)). | ||||
Class 24 | Thur 12‑4‑2012 | Implementing Prolog. complete examples of two queries being solved. | ||||
Class 25 | Tue 17‑4‑2012 | The basic ideas behind smalltalk. Everything is an object, but the essential concept is message passing. An object may receive messages, modify itself, and send messages. The only way to modify an object is to send it a message and hope that it will react by modifying itself in the way you want. Did I mention "reflection"? | ||||
Class 26 | Thur 19‑4‑2012 | Getting accustomed to Squeak. This is the "file out" for what we did in class. The name has .txt at the end so it won't frighten your browser. Change it to just Thur19Apr.st. How to do "file in" is described in "squeak by example" starting at the bottom of page 45. | ||||
Class 27 | Tue 24‑4‑2012 | Making numbers out of nothing, with a mixture of smalltalk things: readable version, plain text, The terrible file-out. | ||||
Class 28 | Thur 26‑4‑2012 | Here is a work-around for missing lisp hash table functionality. Working out the way to implement a completely flexible object oriented language. |