Engr 664: Concurrent Programming
Fall Semester 2009
Syllabus


Locations

The fall semester 2009 class meets in 235 Weir Hall at 8:00 a.m. on Tuesdays and Thursdays.

The class is taught by Prof. Conrad Cunningham, whose office is in 203 Weir Hall. The official office hours for this class are from 10:00 to 11:30 on Tuesdays and Thursdays and by appointment at other times.

Prof. Cunningham's voice telephone number is (662) 915-5358 and fax number is (662) 915-5623. His WWW home page is http://www.cs.olemiss.edu/~hcc/ and his email address is cunningham AT cs DOT olemiss DOT edu.

The WWW home page for this class is http://www.cs.olemiss.edu/~hcc/engr664/ .

The final examination for this class is scheduled for Tuesday, 8 December, 8:00 a.m..

Student Disabilities Services Statement

"It is the responsibility of any student with a disability who requests a reasonable accommodation to contact the Office of Disability Services (915-7128). Contact will then be made by that office through the student to the instructor of this class. The instructor will then be happy to work with the student so that a reasonable accommodation of any disability can be made."

Course Description from Catalog

Topics in the theory of concurrent programming. Models of concurrency. Programming logics. Emphasis on the formal specification and verification of concurrent programs.

Prerequisites

This class is intended for students admitted in full standing in the graduate emphasis in Computer Science. Students are expected to have a background in finite state machines, operating systems, algorithms, data structures, programming languages, and discrete mathematics typical of an undergraduate computer science program. Use of the the Java programming language will likely be required in programming exercises. (Optionally, use of a language such as Scala that interoperates with Java will be encouraged.)

Graduate students in other fields should not be enrolled in this class without the explicit permission of their department and the instructor for this course.

Course Outcomes/Objectives

Upon successful completion of this course, students:

  1. know and understand the fundamental concepts for concurrent programming (e.g., processes, threads, interaction),
  2. know and understand the issues that can arise in concurrent programs (e.g., interference, deadlock, starvation)
  3. know and understand the basic techniques for concurrent programming (e.g., mutual exclusion, condition synchronization, message passing),
  4. know and understand the fundamental concepts of modeling concurrent systems with finite state machines (e.g., the Finite State Processes notation),
  5. can build appropriate finite state machine models for simple concurrent systems,
  6. can express desirable and undesirable properties of concurrent systems (e.g., safety, liveness),
  7. can apply a model-checking tool (e.g., the Labelled Transition System Analysis tool) to evaluate whether the models have the desirable properties and do not have the undesirable ones,
  8. know and understand the concurrent programming features of a programming language (e.g., Java),
  9. can implement finite state machine models as concurrent programs in the programming language,
  10. can analyze a concurrent programming problem to design an appropriate concurrent architecture,
  11. can evaluate alternative concurrent architectures for a problem,
  12. know and understand a few selected advanced techniques and architectures (e.g., dynamic systems, timed systems, filter pipelines).

Source Materials

Textbook:
Jeff Magee and Jeff Kramer. Concurrency: State Models and Java Programs, Second Edition, Wiley, 2006. ISBN-13: 978-0-470-09356-6.

Software:
Labelled Transition System Analysis (LTSA) toolset from the textbook's companion website http://www.doc.ic.ac.uk/~jnm/book/.

Java or other languages such as Scala.

Readings:
Various journal and conference articles, research reports, and other materials as appropriate.

Course Topics

    Core

  1. Concurrency concepts
  2. Processes and threads
  3. Concurrent execution
  4. Shared objects and mutual exclusion
  5. Monitors and condition synchronization
  6. Deadlock
  7. Safety and liveness properties
  8. Model-based design

    Advanced (selected from the following)

  9. Dynamic systems
  10. Message passing
  11. Concurrent architectures
  12. Timed systems
  13. Program verification
  14. Logical properties
  15. Software transactional memory
  16. Software architecture modeling

Professional Conduct

As a student in Engr 664, you are expected to conduct yourself in a professional manner according to the Honor Code of the School of Engineering, the Information Technology Appropriate Use Policy, the M Book, and any other relevant policies.

Limited Collaboration Policy. Unless otherwise indicated, any homework assignment or programming exercise given in this class will be an individual assignment. The work you submit is to reflect the knowledge, understanding, and skill that you have attained as an individual. However, the instructor does want to encourage the development of a community of scholars who are actively engaged in discussion of the ideas related to this course. With this in mind, you are allowed to discuss solutions of the homework and programming problems with other students if done so according to the following guidelines:

Grading

60 percent of the semester grade will come from the exam average and 40 percent from the homework assignment average.

My grading scale is A [90..100], B [80..90), C [70..80), D [60..70), and F [0..60).

Assignments

Examinations


[ Engr 664 Home ]
[ Cunningham's Home | Teaching | Current Courses ]


Send any comments or suggestions to Prof. Conrad Cunningham
Copyright © 2009, H. Conrad Cunningham
Last modified: Sun 23 Aug 2009