skip to primary navigationskip to content

Course pages 2021–22

Concepts in Programming Languages

Covid-19 effects on 2021/22 course

Due to Covid-19 the core material of the course will be presented by videos on the Recordings tab. However, provided the rate of Covid-19 infections drops it is hoped there will additional physical lectures, perhaps on alternative material, perhaps given in the second half of the course.

There will also be 'office hours' on Teams/Zoom, on a subset of the scheduled lecture slots, during which students can pose questions to the lecturer (just like the end of an in-person lecture).

Handouts

Some additional background and code examples

Some additional exercises

Supervision question sets courtesy of Andrew Rice

(Note that topics VII, X and XI have been added/re-written since these questions were written.)

Exercises by Andrej Ivašković

Slides by topic and pointers to further reading material

  1. Introduction and motivation.
    Supplementary reading material:
  2. The first procedural language: FORTRAN (1954-58).
    Supplementary reading material:
  3. The first declarative language: LISP (1958-62).
    Supplementary reading material:
  4. Block-structured procedural languages: Algol (1958-68) and Pascal (1970).
    Supplementary reading material:
  5. Object-oriented languages -- Concepts and origins: SIMULA (1964-67) and Smalltalk (1971-80).
    Programming language: Squeak.
    Supplementary reading material:
  6. Types in programming languages: ML (1973-1978).
    Supplementary reading material:
  7. Scripting Languages and Dynamic Typing.
  8. Data abstraction and modularity: SML Modules (1984-97).
    Supplementary reading material:
  9. Languages for concurrency and parallelism
    • Functional-style programming meets object-orientation
      Programming language: Scala.
      Supplementary reading material:
    • Miscellaneous concepts.

    Books

    Further reading material (due to Marcelo Fiore); not needed for examination purposes