ICS 432: Concurrent Programming (Fall 2008)
 Prof. Henri Casanova  (henric@hawaii.edu)
 Lectures: Tuesday and Thursday 3:00PM-4:15PM, Holmes 247
 Office Hours: Mon/Wed 3PM-4:15PM

 Announcements

 Course Description

Class Goals
In this class you will learn about the art of writing concurrent programs, meaning programs that are designed to do multiple things at once, typically using multi-threading. Learning how to write such programs is an important skill for today's computer scientists. By the end of the course, you will be proficient multi-threaded programming in C and in Java, and in debugging and performance tuning of these multi-threaded programs on multi-processor and multi-core architectures.

Syllabus
See the PDF Syllabus.

 Assignments

Use of Java in the Class

In this class by default we use we will use Java J2SE 1.5 (see on-line docs). Students who so desire should be able to use Java JSE 6 (see on-line docs) as well. This shouldn't pose any problem, but note that JSE 6 isn't available on all platforms.

Lecture Topics, Lecture Notes, and Reading Assignments

Below is the list of topics that we will discuss in the class. Some of these topics will be covered in one lecture, some will span several lectures. Lecture notes will be made available for download at least one week before the actual lecture. There is no textbook in this class, so these notes and other on-line material constitute the entire content for the course.

Topic Lecture Notes Additional Material Source Code
Introduction [PPT] [PDF]
Processes and Threads [PPT] [PDF] ics432_fork_example.c
Java Threads [PPT] [PDF] MyProgram.java
MyThread.java
JoinExample.java RunnableExample.java
Java Swing [PPT] [PDF] A free Swing tutorial
SwingWorker tutorial
Download SwingWorker
ButtonInFrame.java
RowOfComboBoxes.java
MyPanel.java
BadProgram.java
GrowingShrinkingList.java
FlashingPanel.java
SwingWorkerExample.java
MySwingWorker.java
Locks [PPT] [PDF]
Condition Variables [PPT] [PDF]
Pthreads [PPT] [PDF] pthread_creating_joining.c
pthread_simple_cond.c
Semaphores [PPT] [PDF]
Monitors [PPT] [PDF]
Java Monitors [PPT] [PDF] Blinking.java
MyPanel.java
MyThread.java
Classic Concurrency Problems [PPT] [PDF]
javac.util.concurrent [PPT] [PDF] java.util.concurrent documentation
Transaction Memory [PPT] [PDF] Unlocking Concurrency
Hardware and Concurrency [PPT] [PDF]
Measuring Performance [PPT] [PDF]
Profiling and Bottlenecks [PPT] [PDF] locality_example.zip
Concurrency and Performance [PPT] [PDF]
Shared-Memory Programs [PPT] [PDF]
Using our cluster [PPT] [PDF]
OpenMP [PPT] [PDF] openmploop.c
Sequential Program Optimization [PPT] [PDF]
Notions of Scheduling [PPT] [PDF]
Introduction to Distributed Memory Computing [PPT] [PDF]



henric@hawaii.edu