This page is always accessible at www.se.rit.edu/~se441
Until last year, the concurrent systems course addressed both mathematical modeling of concurrency and the pragmatics of designing and implementing concurrent systems. Course feedback in the past has focused on the balance between these two parts, with many students commenting that the pragmatic engineering concerns were given short shrift. In response, we have moved the mathematical modeling is now in formal methods (on its way to a new course under semesters); thus we have time in this course to delve more deeply into principles, patterns, and concurrency mechanisms.
There is no way we can cover other than a small sample of topics in concurrent systems; new languages and libraries are coming into use frequently, each reflecting emerging ideas on organizing concurrent systems. Thus this course will use a variety of technologies, most built on the Java Virtual Machine (JVM) to explore the promises, pitfalls, principles, and patterns of concurrency. The primary focus is on time-tested approaches to concurrency, and the way contemporary hardware and software platforms can be applied to create correct, reliable, robust and efficient concurrent systems.
There are two required texts for the course:
Tag | Title, Author, Publisher, Date, ISBN |
JCIP | Java Concurrency in Practice, Brian Goetz, et. al., Addison-Wesley, 2006. ISBN 0-321-34960-1. |
PCJVM | Programming Concurrency on the JVM, Venkat Subramaniam, Pragmatic Programmers, 2011. ISBN 978-1-93435-676-0. |
I do not care where you purchase these. In particular, the Pragmatic Programmers (pragpub.com) offer several e-reader versions of PCJVM for $22.00.
If you take the e-reader route, PLEASE DO NOT DISTRIBUTE YOUR BOOK TO ANYONE ELSE! The cost is low, and this publisher much prefers distributing books without DRM locks. Do your part to support this by purchasing your own copy.
Note:
Wk | Session 1 | Session 2 | Reading |
1 (11/26) |
Course
overview Activity #0(here) - due at end of class |
POJC - Plain Old Java Concurrency Lecture Questions template Activity #1(here) - due at start of W2S2 |
|
2 (12/3) |
Deadlock Constructing and sharing objects. Thread-safe object sharing |
Composing
objects Thread-safe class design Activity #2 (here) - due at start of W3S2 |
|
3 (12/10) |
Concurrent data structure approaches Latches and Barriers |
Project #1 Out (here) |
|
4 (12/17) |
Locks & conditions Wrapup of shared, mutable state Team Project/Activity time |
<<Exam #1 (one hour)>> Team Project time after exam Activity #3 due by 11:59PM |
|
5 (1/7) |
Project #1 time Activity #4(here) - due end of dayW6S1 (Use Project #1 teams for Activity #4) |
Actors (Overview, Design, Basic operation) Project #1 / Activity #4 time |
|
6 (1/14) |
Actors (Typed Actors) Project #1 / Activity #4 time Activity #4 due by 11:59PM |
Actor Design Actor Design Exercise Project #1 due by 11:59PM Project #2 Out (here) |
|
7 (1/21) |
Introduction to Transactions Activity #5 (here)- due at 11:59PM on W8S1 Actor Design Activity review Project #2/Activity #5 time |
Software Transaction Management (STM) Project #2 Design due at start of class |
|
8 (1/28) |
Review for Exam #2 |
<<Exam #2 (one hour)>> Project #2 time |
|
9 (2/4) |
Fault Tolerance and Robustness in Concurrent Systems Activity #6 (here) Due by 11:59PM, Wed, Feb 13 |
Fault Tolerance in akka Project #2 due by 11:59PM on Friday, Feb 8 |
|
10 (2/11) |
Case Study | Other
approaches to concurrency Final Review |
|
11 (2/18) |
Final Exam (same room as class) Monday 2/18, 10:15-12:15 |
Item | Weight |
In-class exam #1 | 15 |
In-class exam #2 | 15 |
Final exam (comprehensive) | 20 |
Project #1 | 15 |
Project #2 | 15 |
Activities | 15 |
Preparation & Participation | 5 |
Each Activity each be graded on a 10 point basis; the
lowest grade will be discarded when computing the activity component of
your final grade.