Class 1 | Tue 22‑8‑2017 | Quick introductions. What the class is all about. A quick visit to prolog. | ||||
Class 2 | Thur 24‑8‑2017 | How to get three credits. A very quick visit to functional programming. Getting started with Lisp. | ||||
Class 3 | Tue 29‑8‑2017 | Lisp's tiniest little functions. Some simple functions of our own. Lisp style: recursion instead of loops; don't modify existing data structures. | ||||
Class 4 | Thur 31‑8‑2017 | Creeping up on the reverse function. A strange toolkit: The first version of reduce, the second version of reduce. The very beginnings of our own little programming language. | ||||
Class 5 | Tue 5‑9‑2017 | Accumulating parameters improve error handling and efficiency, More function builders: map and lambda, An ugly version of reduce lets our interpreter duplicate lisp's behaviour, Filter. Map, reduce, and filter make a lot of database functions. | ||||
Thur 7‑9‑2017 | XXX | |||||
Tue 12‑9‑2017 | XXX | |||||
Thur 14‑9‑2017 | XXX | |||||
Tue 19‑9‑2017 | XXX | |||||
Thur 21‑9‑2017 | XXX | |||||
Class 6 | Tue 26‑9‑2017 | Reminders of some basics, The six possible versions of reduce, insertion sort and selection sort. Today's Notes. | ||||
Class 7 | Thur 28‑9‑2017 | Merge sort in the lisp style, Binary trees, Think about flatten. | ||||
Class 8 | Tue 3‑10‑2017 | A bunch of Lisp exercises, ranging from easy to hard. If you look at The Little Lisper, read this note first. The sieve of Eratosthenes, in two different styles. Flattening an s-expression, also in two different styles. Keep in mind accumulating parameters, solving a problem from end to beginning. A dynamic programming solution for exercise 52. | ||||
Class 9 | Thur 5‑10‑2017 | Where we were a month ago: Let's add memory to it. and the read-eval-write loop. | ||||
Class 10 | Tue 10‑10‑2017 | What we learned from assignment 1. The functional style of programming. Almost completing the lisp in lisp interpreter. | ||||
Class 11 | Thur 12‑10‑2017 | the snippet again Working out the interpreter code for function calls. A superior approach: compiling for a suitably designed virtual machine. | ||||
Class 12 | Tue 17‑10‑2017 | Rapid language development experiment:
concrete syntax,
abstract syntax. Our input symbol splitter. | ||||
Class 13 | Thur 19‑10‑2017 | Parsing: converting concrete syntax into abstract syntax. What we worked out. | ||||
Class 14 | Tue 24‑10‑2017 | First Test Day. | ||||
Class 15 | Thur 26‑10‑2017 | Big example of parsing from a made-up language to abstract syntax tree. Designing lisp-machine-like executable code for our virtual machine. | ||||
Class 16 | Tue 31‑10‑2017 | Facebook wants you! The SEC(D) virtual machine, compiling for it and executing its code. The sample program. | ||||
Class 17 | Thur 2‑11‑2017 | Compilation and Execution on an SEC virtual machine. | ||||
Class 18 | Tue 7‑11‑2017 | How it's all implemented in a normal language like C. Mark and sweep garbage collection. | ||||
Class 19 | Thur 9‑11‑2017 | Working with infinite lazy lists. Cantor's enumeration. | ||||
Class 20 | Tue 14‑11‑2017 | A modern purely functional language with lazy evaluation. L.E. makes min(X) = car(sort(X)) become a linear time solution. What type inference is all about. | ||||
Class 21 | Thur 16‑11‑2017 | Javascript, part 1. Today's material. | ||||
Class 22 | Tue 28‑11‑2017 | Javascript, part 2. (for notes see previous link). | ||||
Class 23 | Thur 30‑11‑2017 | Some basic Prolog. The same program in other forms: isa, infix, facts. | ||||
Class 24 | Tue 5‑12‑2017 | More prolog: Some list operations, The knight's tour (not a great plan), (a better version), Factorial, we should hope to improve on it. | ||||
Class 25 | Thur 7‑12‑2017 |
Logic, tree, tree2, animal, sorted, delete, perm, farm, farm1, farm2, farm3, farm4. | ||||
Class 26 | Tue 12‑12‑2017 | grammar. numbers. | ||||
Class 27 | Tue 19‑12‑2017 | Final exam and here is the take-home portion of the final. |