Engr 664: Concurrent Programming
Fall Semester 2009
The fall semester 2009 class meets in 235 Weir Hall
at 8:00 a.m. on Tuesdays and
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
The WWW home page for this class is
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.
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.
Upon successful completion of this course, students:
- know and understand the fundamental concepts for concurrent
programming (e.g., processes, threads, interaction),
- know and understand the issues that can arise in concurrent
programs (e.g., interference, deadlock, starvation)
- know and understand the basic techniques for concurrent
programming (e.g., mutual exclusion, condition synchronization,
- know and understand the fundamental concepts of modeling
concurrent systems with finite state machines (e.g., the Finite State
- can build appropriate finite state machine models for simple
- can express desirable and undesirable properties of concurrent
systems (e.g., safety, liveness),
- 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,
- know and understand the concurrent programming features of a
programming language (e.g., Java),
- can implement finite state machine models as concurrent programs
in the programming language,
- can analyze a concurrent programming problem to design an appropriate
- can evaluate alternative concurrent architectures for a problem,
- know and understand a few selected advanced techniques and
architectures (e.g., dynamic systems, timed systems, filter pipelines).
- Jeff Magee and Jeff Kramer.
Concurrency: State Models and Java Programs, Second Edition,
Wiley, 2006. ISBN-13: 978-0-470-09356-6.
- Labelled Transition System Analysis (LTSA) toolset from the
textbook's companion website
- Java or other languages such as Scala.
- Various journal and conference articles, research reports,
and other materials as appropriate.
- Concurrency concepts
- Processes and threads
- Concurrent execution
- Shared objects and mutual exclusion
- Monitors and condition synchronization
- Safety and liveness properties
- Model-based design
Advanced (selected from the following)
- Dynamic systems
- Message passing
- Concurrent architectures
- Timed systems
- Program verification
- Logical properties
- Software transactional memory
- Software architecture modeling
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
Appropriate Use Policy, the M Book, and any other
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
- You may discuss ideas for homework and
programming assignments with your classmates. However, you
cannot collaborate on writing the solution or the
program code. That is, you can talk about the problems and
ideas for solving them, but you cannot write things down with anyone
else. You are, of course, prohibited from copying or seeing another
student's written solution, and you are not allowed to show your work
to anyone else.
- You should accept help with care. If you work
too closely with another student, you might mislead yourself into
believing that you understand the concepts and techniques better than
you actually do. Don't forget that the instructor has office hours
and can probably give you hints or suggestions to get you started.
- You should give help with care. Do not help
anyone too much. When you have solved a problem, it is tempting to
just tell other students how you solved it. Instead, try to allow
them to come to the solution on their own. Maybe give them a hint to
help them get "over a hump." Remember that helping someone too much
will hurt them in the long term if they can't work through problems on
the exams by themselves. So avoid the temptation to do so. If you
can't help other students without giving away the whole solution,
direct them to see the instructor (who may or may not have a way to
"edge" them toward the solution).
- You are not obligated to help anyone. If you
feel uncomfortable helping another student for any reason, please
direct them to see the instructor.
- Except as described above, all work in this class is
covered by the School of Engineering's Honor Code statement on
plagiarism. It is plagiarism "to knowingly deceive, copy,
paraphrase, or otherwise misrepresent your work in a manner
inconsistent with professional conduct".
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).
- All students are expected to study the relevant portions of the
textbook and handouts in conjunction with our class discussions (i.e.,
before coming to class). Explicit reading assignments will
not always be given.
- Several of the assignments will consist of problem-solving or
design exercises (e.g., the exercises given in textbook). In
preparing and submitting these homework papers make sure that:
- your name, the course number or name, the assignment identifier,
and individual exercises are clearly marked on the paper. (If it is a
group assignment, give the group identifier and the names of all
- you write legibly on only one side of the paper in a black or
blue pen or dark pencil. (Do NOT use red or green ink!) (Some of the
assignments may require that materials be generated with a word
processor and/or other tools.)
- your paper is stapled together in the upper left corner.
- Several of the homework assignments will be programming exercises
or exercises using the analysis toolset.
- As appropriate, there may be a few in-class assignments or quizzes
that count toward the assignment/project portion of the grade.
- All students or groups are expected to complete their assignments
by their due dates. If an assignment is submitted late,
a penalty of 10 percent of that assignment's grade
will be assessed for each day it is late. A homework
assignment will not be accepted after graded papers have been returned,
after a solution has been distributed, or after the final examination.
- There will be three examinations. The third one is optional.
- The examination portion of the semester grade will be calculated
by averaging the two best examination grades.
- The first examination will be given in late September or early
- The second examination will be given in November.
- The third examination will be given during the final examination
- Each exam will cover all topics studied to that point.
- Each exam may consist of a combination of in-class and take-home
- If you cannot take an examination at the scheduled time because
of an illness or other special circumstances, please notify
Prof. Cunningham in advance. Without advance notification, it may not
be possible to give a make-up examination.
- Please do not ask to take the final examination earlier than the
time set for the entire class.
[ Engr 664 Home
[ Cunningham's Home
| Current Courses
Send any comments or suggestions to Prof. Conrad Cunningham
Copyright © 2009, H. Conrad Cunningham
Last modified: Sun 23 Aug 2009