CS 342/358. Concurrent Object-Oriented Programming

Gates 100
M W 12:50-2:05

Course Description

This course will examine issues in the design of concurrent object-oriented programming languages. The main goals are to understand the design space of concurrent object-oriented languages, explore some of the trade-offs, and become familiar with some of experiments that have been carried out by previous researchers.

A central issue in the design of concurrent object-oriented languages is the relation between objects and processes. Processes and objects are both relatively complex entities that are used to structure the control and data flow of computation. A reasonable starting point in language design is to expect some form of connection between the two constructs. In addition, it seems difficult to avoid design considerations that involve interactions between obejcts and processes. For example, messages to objects might be serialized, or allowed to arrive in parallel.

Some of the main language design possibilities are listed below:

  • process generation and termination
  • synonymous with object creation and termination
  • separate mechanisms
  • atomicity considerations
  • communication
  • shared variables
  • channels
  • message send
  • broadcast
  • possibility of failure
  • synchronization
  • synchronous communication
  • separate mechanism
  • This course does not significantly overlap with previous versions of CS 342/358. It may be repeated for credit.

    Students are required to complete a term project, which may be either a classroom presentation or written report. The topic may either be a survey and analysis of some problem relevant to the course or independent original research on a scale appropriate for a 3-credit course.

    Prerequisite: CS 242 or CS 258.