Tentative CIS 625
Lecture Schedule
Spring 2009
Tuesday/Thursday
12:30-1:45
1. January 15: Course Content Guide
2. Introduction
to Concurrent Software
a. Simple
Shared Variable Concurrency Primitives
b. Atomic
Actions
5. January 20: Examples of Concurrent
Applications
b. Embedded Systems
i.
Cardiac
Rhythm Management - http://www.patentstorm.us/patents/7215993/description.html
ii.
Automobile
Cruise Control
6. Model-driven design and verification
a. Design
Forces in Concurrent Programming
b. Build Model Using a Collaborative Sequence Diagram
c. Global Invariants in Concurrent Software
i.
Deriving
the Await conditions
d. Concurrent and Reactive
Systems
e. Model-checking with Spin
i.
Hatcliff’s
example
f. January 22: Promela/SPIN
i.
Notes
from SPIN manual
ii.
Examples
1. Example 1, Example 2, Example 3
2. Example
4, Philosophers with assertions
3. Alarm Clock with Channels
iii.
Using
JSpin: http://stwww.weizmann.ac.il/g-cs/benari/jspin/
iv.
Homework Exercise 1: Verify Peterson’s Software Solution to Mutual Exclusion in Chapter 3,
Figure 3.5.
1. Solution
g. January 27: Deriving Synchronization
Constraints
i.
Bounded
Buffer Example
ii.
Simple
Air Conditioner Example
iii.
Model-checking Disk Scheduler
Invariants
iv.
Reader/Writer
Invariants
h. Homework Problem 2: Verify Andrews’ disk invariant using
Promela/SPIN
i.
Due February 3: Submit to online.ksu.edu before class time
ii.
Instructor’s Solution that shows Mutex fails.
1. Mutex
is maintained
2. No disk requests are lost
3. All requests are served in
the proper order
7. Shared Variable Concurrent
Programming
a. Synchronization Mechanisms
ii.
Semaphore Examples
iii.
January
29: Implementing Await with Semaphores
iv.
Monitors
1. Standard Barrier in Java
3. February 3: Specific Notifications
4. Busy Wait Alarm Clock Scheduler
in Java
1. Non-busy Wait Alarm Clock in Java
5. Homework Problem 3: Due
February 12: Build an
Alarm Clock Scheduler in Java that minimizes the number of thread switches
6. Examples
1. Expandable Array
2. Manipulating Linked Lists
7. The Await Statement and its Mizuno Implementation
b. Java Thread Programming
i.
State Dependence in Java
ii.
Safety
iii.
Thread Architecture in Java
iv.
Java
Concurrency Utilities - http://java.sun.com/j2se/1.5.0/docs/guide/concurrency/overview.html
v.
Timeouts in Java
vi.
Bounded
Buffers in Java
1. Simple BB
vii.
Sub-classing in Concurrent Java
viii.
Volatile
Variables in Java
ix.
Non-blocking
Synchronization
8. Pthreads Programming
a. Synchronization with PThreads
b. Grid Simulation Using PThreads
9. Testing Concurrent Programs
a. Software engineering
processes and testing
i.
Verification, Validation,
and Testing Concurrent Programs
ii.
Testing Concurrent
Software
iii.
Debugging Concurrent Code
1. Java Debugging
iv.
Testing
Java Concurrent Code
1. Java BB
2. Unit Testing
3. Basic Unit Test
4. Adding New Interleavings
5. Homework Project 4: Testing Disk
Implementation: Due Tuesday March 3 at 5PM
10.
Programs
as Models - Java Pathfinder
a. Example – Deadlock in Java
b. Stock Fund Manager Example –
ii.
Fund
Manager Code
c. Example - Buffer Manager
d. Installing JPF -
http://support.cis.ksu.edu/HowToInstallJavaPathfinder
e. Homework Problem 5: Due March 12.
i.
Implement
a POSIXCV in Java and verify using
JPF
ii.
Verify
your solution to the Alarm Clock in Java using JPF, or
iii.
Verify
your solution to the Disc Scheduler in Java using JPF
11.
February 17: review for exam
a. Here’s what
you should study for the exam
12.
Exam
1: February 19. Solutions
13.
Distributed
Programming
b. Java
Sockets
c. February 24: Message Passing Interface (MPI)
i.
Jacobi MPI
e. February 26:
i.
From
models to object-oriented synchronization
f. March 3: Lab time in Room 128 (from
barrier model to barrier object)
i.
Implement
a Symmetric barrier in Promela and then Java
ii.
Implement
Barrier coordinator process
in Promela and then using Pthreads
monitors
14.
March
5: Security in Concurrent Programs
a. Security Models Overview
b. Clinical
Health Care Security Model
c. Protection, Access Matrix, and Access Matrix Monitor
d. Harrison/Ruzzo/Ullman (HRU) Commands
e. Confinement in Java objects
f. Project: Build Security Model for Clinical Health Care Systems using HRU Model
i.
Verify
the principles of Creation,
Access, Deletion, Confinement, Aggregation, and Enforcement hold
ii.
Students
Not Yet On A Team
1. Yasser Alirifi
2. Shilpa Bhakta
3. Christopher Clarke
4. Adam Stegman
5. Eric Vannevel
iii.
List
of Teams and Team Members
1. Ramshi
Balekundargi and Jakub
Janacek
2. Robert Christie and Wade Wilson
3. Scarlett Sidwell
and Aaron Marshall
4. Brian Bayes
and Dan Czerniewski
5. Ryan Preston and Brad Kurtz
6. Heath Elliot and Jeff Lee
7. Jonathan Wilson Ted Krofssik
8. Tyler Johnson and Justin Geist
g. March 10: Java Message System
(JMS)
1. OpenJMS: http://openjms.sourceforge.net/
15.
March
12: Concurrent Applications
a. Designing
Parallel Algorithms
b. Parallel Discrete Event Simulation
16.
Distributed
Programming
a. March 24: Paradigms for Process Interaction
i.
Client/Server
ii.
Master/Worker
1. March 26: Executors in java.util.concurrency -
http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html
1. Simple example: a Producer/Consumer with
Executor
2. Mizuno Implementation of Thread Pool
1. GenericJob
2. Barrier
3. ThreadPool
3. Homework Problem 6: Verify
Java Thread Pool for Jacobi
iii.
March
31: Modeling and Synchronization in Distributed Programs
1. Discussion on Models of Electronic
Health Records (EHRs/EMRs)
2. http://people.cis.ksu.edu/~virg/cis625sp2009/ParProgParadigms/ppdigms.htm
3. http://people.cis.ksu.edu/~virg/cis625sp2009/ConcAppl/repserv.htm
4. Extra Credit: Verify a
Model a Distributed Semaphore (in Andrews’ text) in Promela
or JPF
17.
April
2: Performance
b. Example Scientific Applications
i.
Systolic Matrix Multiplication +
ii.
Heartbeat
Code for Matrix Multiplication
iii.
N-Body Simulations
2. N-Body Manager/worker Solution
18.
April 7: Distributed
Systems Technologies: SOA
19.
April 9: Intro to Beocat & ActiveMQ exercise
(Nichols 128)
20.
April 14: SecureMed Project Due:
a.
Discussion of
Solutions by Students
b.
Summary of material
to be covered on exam.
21.
April 16: Perf. Evaluation - MPI on Beocat
(Nichols 128)
22.
April 21: Metacomputing: Globus
23.
April 23: Globus / OSG exercise (Nichols 128)
24.
April 28: Sensor
networks – TinyOS, mesh networks (Gurdip
Singh)
25.
April 30: Exam
26.
May 5: Map / Reduce –
Hadoop
27.
May 7: Hadoop exercise (Nichols 128)
28.
May 13: Final period
– Project faceoff (9:40-11:30)