Reading material referenced:

M. C. Thompson, D. J. Richardson and L. A. Clarke, "An Information Flow Model of Fault Detection," International Symposium on Software Testing and Analysis, Boston, MA, June 1993, pp.182-192. [pdf]

"Concurrency: State Models and Java programming" by Jeff Magee and Jeff Kramer [1], "Java concurrency in practice" by Brian Goetz [2],  

 "A Programmer's Guide to Java Certification" by Khalid Mughal and Rolf Rasmussen [3], and course notes

 

For the final exam the students should:

 

- Know the class diagram of Observer design pattern (on TRACS)

- Know the class diagram of Strategy design pattern (on TRACS)

- Know the class diagram of Composite design pattern (on TRACS)

- Know the class diagram of Factory design pattern (on TRACS)

- Know the class diagram of Adapter design pattern (on TRACS)

- Know the benefits and downsides of concurrent systems ([1]: ch 1.1, notes)

- Know the notion of a thread-safe class ([2]: ch. 2)

- Know how an intrinsic lock (synchronized) can be implemented in Java ([1]; ch 2.2, 4.2; [2]: ch. 2)

- Know guidelines for using an intrinsic lock in an efficient way (update var-s involved in a class invariant atomically and do not put long-running tasks inside the mutually exclusive code)

- Know the notion of a monitor and how it can be implemented in Java via a condition synchronization (know the importance of using a "while" loop in the implementation of a condition synchronization) ([1]: ch 5)

- Be able to implement a concurrent Bounded Buffer in Java ([1]: ch 5)

- Know the notion of a deadlock (no process and/or thread can make progress)

- Know the four necessary and sufficient conditions for its possibility (serially reusable resources etc.) ([1]: ch 6 ; [2] ch 10)

- Be able to modify a deadlock prone code for the Dining Philosophers problem to avoid the possibility of a deadlock ([1]: ch 6)

- Know the notions of responsiveness, throughput, scalability ([2]: ch 12 intro p. 248)

- Know the difficulties that concurrent systems impose on testing (notes)