EEN594 P (Alternative Programming Paradigms) Autumn 2017
Tue Thur 5 - 6:15 in MM117

Examinations

Assignments

Email to grader594 at rabbit.eng.miami.edu, as a single nicely formatted file, preferably a word document.
  1. Assignment one basic lisp, due Wednesday 27th September.
  2. Assignment two lisp in lisp, due Wednesday 25th October.
  3. Assignment three question3 and exercise 57, due Wednesday 8th November.
  4. Assignment four Prolog family trees, (the diagram), (The rules in prolog's format), due Sunday 17th December.

Downloads and Documentation

Class History

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.