Parallel Computing Course
Java concurrency fundamentals

Intensive Parallel Computing

A 2.5-hour accelerated course for international exchange students. Learn to write correct, safe, and maintainable concurrent Java programs.

  • Format: Single lecture session (150 mins)
  • Focus: Shared-memory concurrency fundamentals
  • Language: English / Modern Java (17+)
Threads & Lifecycle Monitors & Locks ExecutorService Memory Consistency Safety Patterns

🚀 Quick Start: Run the Demos

Get the runnable examples. No complex IDE setup required. Works on Linux, macOS, and WSL.

# 1. Clone the demos
git clone https://github.com/intellistream/parallel-computing-course-java-demos.git

# 2. Run the setup (auto-downloads JDK)
cd parallel-computing-course-java-demos/demo
./setup.sh

# 3. Compile and Run an example
./run.sh HelloThreads
View repository readme →

📺 Live Demo: Race Condition vs. Synchronized

See what happens when two threads access a counter without locks.

Loading terminal demo...

Course Syllabus

Part 1: Fundamentals

  • Why Parallel? Motivation (Speedup) vs. Concurrency (Responsiveness).
  • Hardware Basics: Cores, Caches, Shared Memory, and Amdahl's Law.
  • Java Threads: Thread vs Runnable, Lifecycle states, formatting output.
  • The Problem: Race conditions, interleaving, and lost updates.

Part 2: Safety & Tools

  • Synchronization: Intrinsic locks, synchronized blocks/methods, monitor pattern.
  • Modern Execution: ExecutorService, Thread Pools, and Future.
  • Coordination: wait()/notify(), CountDownLatch.
  • Common Pitfalls: Deadlock, Livelock, Starvation, and Visibility (volatile).

Prerequisites

Students should be comfortable with:

  • Basic Java syntax (Classes, Objects, Interfaces).
  • Collection frameworks (List, Map).
  • Command line basics (compiling and running Java).

Note: No prior OS or Architecture course required.