Lectures
| Lecture 1 | Mon, June 05 | Introduction and motivation, why study programming languages, types of languages, compilation and interpretation. Introduction to Ruby, application of scripting languages. Ruby basics. Declarations in Ruby. |
| Lecture 2 | Tue, June 06 | Control structures. Classes and objects. Ruby is dynamically typed. Strings. Deep and shallow copy. Writing classes in Ruby. |
| Lecture 3 | Thu, June 08 | The Array class. Iterating through arrays. The Hash class. Code blocks. Opening files. The Range class. Case/when. |
| Lecture 4 | Mon, June 12 | Introduction to formal languages. Operations on languages. Regular expressions. (I won't use slides.) |
| Lecture 5 | Tue, June 13 | Regular expressions in Ruby. |
| Lecture 6 | Thu, June 15 | NFA and DFA. (I won't use slides.) |
| Lecture 7 | Mon, June 19 | Converting between NFA, DFA and RE. Properties of regular languages. (No slides.) |
| Lecture 8 | Tue, June 20 | Garbage collection. (Not in midterm 1.) Review for the midterm. |
| Lecture 9 | Thu, June 21 | Start OCaml language. |
| Lecture 10 | Mon, June 26 | More Ocaml (recursion on lists, user defined types...). |
| Lecture 11 | Tue, June 27 | Finish Ocaml (currying, exceptions...). |
| Lecture 12 | Thu, June 29 | Grammars and the hierarchy of formal languages. (No slides.) |
| Lecture 13 | Mon, July 3 | Context-free grammars and BNF. |
| No class | Tue, July 4 | Happy 4th of July! |
| Lecture 14 | Thu, July 6 | AST and recursive descent parser. Review for the midterm. |
| Lecture 15 | Mon, July 10 | Lambda calculus. |
| Lecture 16 | Tue, July 11 | History of programming languages. |
| Lecture 17 | Thu, July 13 | Prolog. (no slides) |
| Lecture 18 | Mon, July 17 | Threads in Java (part 1). |
| Lecture 19 | Tue, July 18 | Threads in Java (part 2). |
| Lecture 20 | Thu, July 20 | Generics in Java 1.5. Exception handling. |
| Lecture 21 | Mon, July 24 | Parameter passing, scoping and functional programming in OO languages. |
| Lecture 22 | Tue, July 25 | To be decided depending on what I am able to cover on Monday. |
| Lecture 23 | Thu, July 27 | Review for the final exam. |