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