CS3331 Concurrent Computing Resource Page

CS3331 Concurrent Computing Resource Page

I retired on January 1, 2022

I made my decision to retire in late December of 2020. I really wished I could redo all the videos for this course in one year; but it took me 16 months to finish this work. The first version was recorded using the classroom equipment. Unfortunately, many equipment glitches happened such as audio was suddenly muted for which I was blamed by some students and administrators. I myself was not satisfied with this first set of videos because the sound quality was below my expectation. Then, I started using my own basic equipment to do the second version. I used a Shure MV5 as a replacement of the built-in microphone of my MacBook Air; but I still used my MacBook Air's camera. The results seemed to be better, in particular the sound quality. However, the MacBook Air's webcam was not ideal. After my retirement decision was made, I decided that I had to invest more to do another round of recording the Concurrent Computing course even though I was not a professional video maker. Anyway, I had a big spending to acquire a good mirrorless camera, a professional lens, a professional microphone, and all the needed stuffs such as lighting equipment to re-ignite my project. On the other hand, revising the slides became an even more challenging task. Eventually, I finished this project on April 14, 2022!

Currently, there are two sets of videos, one set stored in the common directory which can be downloaded to your local computer for offline viewing, and the other set on YouTube. Please note that I have removed the first and second version videos stored in the common directory because these videos occupy a significant amount of disk space. There are 37 lectures and 775 slides available. The slides were an updated version used in the videos. Usually, the slides include typo corrections, etc., which are usually minor.

YouTube videos have a unique advantage: the time link feature for you to jump directly to a particular topic. The pinned comment just below the video description has all the time links to that video.

Revising all the class slides, recording and re-recording the videos, editing, etc. have been a very tedious and time consuming work. It took me 16 months to finish this project. I sincerely hope my investment in equipment (e.g., good camera+lens, microphone, lighting stuffs, other accessories such as a fast M1 Mac Mini to make video editing faster) and, of course, my precious time can help you better understand the course topics. If you have any suggestions and comments, please email me at shene@mtu.edu. You may also leave comments on YouTube. A "like" is very much appreciated. Note that this is a non-commercial channel, which means I receive nothing from YouTube!

Concurrent Computing is not the only video making project in my mind. So, please stay tuned as I will do more in the near future. I am so happy I finally completed this project and I will move on to other projects. These stuffs have no copyright restrictions; however, providing proper credits is always appreciated. Thank you!

Number of Weeks Course Topics Slides No. of Slides Total Slides Videos (Local@MTU) Videos (YouTube)
1 Introduction 01-Intro.pdf 34 34
  1. Lecture 1
  2. Lecture 2
  1. Lecture 1
  2. Lecture 2
1 Hardware and OS Review 02-Hardware-OS.pdf 26 60
  1. Lecture
  1. Lecture
3 Process and Threads Process 03-Process.pdf 81 141
  1. Concepts
  2. fork() and Wait()
  3. Shared Memory
  1. Concepts
  2. fork() and Wait()
  3. Shared Memory
Threads 04-Thread.pdf 24 165
  1. Threads
  1. Threads
1 Critical Sections and Mutual Exclusion 05-Sync-Basics.pdf 24 189
  1. Basic Concepts
  1. Basic Concepts
6 Synchronization Software and Hardware Solutions 06-Sync-Soft-Hardware.pdf 49 238
  1. Software Solutions 1
  2. Software Solutions 2
  3. Hardware Solutions
  1. Software Solutions 1
  2. Software Solutions 2
  3. Hardware Solutions
A Very Brief C++ and
    ThreadMentor Review
07-Some-Cpp-TM.pdf 51 289
  1. C++ Review
  2. ThreadMentor Review
  3. ThreadMentor Demo
  1. C++ Review
  2. ThreadMentor Review
  3. ThreadMentor Demo
Mutex Locks and Semaphores 08-Semaphores.pdf 133 422
  1. Basic Concepts
  2. Dining Philosophers
  3. Classical Problems
  4. Patterns and Baton Passing
  5. Baton Passing Examples
  6. ThreadMentor Review
  7. ThreadMentor Demo
  1. Basic Concepts
  2. Dining Philosophers
  3. Classical Problems
  4. Patterns and Baton Passing
  5. Baton Passing Examples
  6. ThreadMentor Review
  7. ThreadMentor Demo
Race Condition: Revisited 09-Race-Conditions.pdf 46 468
  1. Race Conditions -- Revisited
  1. Race Conditions -- Revisited
Monitors 10-Monitors.pdf 90 558
  1. Basic Concepts
  2. Examples
  3. Some Extensions
  4. Other Topics (Semaphore and Monitor Equivalence, etc.)
  5. ThreadMentor Review
  6. ThreadMentor Demo
  1. Basic Concepts
  2. Examples
  3. Some Extensions
  4. Other Topics (Semaphore and Monitor Equivalence, etc.)
  5. ThreadMentor Review
  6. ThreadMentor Demo
Deadlock and Livelock 11-Deadlock.pdf 89 647
  1. Deadlock Prevention
  2. Deadlock Avoidance
  3. Deadlock Detection, Livelock
  1. Deadlock Prevention
  2. Deadlock Avoidance
  3. Deadlock Detection, Livelock
Communication Channels 12-Channels.pdf 28 675
  1. Message Passing -- Basics
  2. ThreadMentor Review
  3. ThreadMentor Demo
  1. Message Passing -- Basics
  2. ThreadMentor Review
  3. ThreadMentor Demo
2 Programming Languages
   and System Supports
Java Threads and Synchronization 13-Java-Threads.pdf 39 714
  1. Java Threads
  1. Java Threads
Ada Tasking 14-Ada-Tasks.pdf 28 742
  1. Ada Tasks
  1. Ada Tasks
Pthreads 15-Pthreads.pdf 33 775
  1. Pthreads
  1. Pthreads

Other Stuffs

Topics Slides Videos No. of Slides Total Slides
Course Information 3331-info.pdf 3331-info.mp4 21 21
EXAM I Review EXAM1.pdf EXAM1-Review.mp4 31 66
EXAM II Review EXAM2.pdf EXAM2-Review.mp4 32 98

Software Tools

Name Description
01-Basics.tar.gz Sample Programs used in the Introduction Unit
03-Process.tar.gz Sample Programs used in the Process Unit
07-Cpp-TM.tar.gz Sample Programs used in the C++ Review Unit
ThreadMentor-Linux64.tar.gz ThreadMentor static system image compiled under the RedHat Linux 64-bit system
Makefile Sample Makefile to compile and run your ThreadMentor programs

The following links may help you install Linux and run ThreadMentor-Linux64.tar.gz. Please note that once you have your Linux VM available, there is no need to install ThreadMentor-Linux64.tar.gz. What you need is downloading the software, unziping and untaring to a folder, and finally modifying the Makefile above so that all paths point to the correct folders. Please watch the ThreadMentor Demo lecture in the A Very Brief C++ and ThreadMentor Review.