This page lists the schedule for the course. Note that there may be minor changes: any changes will be announced in class and posted here.

CBT is Clojure for the Brave and True.

Important: Do the readings in advance!

Date Topic/Readings
Aug 30 Lecture 1: Syntax, Regular Languages and Regular Expressions
Sep 1 Lecture 2: Finite Automata, Lexical Analysis
Sep 6 Lecture 3: Designing Finite Automata, Eliminating Nondeterminism
Sep 8 Lecture 4: Context-Free Languages, Parsing, Ambiguity
Sep 13 Lecture 5: Eliminating Ambiguity, Recursive Descent Parsing
Sep 15 Lecture 6: Precedence Climbing, Abstract Syntax Trees
Sep 20 Lecture 7: Turing Machines
Sep 22 Lecture 8: Decidability and the Halting Problem
Sep 27 Lecture 9: Decidability of Regular Languages
Sep 29 Exam 1 (open book, open notes)
Oct 4 CBT, Chapters 1–2, Lecture 10: Why Clojure?
Oct 6 CBT, Chapter 3, pages 35–48, Lecture 11: Clojure Data Structures
Oct 11 CBT, Chapter 3, pages 48–69, Lecture 12: Clojure functions
Oct 13 CBT, Chapter 4, pages 71–84, Lecture 13: Map, filter, reduce, and higher-order functions
Oct 18 Fall break, no class
Oct 20 CBT, Chapter 5, Lecture 14: Recursion and iteration
Oct 25 Recursion review
Oct 27 Lecture 15: Prolog
Nov 1 Lecture 16: More Prolog
Nov 3 CBT, Chapter 7, Lecture 17: Clojure reader and evaluator
Nov 8 CBT, Chapter 8, Lecture 18: More Clojure macros, Clojure review 1
Nov 10 Clojure review 2
Nov 15 Clojure review 3
Nov 17 Lecture 19: Virtual Machines
Nov 22 Exam 2
Nov 24 Thanksgiving vacation, no class
Nov 29 Lecture 20: Erlang
Dec 1 Lecture 21: More Erlang
Dec 6 Lecture 22: Concurrency in Erlang
Dec 8 Lecture 23: Concurrency in Clojure
Dec 13 Lecture 24: Agents in Clojure