Office Hours: Tue and Thu, 3:45am - 4:45pm. Lindley Hall 201C.
Section: 1418
Static program analysis can find common classes of concurrency-related
errors, such as race conditions (caused by inappropriate locking) and
deadlocks. The FLAVERS tool is a good
example of this approach. Other examples: Types
for Safe Locking, by Cormac Flanagan and Martin Abadi; Type-Based Race
Detection for Java, by Cormac Flanagan and Stephen Freund (LICS '2000).
Testing tools monitor system executions, looking for errors. A good
example of this is: Stefan Savage et al., "Eraser: A dynamic data race
detector for multi-threaded programs", ACM Transactions on Computer
Systems (TOCS), 15(4):391-411, November 1997.
Systematic testing tools explore all possible schedules (interleavings) of
the threads and processes in a concurrent system. Two approaches to this
are:
The overlap with all previous B649s is relatively small.
Table of Contents
Hours
Course Description
Readings
Project
Homework Guidelines
Announcements
Grading
Grading Statistics
On-line Course Evaluation
Hours
Lectures: Tue and Thu, 2:30pm - 3:45pm, Ballantine Hall 215.
Course Description
This course is about concurrency, including multithreaded processes and
distributed systems. The focus is on techniques and tools for producing
correct concurrent software. Links to some research projects on this
topic are included below. We will read papers from those projects and
others. The course will be relatively self-contained. Some experience
with concurrent programming (e.g., from P536) is desirable. The course
will include introductions to program analysis and model checking. Prior
knowledge of those topics is helpful but unnecessary; willingness to learn
about those topics is essential.
Logics for concurrency can be used to prove (manually or with the help of
a theorem proving system, such as PVS) that a concurrent program satisfies
its requirements. I plan to talk either briefly or not at all about this
approach, but I would consider talking about it more if the class is
interested.
Readings
Most of the readings will be conference or journal articles.
As far as I know, no appropriate textbook exists.
Project
Students will do a course project. One or more suggestions will be made;
students are encouraged to suggest their own projects as well. Projects
may be theoretical or implementation-oriented (ideally both!).
Homework Guidelines
By default, assignments in this course are due by the end (midnight) of
the specified day. To submit a problem set, either email it to b649@cs.indiana.edu or put hardcopy
under the door of LH 201C or in the homework drop box near LH 215. If you
use the homework drop box, put the instructor's name prominently on the
first page, so the staff knows to whom to give your submission.
Project | 35% |
Exams (midterm+final) | 30% |
Homeworks | 35% |
Item | Mean | Std.Dev. | Histogram |
hw1 (out of 10) | 9.4 | 0.8 | |
hw2 (out of 10) | 9.2 | 0.4 | |
hw3 (out of 10) | 7.6 | 1.2 | |
hw4 (out of 10) | 5.3 | 2.1 | |
hw5 (out of 10) | 8.8 | 0.6 | |
hw6 (out of 10) | 8.6 | 1.7 | |
hw7 (out of 10) | 7.2 | 0.4 | |
midterm (out of 40) | 31.8 (79%) | 3.9 | histogram |
Virtual Handout: If you didn't receive a copy of this paper in class yesterday, please print it: Applying Model Checking in Java Verification.
Project: I added a new section 8.12. Please read it before doing any more coding! Comments and suggestions are welcome. You can print section 8.12 by itself, or you can re-print the entire document (I just updated tool.ps.gz). Section 9 has been revised to indicate that responsibility for turning the pseudo-code in section 8.12 into real code is part of module1 (sorry, Sean and Sriram).
Project: Sorry, I think I updated the files incorectly yesterday. The"new" version should have the date 9 Apr or 10 Apr at teh top; if the version you printed says 7 Apr, please re-print.
Virtual Handout: Partial Solution to Homework8 is now available. "Partial" means that there is a solution to prob2 but not prob1.
Project: I suggested in class yesterday changing this.si to this.getSharedInfo() in the arguments of checkMLD in wrappers for instance methods. I recant that suggestion. For people who were not in class yesterday, in the wrapper for run methods in secton 8.5, change super.start to super.run.
Virtual Handout: Solution to Homework7 is now available.
Virtual Handout: Solution to Homework6 is now available.
Midterm: We'll have a midterm on Mar 9 (the Thu before spring break). It will be worth about 15% of the course grade.
Postponement: Due date of hw6 is postponed to 29 Feb.
Virtual Handout: Here is a Solution to Homework3.
Virtual Handout: Here is a Solution to Homework2.
Homework: I added some homework guidelines above.
URL: The JVM spec is available via JDK 1.2 Docs.