Tentative CIS 625 Lecture Schedule

Spring 2009

Tuesday/Thursday 12:30-1:45

 

1.     January 15: Course Content Guide

2.     Introduction to Concurrent Software

3.     Hardware Concurrency

a.     Cache Coherency

b.     Multi-Core Chips

4.     The Essence of Concurrency

a.     Simple Shared Variable Concurrency Primitives

b.     Atomic Actions 

5.     January 20: Examples of Concurrent Applications

a.     Matrix operations

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

                                                              i.      Mutex and Locks

                                                            ii.       Semaphore Examples 

                                                          iii.      January 29: Implementing Await with Semaphores

                                                         iv.      Monitors

                                                           v.      Monitor Mechanics in Java

1.     Standard Barrier in Java

2.     Semaphore 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

1.     Instructor’s solution 1:

2.     Instructor’s solution 2:

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

2.     Time-out of BB in Java

                                                       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

1.     Disk Harness for testing

10.                        Programs as Models - Java Pathfinder

a.     Example – Deadlock in Java

b.     Stock Fund Manager Example –

                                                              i.      Fund Manager Description

                                                            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

a.     Message Passing

b.     Java Sockets

                                                              i.      Simple web server

c.      February 24: Message Passing Interface (MPI)

                                                              i.      Jacobi MPI

d.     OpenMPl Primitives

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

a.     Models of Performance

b.     Example Scientific Applications

                                                              i.      Systolic Matrix Multiplication +

                                                            ii.      Heartbeat Code for Matrix Multiplication

                                                          iii.      N-Body Simulations

1.     N-Body Heartbeat Solution

2.     N-Body Manager/worker Solution

3.     N-Body Using MPI

4.     N-Body Using Shared Memory

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)