Class Lectures and Reading Assignments
CS 51590
Parallel Computing
Spring, 2022

This page documents what we do in class. It contains code that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), links to other sources of information, etc.

Here is the code that we experimented with in class.

Here are some examples that try to distinguish between "synchronous" and "asynchronous".

See the homework assignment page for your second programming assignment.

Today we will look at sequential and parallel examples of processing a large data set in a directory.

Today we will look at sequential and parallel examples of processing a large data set in a single file.

Today we will look at an I/O-bound fork/join example.

Today we will look at fork/join examples.

Today we will look at the "synthetic work" examples that simulate a mixture of compute-bound and I/O-bound tasks.

See the homework assignment page for your first programming assignment.

Read Sections 3 and 5 (pages 14-30 and 36-43) on Java's fork/join framework from the following.

Today we will look at an ExecutorCompletionService threadpool example.

Read the following explanation of futures and promises.

Read pages 23-44 from the folowing chapter about Task Execution from Java Concurrency in Practice.

Spring Break - No class today.

Spring Break - No class today.

We will continue looking at these thread pool examples and implement our own thread pool class.

Today we will look at some thread pool examples.

Class will meet at 3:30 on campus in the CLO building, Room 210.

Today we will look at an implementation of bounded buffer using Java's built in monitor (instead of using distinct locks and condition variables).

Class will meet at 3:30 on campus in the CLO building, Room 210.

Here are the Java API's versions of "bounded buffers".

Read this overview of Java concurrency from the book The Well-Grounded Java Developer.

Here is the code we wrote today demonstrating the inner workings of a condition variable.

Class will meet at 3:30 on campus in the CLO building, Room 210.

Today we will look at this example of a bounded buffer.

Because of the weather, class met at 3:30 using the Zoom application.

Here is a link to today's video lecture.

When you are connected to the campus network, download Chapter 3 from the following book (you need to be on campus to access this book). The chapter is about the wait() and notify() methods and their use in the producer-consumer problem.

Read the following chapter about condition variables and bounded buffers from this operating systems textbook.

Class will meet at 3:30 on campus in the CLO building, Room 210.

Read Sections 4.1 - 4.6 from the following chapter about synchronization, and the producer/consumer problem, from this operating systems textbook.

Today we will continue with examples of the producer/consumer synchronization problem.

Class will meet at 3:30 on campus in the CLO building, Room 210.

Today we will look at examples of the producer/consumer synchronization problem.

Class will meet at 3:30 on campus in the CLO building, Room 210.

Here is a brief explanation of synchronization for Java threads.

Because of the weather, class met at 3:30 using the Zoom application.

Here is a link to today's video lecture.

Class will meet at 3:30 on campus in the CLO building, Room 210.

Today we will look at Java examples of race conditions and critical sections. Be sure to compare them to the analogous Pthread examples.

Here is a link to today's video lecture.

NOTE: Starting Tuesday of next week, we will be meeting in a classroom on campus (we will meet in CLO Bldg, Room 210). When we meet on campus, there will be no Zoom component to the class.

Read about race conditions and synchronization from the following two Java references.

Here is a very general overview of Java threads written by one of the designers of the Java language.

I rewrote many of the Java examples to make them more like the Pthread examples.

Here is a link to today's video lecture.

Here are some simple code examples using Java threads. Be sure to compare them to the analogous Pthread examples.

Here is a link to today's video lecture.

Here are two introductions to Java threads. Read the first three sections (the first 15 pages) from the first reference. Read Section 12.1 from the second reference.

Today we will look at Pthreads examples of race conditions and critical sections.

Here is a link to today's video lecture.

Today we will continue looking at the Pthreads code from the following zip file.

Here is a link to today's video lecture.

Today we will continue looking at the C Pthreads code from the following zip file.

Here is a link to today's video lecture.

Read the following two chapters about Pthreads from this operating systems textbook.

Read the following chapter about threads from this operating systems textbook.

Today we will look at the code from the following file.

Here is a link to a zip file that contains a C compiler that will compile the above code. Download this zip file and unzip it into the top level of your C:\ drive. The zip file includes an editor with built in tools for using the compiler. Copy the shortcut to the editor from the zip file to whatever folder your are working in.