Lectures

Attendance at lectures is optional. You are, however, responsible for all material covered in lectures. We will sometimes be discussing material different from the textbook. I will do my best to make lectures interesting. I believe that you won't just be able to read the notes and succeed.

You should come to lecture prepared. This means you have read the assigned material in advance.

During lecture, please do not hesitate to ask questions; you might think your question is dumb, but more likely, many people are wondering about the same thing.

All lectures will be recorded and placed on D2L as soon as possible following each class. Please note that FERPA rules allow students watching the recording to see/hear other students in the class, so long as I only post the recordings to D2L. You may not modify content or re-use content for any purpose other than personal educational reasons. You also may not share the content with anyone, including re-posting the content anywhere. All recordings are subject to government and university regulation. Therefore, accessing unauthorized recordings or using them in a manner inconsistent with UArizona values and educational policies are subject to suspension or civil action.

Lecture materials (will be added as we go)

Parallelizing programs, processes, threads (final, 01/31))
Basic concurrent programs (final, 02/07)
Critical sections, locks, and barriers (final, 02/16)
Semaphores (final, 02/22)
Readers/writers using semaphores (final)
Parallel scientific programming (final, 02/23)
Sequential Jacobi iteration (final)
Parallel Jacobi iteration (final)
Monitors (final, 03/28)
Readers/writers using monitors (final)
Implementing monitors in a kernel (final)
Designing concurrent programs (final, 04/01)
Message passing basics (final, 04/04)
Asynchronous vs. synchronous message passing (final, 04/07)
MPI (final, 04/11)
Peer-to-peer systems (final, 04/11)
Notes on DHT programming assignment
File servers/interacting peers (final, 04/18)
RPC and rendezvous (final, 04/25)
Distributed computing paradigms (final, 04/27)
Map-Reduce (final, 05/02)
Notes on Final Exam (updated after class, 05/04)

Examples (will be added as we go)

First pthreads example
Matrix multiplication in pthreads
Producer/consumer with busy waiting in pthreads
Simple sequential grep
"Co nested inside while" version of grep
Simple threaded program with a race condition
Simple threaded program using an atomic instruction to avoid a race condition
Finding the max in parallel
MPI example (matrix multiplication)