Department of
Computer Science


CS 410/510 Advanced Programming



Lecture Notes

Lecture 1: 4 April 2006

  • Introduction to the Course (pdf, ppt, key).
  • Introduction to Object-Oriented programming in Smalltalk (pdf, ppt, key). Encapsulation, philosophy, syntax of methods. Using blocks, Array, and collect:

Lecture 2: 6 April 2006

  • Introduction to Haskell (pdf, ppt).

Lecture 3: 11 April 2006

Lecture 4: 13 April 2006

Lecture 5: 18 April 2006

  • "List" operations in Smalltalk. Lessons from the GeometricInterval Homework. Tests for GeometricIntervals. Hamming's problem revisited; fixpoints and closure on collections. Tests and code for Hamming's problem developed in class. (pdf, ppt).

Lecture 6: 20 April 2006

  • Regular expressions in Haskell. REs viewed as data structures, as sets of strings, as recognizers. The maximalMunch of an RE applied to a string. Slides (pdf, ppt). Haskell code.

Lecture 7: 25 April 2006

  • Collaborative programming of Hamming's problem. Regular Expressions in Smalltalk. Treating tests as data, refactoring tests, using subclasses, conversion methods. Slides (pdf, ppt). Smalltalk versions 1, 2, 3 and 4.

Lecture 8: 27 April 2006

  • Finite State Machines. Constructing FSMs from regular Expression. Accepting strings. Deterministic FSMs from NFSMs. Slides (pdf, ppt). Smalltalk changeset.
    Definition of finite automata and the subset construction proof Hopcroft & Ullman (pp. 27-33).

Lecture 9: 2 May 2006

  • Regular Expression matching using match1 repeatedly. FSMs in Haskell. Slides (ppt, pdf)

Lecture 10: 4 May 2006

Lecture 11: 9 May 2006

  • Parsers in Haskell using monads. Compositional programming (ppt, pdf). Parsing.hs.

Lecture 12: 11 May 2006

  • Parsers in Smalltalk using blocks. Class Outline (oo3, pdf).

    Sample class showing conversion from NFSM to DFSM.

    Merge of ordered collections as example of the use of streams.

    Changeset containing Andrew's implementation of composible parsers in Smalltalk

Lecture 13: 16 May 2006

  • Review of NFSM to DFSM conversion. More on parsers in Smalltalk using blocks. Extended class outline (oo3, pdf).

    Changeset containing the completed refactoring of parsers that we started in class.

Lecture 14: 18 May 2006

  • Error reporting in Smalltalk parsers. Creating a class Fail as subclass of UndefinedObject to capture stream state and reason for failure. Problem with ifNil:ifNotNil: being open-coded by the compiler led to use of ifFail:ifNotFail:.

    Changeset containing the completed refactoring of parsers that we started in class.

Lecture 15: 23 May 2006

  • Profiling in Haskell. Using time and space profiles on Quik. (ppt, pdf). Final version of sort1.hs

Lecture 16: 25 May 2006

Lecture 17: 30 May 2006

Lecture 18: 1 June 2006

Lecture 19: 6 June 2006

  • Type Classes and Generic Programming in Haskell. Slides (pdf, ppt).

Lecture 18: 8 June 2006

  • Things "Meta" in Smalltalk, with examples, mostly drawn from the previous programming projects. The OmniBrowser as an example of a data-driven program. Slides (pdf, ppt, keynote).

Most recently modified on Thursday 15 June 2006 at 16.37

Andrew P. Black