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.

Important: Do the readings in advance!

Date Readings
Tues, Sep 1st Lecture 1: Syntax, Regular Languages and Regular Expressions
Thurs, Sep 3rd Lecture 2: Finite Automata, Lexical Analysis
Tues, Sep 8th Lecture 3: Designing Finite Automata, Eliminating Nondeterminism
Thurs, Sep 10th Lecture 4: Context-Free Languages, Parsing, Ambiguity
Tues, Sep 15th Lecture 5: Eliminating Ambiguity, Recursive Descent Parsing
Thurs, Sep 17th Lecture 6: Precedence Climbing, Abstract Syntax Trees
Tues, Sep 22nd Lecture 7: Turing Machines
Thurs, Sep 24th Lecture 8: Decidability and the Halting Problem
Tues, Sep 29th Lecture 9: Decidability of Regular Languages
Thurs, Oct 1st Exam 1 (open book, open notes)
Tues, Oct 6th Chapter 7 (Clojure), Lecture 10: Why Clojure?
Thurs, Oct 8th Lecture 11: Recursion and iteration in Clojure
Tues, Oct 13th Lecture 12: Clojure data structures
Thurs, Oct 15th Lecture 13: Map, filter, reduce, and higher-order functions
Tues, Oct 20th Fall break, no class
Thurs, Oct 22nd Chapter 4 (Prolog), Lecture 14: Prolog
Tues, Oct 27th Lecture 15: More Prolog
Thurs, Oct 29th Chapter 6 (Erlang), Lecture 16: Erlang
Tues, Nov 3rd Lecture 17: More Erlang
Thurs, Nov 5th Lecture 18: Concurrency in Erlang
Tues, Nov 10th Clojure review 1
Thurs, Nov 12th Chapter 2 (Ruby), Lecture 19: Ruby
Tues, Nov 17th Clojure review 2
Thurs, Nov 19th Lecture 20: Ruby Arrays, Hashes, Mixins
Tues, Nov 24th Exam 2 (programming, open book, open notes)
Thurs, Nov 26th Thanksgiving vacation, no class
Tues, Dec 1st Lecture 21: Metaprogramming in Ruby
Thurs, Dec 3rd Chapter 5 (Scala), Lecture 22: Scala
Tues, Dec 8th Lecture 23: Functional programming in Scala
Thurs, Dec 10th Lecture 24: Operator overloading, Actors in Scala
Tues, Dec 15th Chapter 8 (Haskell), Introduction to Haskell