CMSC 330
Organization of Programming Languages
Summer 2006
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.