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, Aug 26 Lecture 1: Syntax, Regular Languages and Regular Expressions
Thurs, Aug 28 Lecture 2: Finite Automata, Lexical Analysis
Tues, Sep 2 Lecture 3: Designing Finite Automata, Eliminating Nondeterminism
Thurs, Sep 4 Lecture 4: Context-Free Languages, Parsing, Ambiguity
Tues, Sep 9 Lecture 5: Eliminating Ambiguity, Recursive Descent Parsing
Thurs, Sep 11 Lecture 6: Precedence Climbing, Abstract Syntax Trees
Tues, Sep 16 Lecture 7: Turing Machines
Thurs, Sep 18 Lecture 8: Decidability and the Halting Problem
Tues, Sep 23 Lecture 9: Decidability of Regular Languages
Thurs, Sep 25 Exam 1 (open book, open notes)
Tues, Sep 30 Chapter 7 (Clojure), Lecture 10: Why Clojure?
Thurs, Oct 2
Tues, Oct 7 Lecture 11: Recursion and iteration in Clojure
Tues, Oct 28 Chapter 4 (Prolog), Lecture 12: Prolog
Thurs, Oct 30 Lecture 13: More Prolog
Tues, Nov 4 Chapter 6 (Erlang), Lecture 14: Erlang
Thurs, Nov 6 Lecture 15: More Erlang
Tues, Nov 11 Lecture 16: Concurrency in Erlang
Thurs, Nov 13 Chapter 2 (Ruby), Lecture 17: Ruby
Tues, Nov 18 Lecture 18: Ruby Arrays, Hashes, Mixins
Thurs, Nov 20 Lecture 19: Metaprogramming in Ruby