Lecture: 3 hours

Laboratory: 3 hours

Prerequisite: Course 140A, 150

Grading: Letter; presentations (45%), paper + project (45%), class participation (10%).

Catalog Description:
Language design parameters. Models of parallel machines. Load balancing. Scalability. Portability. Efficiency measures. Design and implementation techniques for several classes of concurrent programming languages (such as object-oriented, functional, logic, and constraint programming languages).

There are a number of elements – such as computational and resource efficiency requirements, models of computation, machine configurations, and software development concerns – that influence the design and implementation of a concurrent programming language. Many of the elements are inter-dependent, some with conflicting requirements. The design and implementation of a concurrent programming language is therefore difficult and complex.

In this course, we will study the design and implementation of many concurrent programming languages. The focus will be on the implementation techniques. There are two goals:

  1. Develop a clear understanding of the varous elements and the manner in which the elements affect the design and implementation of concurrent programming languages
  2. Study the existing design and implementation techniques for many concurrent programming languages. We will use the parameters developed in the first to analyze the techniques

Expanded Course Description:

Part I, Language Parameters

  1. Application characteristics:
    1. Computational and resource efficiency
      1. Efficiency metrics
      2. Program partitioning
      3. Load balancing
    2. Scalability
    3. Reliabilty
    4. Portability
  2. System characteristics:
    1. Memory models
    2. Memory Hierarchy
    3. Communication models
    4. System design Primitives
      1. Concurrency primitives
        1. processes, threads
      2. Low level synchronization primitives
        1. hardware
        2. software
  3. Software development characteristics:
    1. Models of concurrent computation
    2. Modularity
    3. Reusability
    4. Ease of programming

Part 2, Language Design and Implementation

  1. Conventional concurrent programming languages
  2. Object-oriented concurrent programming languages
  3. Logic programming languages
  4. Functional programming languages
  5. Constraint programming languages

Selected papers from the literature.

Computer Usage:
Students work in groups on experiments designed to test different aspects of language design and implementation. Students design and implement experiments, and run them on parallel and distributed systems (incl. networks of workstations).

Substantial laboratory work involves i) concurrent programming using different computation models, ii) experimental analysis of existing software systems such as thread, communication, and distributed shared memory packages, and/or iii) implementation of a concurrent or parallel programming model or construct.

Engineering Design Content:

Lectures discuss general parameters of concurrent programming languages, their tradeoffs, and their impact on application programming. The presentations, paper, and project focus on design and implementation issues for concurrent programming languages. Typical examples of these activities include: designing the implementation for a particular part of an existing language; designing a concurrent programming language and the implementation of its key parts; examining trade-offs among existing implementations of an existing language; adding a new feature to a language and its implementation; and modifying an existing implementation of an existing language. Lectures and other activities will also address implementation goals such as performance, portability, effort, etc. as well as their trade-offs.

ABET Category Content:
Engineering Science: 1 unit
Engineering Design: 3 units

Instructors: R. Pandey, R. Olsson

Prepared By: R. Pandey (Feb. 1997)


Last revised: 2/97