Lectures

Lecture 1 (8.2) - Concurrency: what, why, how

Links

  • Reading List on Parallel Programming Languages (html pages) (ps)
    • list of some PLs by type

Articles

  • Programming languages for distributed computing systems, (ACM); Henri E. Bal, Jennifer G. Steiner, Andrew S. Tanenbaum; 1989
  • Models and languages for parallel computation (ACM); David B. Skillicorn, Domenico Talia; 1998

Lecture 2 (15.2) - Problems with concurrency

Lecture 3 (22.02) - Declarative concurrency

CTM Book

  • section 2.2, The single-assignment store
  • section 2.4, Kernel language semantics (optional)
  • section 3, declarative programming
    • section 3.1, What is declarativeness?
    • section 3.2, Iterative computation
    • section 3.3, Resursive computation
      • section 3.4.2, Programming with lists
      • section 3.4.3, Accumulators
    • section 3.6.2, Loop abstractions
  • section 4.1.2-4.1.4, Declarative concurrency

Other material:

  • Making the transition from sequential to implicit parallel programming
    • Part 5, Implicit Parallel Programming: Declarative Programming Languages (html)
  • Haskell wiki: Functional programming

Lecture 4 (1.03) - Emacs and Mozart

  • Emacs - text editor with a lot of addons
  • The Mozart Programming System site
    • Oz VM + tools + libraries
    • need version 1.4 (version 1.3 is ok until distributed programming is concerned, which is second half of the course)
    • oz - Oz Programming Interface (OPI), i.e. IDE, inside Emacs
    • ozc - Oz compiler, ozengine - Oz VM

Lecture 5 (8.03) - Programming in declarative model (1)

  • Slides: (pdf)
    • this lecture up to (excl.) slide 23: Binary Search Tree
    • some material from below will be given on the next lecture

CTM Book

  • section 3.4.4, Difference lists
  • section 3.4.5, Queues
  • section 3.4.6, Trees: ordered binary tree
  • sections 3.7.1-3.7.3, declarative stack and dictionary

Other courses

  • A more traditional course (html)
    • 3. Declarative Programming Techniques (ppt slides)

Blog posts

Code

  • "Purely functional data structures" in Oz (wiki)
  • "The 99 problems" in Oz (wiki)

Lecture 6 (15.03) - Programming in declarative model (2)

  • Materials (see previous lecture slides)
    • concurrency in DFT
    • BFT idea, concurrency in BFT
      • observable declarativeness
    • sorted trees, queue, graphs and other algorithms
    • pros and cons of DC: easy concurrency, cheap undo, cumbersome in some

Lecture 7 (22.03) - Streams and ports

CTM Book

  • 4.3 Streams
  • 4.5.3 Lazy streams
  • 4.5.4 Bounded buffer
  • 4.5.5 Reading a file lazily
  • 4.7 Limitations and extensions of declarative model
  • 4.9 Advanced topics
  • 5.1.1 Ports
  • 5.2 Port objects
  • 1.15 non-determinism and time
    • interleavings, observable non-determinism

Other material

  • Time, Clocks, and the. Ordering of Events in a Distributed System. Leslie Lamport (PDF)
    • about non-observable non-determinism

Lecture 8 (29.03) - Agents

CTM Book

  • 5.2 Port objects
  • 5.3 Simple message protocols
  • 5.4 Program design for concurrency
  • 5.5 Using message-passing model directly

Lecture 9 (5.04) - Explicit state

CTM Book

  • 6.1 What is state?
  • 6.3 The declarative model with explicit state
  • 8.1 The shared state concurrent model
  • 8.2 Programming with concurrency
    • which model to use?
  • 8.3 Locks
  • 8.4 Monitors
  • 8.5 Transactions

Lecture 10 (12.04) - Confinments, objects, and actors

CTM Book

  • 7.1.3 Objects and classes
  • 7.2 Classes as complete ADTs
  • 7.3 Classes as incremental ADTs
  • 7.4.3 Generic classes
  • 7.8 Active objects (actors)

Lecture 11 (19.04) - Concurrency in other languages

  • Haskell: haskell wiki on Concurrency
    • Parallel Haskell
    • Concurrent Haskell
      • concurrency with forkIO and MVars
      • Concurrent programming with threads from Chapter 24
  • Erlang
    • atoms, records, single assignment, pattern matching, agents: process creation, message passing, inbox with selective receive and timeouts, tail recursion with several functions
    • User's guide
  • Scala
    • val (vs. var) for single assignment variables
    • actors: receive vs. react
    • passing immutable data between threads
  • E
    • futures in messages
  • Alice ML
    • futures: concurrent future, lazy future, promised future

Lecture 12 (26.04) - Distributed programming in Oz

  • Slides (pdf)
    • I suggest start reading from the book, then chapter 3 of PhD thesis keeping in mind that the principles are still the same while some details may have changed (see DP module for the latest information)
  • Some function names and concepts (e.g. access architectures) may differ in tutorials and documentation (inheritance from previous Mozart versions)

CTM Book (some details, especially the fault model are specific to mozart 1.3)

  • 11.2 The distribution model
  • 11.3 Distribution of declarative data
  • 11.4 Distribution of state
  • 11.5 Network awareness
  • 11.7 Distribution protocols

More material for mozart 1.4

  • Raphaël Collet PhD thesis. The Limits of Network Transparency in a Distributed Programming Language (2007) pdf
    • Chapter 3: Application structure and distribution behavior
      • access architectures seem to be dropped out of newest Mozart version
  • Mozart Distributed Programming tutorial. html
    • Chapters 1-3
      • some basic ideas, shows how to make stationary objects using ports (i.e. the old way), %

Lecture 13 (3.05) - Fault tolerance in Oz

  • Slides (to be uploaded)

Material

  • Raphaël Collet PhD thesis. The Limits of Network Transparency in a Distributed Programming Language (2007) pdf
    • Chapter 4: Asynchronous failure handling
  • Mozart Distributed Programming tutorial.

Lecture 14 (17.05) - Examples, fault tolerance in Erlang

edit