Department and Course Number

CEG 434

Course Coordinator

Bin Wang

Course Title

Concurrent Software Design

Total Credits

4

Catalog Description

Classical problems of synchronization and concurrency and their solutions, inter-process communication mechanisms, thread concept, and thread based programming are examined through course projects and readings of operating system design. 4 credit hours. Prerequisites: CEG 433.

Text Books

  1. Avi Silberschatz and Peter Galvin, Operating System Concepts, 5th Ed, Addison-Wesley, 1998, ISBN 0-201-59113-8.
  2. Robbins and Robbins, Practical Unix Programming: A guide to Concurrency, Communications and Multithreading, Prentice Hall, 1996, ISBN 0-13-443706-3.
  3. John S. Gray, Interprocess Communications in UNIX: The Nooks and Crannies, 2nd Ed, Prentice Hall, 1998, ISBN 0-13-899592-3.

Home Page

koala.cs.wright.edu/~bwang/teaching.htm

News Group

wright.ceg.434_634 Post all your questions, helpful comments, criticisms, and suggestions regarding this course (lectures, projects, quizzes, exams) to our news group.

Course Goals

The student should have learned the following:

  1. Process relationships and management in Unix.
  2. Inter-process communication mechanisms: pipe, FIFO, socket.
  3. Race conditions and critical sections.
  4. Classic synchronization problems: readers/writers, bounded buffer, dinning philosophers. Process synchronization mechanisms: semaphore, monitor, and hardware support for synchronization.
  5. Multithreaded programming.
  6. Conditions for deadlock; Prevention mechanisms; Avoidance and detection algorithms.

The student should be able to apply the concepts above to the following:

  1. Develop, test, and debug multi-process programs in Unix.
  2. Develop, test, and debug multithreaded programs in Unix
  3. Communicate between processes via Unix pipes and FIFOs and via sockets.
  4. Communicate between process across the Internet via sockets
  5. Derive deadlock free solutions to common synchronization problems

Prerequisites by Topic

  1. Programming experience in C or C++ in a Unix environment
  2. Program development tools: editors, compilers, linkers, and debuggers
  3. Data structures: arrays, stacks, queues, lists, binary trees
  4. Processes and processes scheduling for uni-processor systems
  5. Process management system calls in Unix

Major Topics Covered in the Course

Wk

Lectures

Reading

1

Introduction to Concurrent Programming, Review of Unix I/O, Process Control

Robbins: 1,2,3

2

Basic Unix Inter-process Communication (Pipes, FIFOs)

Robbins: 3,4

3

Asynchronous Events and Unix Signals

Robbins: 5

4

Client Server Communication via Sockets; TCP Sockets connection-oriented protocol

Gray: 10

5

UDP Sockets connectionless protocol

Gray: 10

6

Process Coordination: Bounded buffer problem; Critical Sections; Semaphores; Hardware support for synchronization

Silberschatz: 6 Robbins: 8

7

Process Coordination: Readers and Writers problem; Dining Philosophers problem; Monitors

Silberschatz: 6

8

Threads: Introduction, User level vs. kernel level, POSIX Thread management

Robbins: 9

9

Threads: POSIX Thread Synchronization mechanisms

Robbins: 10

10

Deadlock: Necessary conditions; Prevention, avoidance and detection

Silberschatz: 7

Laboratory Projects

There are three projects for the course, each of which accounts for 15% of the final grade (There two quizzes, one midterm, and one final exam.). Your solutions may be developed in C, or C++, and must run on the College of Engineering and Computer Science Unix workstations. You will be given approximately 2 weeks for each assignment. Bonus credits will be offered in programming assignments. These projects must be work done solely by you, except for the parts provided by the instructor.

The projects are evaluated based on three criteria: (1) design, (2) implementation correctness, and (3) clarity (coding as well as report).

Newsgroup Activity

wright.ceg.434_634 Post all your questions, helpful comments, criticisms, and suggestions regarding this course (lectures, projects, quizzes, exams) to our news group.

Estimate CSAB Category Content

 

Core

Advanced

 

 

Core

Advanced

Data Structures

 

1.0

 

Concepts of PL

 

 1.0

Algorithms

 

1.0

 

Comp Organization + Architecture

 

 

Software Design

 

1.0

 

Other

 

Oral and Written Communications

There are no oral presentations.  Students submit source code of their projects along with a write-up that highlights the design details as well as problems and defects in their programs.  The write-up helps students document their design, problems, and solutions in the course of their projects.

Social and Ethical Issues

None.

Theoretical Content

Algorithm design, analysis, and correctness proof for critical section problems, deadlock prevention, avoidance, and detection.

Problem Analysis

The three projects are focused on how to utilize concurrency in software design. Each project emphasizes on a different aspect of concurrent software design and process synchronization. Detailed analyses of the project requirements are performed by the students in order to make the developed software efficiently utilize concurrency before implementation starts.

Solution Design

The three projects are all about writing, testing, and debugging multiple process based software using different inter-process communication mechanisms and process synchronization facilities. Lectures present various choices available in an operating system. Students are required to design further details specific to the project at hand and implement them.