Class Schedule - Spring 2025 term 2245

Week Topics Activities Due Reading / Resources
1 - Jan 16 Concurrency Introduction
Java Thread Review
POJC - Plain Old Java Concurrency
Activity #1 - Thread Intro
Submit in ThreadIntroduction directory in GitLab
Activity #1
Due : 1/26
Ch 1-2 in JCIP and Ch 1-2 in PCJVM

2 - Jan 23 Deadlock

Activity #2 - The Woolies
Submit to GitLab in activity_2, activity_3, and activity_4 (parts 1, 2, 3)
Activity #5 - Dining Philosophers
in activity_5
See Discord for Due Dates Ch 3-4 in JCIP and Ch 3 in PCJVM
3 - Jan 30 Thread Safe Objects Activity #6 - Bankers Algorithm
Submit to activity_6
See Discord for dates Ch 5-6, 8 in JCIP
4 - Feb 6 Introduction to Posix

Activity #7: creating threads pthreads activity"

Submit to activity_7

Read Posix 13.1 through 13.1.1.2 Thread Creation

Weeks 5 & 6 complete pthreads activity

Activity #6 Timers on Linux due 3/5 Timers on Linux

Review: Create Timer on Linux
Reference and overview: Posix API doc
Weeks 7 & 8

Final project option:

  • Bank Simulator Project
  • Bank Simulator Report
  • Bank Simulator Demo
  • Design Doc Example
  • Books: oreilly login in (use RIT email)
    1. The Linux Programming Interface by Michael Kerrisk
    2. Programming with POSIX Threads by David R. Butenhof
    Weeks 9 & 10 OS Concepts
    Weeks 11, 12
    • Final project Architecture and top level Design due April 15th in Assignment Folder.
      1. Overview with top level architecture block diagram.
      2. Include lower level block diagram(s) if needed.
      3. Show data and control flow.
      4. List and describe how you will use your technology stack including concurrency and/or distributed system features.
      5. Class diagrams are not required.
    • Final project code and report with updated Architecture and Design due 2 calendar days before your final review appointment.
    • Demo and discussion Finals Week.
    • Final Review Signup Sheet
    • Final Project Report
    Weeks 13, 14

    Exams

    Projects

    Reading Reference Key

    ENTER = Enterprise Software Architecture & Design, Dominic Duggan, 2012 (Wiley Books on-line via Wallace Library)
    GUIDE = Guide to Reliable Distributed Systems, Kenneth Birman, 2012 (Springer Books on-line via Wallace Library)
    JCIP = Java Concurrency in Practice, Brian Goetz, et. al., Addison-Wesley, 2006
    PCJVM = Programming Concurrency on the JVM, Venkat Subramaniam, Pragmatic Programmers, 2011
    POSA = Pattern-Oriented Software Architecture – Volume 4, A Pattern Language for Distributed Computing, Schmidt, Buschmann & Henney (on Books 24x7)
    SCM= Seven Concurrencty Models in Seven Weeks - When Threads Unravel, Paul Butcher, Pragmatic Programmers, 2014

    Resources