Schedule of Classes for CS410/510 Advanced Programming

Week 1 4 April 2006 6 April 2006
Whole objects Black: Introduction to Smalltalk. Enough Smalltalk to solve the "Parse Numerals" problem. Homework: address this problem without explicit loops or recursion. Black at HOPL III PC meeting. Class looks at Squeak numeral parsing code. Sheard revisits "parsing numerals" using lists, pairs, and recursive functions.
Week 2 11 April 2006 13 April 2006
Closures and Comprehensions Class looks at Haskell solutions to the numeral parsing problem. Black introduces other Squeak collections beyond Arrays. The Collection closure operation. Sunit. Homework: Geometric Intervals and tests. The Haskell list library and list comprehensions. Normal forms and fixedpoints. Hamming's problem and its solution.
Week 3 18 April 2006 20 April 2006
Fixpoints and normal forms.

Start on Regular languages.

The Smalltalk equivalent of list operations and comprehensions. Folds and inject:into: The select: method. Assignment: writing the closeUnder: method. Regular Expressions. Inductive definition. Representation in Haskell. Functions to generate (approximations to) the set of strings in an RE and to test whether a string is in the RE. Use TDD in class. Assignment: nullable and single character prefix operations
Week 4 25 April 2006 27 April 2006
Regular Languages

REs and FSMs

Sheard at Nottingham summer school

Regular expressions revisited in Smalltalk. FSMs in Smalltalk. Operations on REs. nullable and single character prefix defined in Smalltalk.

Assignment: longest match operation by iteration of single character match.

Sheard at Nottingham summer school

Finite State Machines. Definition from automata theory; translation into classes. Parallel definitions of operations on FSMs and REs. Translation of FSMs into REs and back.

Assignment: turn a non-deterministic FSM into a deterministic FSM.

Week 5 2 May 2006 4 May 2006
Finite State Machines and grammars. Black at Dagstuhl workshop

FSMs in Haskell. Minimizing an FSM (potentially).

Black at Dagstuhl workshop

Introductions to grammars. Representing a grammar in Haskell. Table-driven parsing.

Week 6 9 May 2006 11 May 2006
Parsing Parsing combinators in Haskell. Student problems. Structure of parsing combinators in Smalltalk
Week 7 16 May 2006 18 May 2006
More parsing combinators. Writing parsers. Errror reporting.
Week 8 23 May 2006 25 May 2006
Week 9 30 May 2006 1 June 2006
Week 10 6 June 2006 8 June 2006