Module 02324 (2002)

Syllabus page 2002/2003

06-02324
Real-Time Systems Programming

Level 2/I

tha
10 credits in Semester 2

Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus


The Module Description is a strict subset of this Syllabus Page. (The University module description has not yet been checked against the School's.)

Relevant Links


Outline

Basic concepts and fundamental problems of concurrency; hardware mechanisms for process switching and mutual exclusion; low-level mutual exclusion algorithms and some pitfalls; semaphores; buffering; concurrent programming with threads in Java.


Aims

The aims of this module are to:

  • to introduce the basic concepts and terminology of concurrent programming
  • to give an appreciation of the wide range of applications of concurrent programming, including both real-time and parallel applications
  • to give an appreciation of the special difficulties in achieving reliability in concurrent software
  • to introduce the basic ideas of concurrent program analysis
  • to give a good understanding of a wide variety of primitive concurrency mechanisms and how to use them in practice in a wide variety of application areas

Learning Outcomes

On successful completion of this module, the student should be able to: Assessed by:
1judge for what applications and in what circumstances concurrent programs are appropriate Examination
2understand the terminology of concurrent programmingExamination
3design concurrent algorithms using a variety of primitive concurrency mechanismsExamination
4analyse the behaviour of simple concurrent programs with respect to safety and liveness issues Examination

Restrictions, Prerequisites and Corequisites

Restrictions:

None

Prerequisites:

(06-08744 (Software Workshop 1 A) and 06-08745 (Software Workshop 1 B)) OR (06-08747 (Software Workshop 1(A) A) and 06-08750 (Software Workshop 1(A) B))

Co-requisites:

None


Teaching

Teaching Methods:

2 hrs lectures/tutorials per week

Contact Hours:

24


Assessment

  • Supplementary (where allowed): As the sessional assessment
  • 2 hr examination (100%).

Recommended Books

TitleAuthor(s)Publisher, Date
Lecture NotesT. Axford
Concurrent Programming: Principles and PracticeG.R. Andrews
Principles of Concurrent and Distributed ProgrammingM. Ben-Ari

Detailed Syllabus

  1. Introduction (2 lectures)
    • Basic concepts and definitions of terms
    • Standard concurrency problems (mutual exclusion, producer-consumer, readers-and-writers, Dining Philosophers)
  2. Basic Hardware Mechanisms (3 lectures)
    • Process switching and its implementation in hardware and software
    • Mutual exclusion - on memory access, of individual instructions, by disabling interrupts, multiprocessor mechanisms
    • Message passing in distributed systems
  3. Low-Level Mutual Exclusion Algorithms (3 lectures)
    • Using special instructions
    • Using ordinary instructions - Peterson's Algorithm
    • Definitions and examples of lack of safety, deadlock, permanent blocking, starvation, lack of liveness
  4. Semaphores (2 lectures)
    • Boolean and integer semaphores
    • Mutual exclusion and resource allocation applications
    • Weak and strong semaphores
    • Implementation of semaphores
  5. Buffering Techniques (3 lectures)
    • Definition of producer-consumer problems
    • Single buffering
    • Double buffering
    • Bounded buffer queues, other variations and applications
  6. Threads in Java (5 lectures)
    • Thread creation and management
    • Mutual exclusion with threads
    • Making threads wait
    • Example applications (producer-consumer, dining philosophers)
    • The Java model of concurrency
  7. Class Tests and Discussion of Exercises (remaining lectures)

Last updated: 29 July 2001

Source file: /internal/modules/COMSCI/2002/xml/02324.xml

Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus