A Course on Software Enigneering for Concurrent Systems

  title={A Course on Software Enigneering for Concurrent Systems},
  author={Kuo-chung Tai},
  • K. Tai
  • Published in CSEE 28 November 1988
  • Computer Science
This paper describes a graduate level course that covers concepts, techniques and tools for the specification, design, coding, and validation of concurrent software. This course is intended to transfer practical software engineering technology for the production of reliable concurrent software systems. One unique aspect of this course is the use of a collection of tools developed at NCSU for testing and debugging concurrent software. 


Testing a multiprogramming system
The method used to test the RC 4000 multiprogramming system, which consists of fifty machine instructions centralized in two procedures, was made virtually error free within a few weeks.
Reproducible testing of monitors
A systematic method for testing monitor modules which control process interactions in concurrent programs, which has been successfully used to test a multicomputer network program written in Concurrent Pascal.
A general-purpose algorithm for analyzing concurrent programs
A static analysis algorithm is presented here that addresses the following problems: how processes are synchronized, what determines when programs are run in parallel, and how errors are detected in the synchronization structure.
Introduction to Distributed-Software Engineering
This article addresses several of new and challenging problems for software developers with a focus on distributed-software engineering, using the software life cycle as a guide.
Concepts and Notations for Concurrent Programming
This paper identifies the major concepts and describes some of the more important language notations for writing concurrent programs and three general classes of concurrent programming languages are identified and compared.
Path Expressions in Pascal
The enhancement of Pascal to specify synchronization between concurrent processes by Path Expressions is described, being used to gain experience in the design and construction of practical real time systems and operating systems.
Extending Modula-2 to Build Large, Integrated Systems
Designed to build both system and application software for large systems, Modula-2+ supports exception handling, automatic storage management, and concurrency for multiprocessors without compromising
Debugging Ada Tasking Programs
Debuggers for parallel programs have to be more than passive information gatherers-they should automatically detect errors and extend existing tools that detect deadlock.
Implementing data abstractions and monitors in UCSD Pascal
This paper discusses practical techniques for realizing these programming constructs in the UCSD dialect of Pascal in order to implement both data abstractions and monitors.