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 |