Awareness of--and adherence to--the Vanderbilt University Honor Code that governs all work in this course (e.g. tests, quizzes, homework assignments, etc.), which must be done individually and in a "closed-book" manner (i.e., no outside help, no Internet, etc.)
Course Logistics
Course Overview
- All the lecture videos for this course will be available on my
YouTube playlist as they are created. I will also post links to the individual videos and PDF versions of the slides below.
- Week 1
- Walkthrough of Assignment 1A (MP4)
- Course Overview and Logistics (PDF|MP4)
- Overview of Concurrent Programming (PDF|MP4)
- Overview of Concurrent Programming in Java (PDF|MP4)
- Java Threads: Introduction to Threads (PDF|MP4)
- Java Threads: Overview of the Case Study App (PDF|MP4)
- Java Threads: Ways of Giving Code to a Thread (PDF|MP4)
- Java Threads: Passing Parameters to a Thread (PDF|MP4)
- Java Threads: How Threads Run (PDF|MP4)
- Java Threads: Key Class Methods (PDF|MP4)
- Java Threads: Evaluation (PDF|MP4)
- Week 2
- Overview of Parallel Programming (PDF|MP4)
- Overview of Parallel Programming in Java (PDF|MP4)
- The History of Concurrency and Parallelism Mechanisms in Java (PDF|MP4)
- Evaluation of the Concurrency and Parallelism Mechanisms in Java (PDF|MP4)
- Overview of the Java Memory Model (PDF|MP4)
- Overview of the Java Synchronizers (PDF|MP4)
- Week 3
- Walkthrough of Frequently Made Mistakes for Assignment 1A (MP4)
- Walkthrough of Assignment 1B (MP4)
- Java Semaphore: Introduction (PDF|MP4)
- Java Semaphore: Structure and Functionality (PDF|MP4)
- Java Semaphore: Key Methods (PDF|MP4)
- Java Semaphore: Mediating Access to Shared Resources (PDF|MP4)
- Java Semaphore: Coordinating Threads (PDF|MP4)
- Week 4
- Java Semaphore: Usage Considerations (PDF|MP4)
- Overview of Atomic Operations (PDF|MP4)
- Overview of Java Atomic Operations and Variables (PDF|MP4)
- Java Atomic Operations and Classes: Introduction (PDF|MP4)
- Java Atomic Operations and Classes: Implementing Java Atomic Operations (PDF|MP4)
- Java Atomic Operations and Classes: Implementing Java AtomicLong and AtomicBoolean (PDF|MP4)
- Java Atomic Operations and Classes: Applying Java AtomicLong (PDF|MP4)
- Java Atomic Operations and Classes: Usage Considerations (PDF|MP4)
- Walkthrough of Frequently Made Mistakes for Assignment 1B (MP4)
- Week 5
- The Java Executor Framework: Introduction (PDF|MP4)
- The Java Executor Framework: Overview of Thread Pools (PDF|MP4)
- The Java Executor Framework: Overview of Java Thread Pools (PDF|MP4)
- The Java Executor Framework: Key Interfaces (PDF|MP4)
- The Java Executor Framework: The Executor Utility Class (PDF|MP4)
- Java Executor: Introduction (PDF|MP4)
- Java Executor: Implementation Choices (PDF|MP4)
- Java Executor: Application to PrimeChecker App (PDF|MP4)
- Java Executor: Evaluating Pros and Cons (PDF|MP4)
- Walkthrough of Assignment 2A (MP4)
- Java ExecutorService: Introduction (PDF|MP4)
- Java ExecutorService: Related Interfaces (PDF|MP4)
- Java ExecutorService: Key Methods (PDF|MP4)
- Week 6
- The Java ExecutorService: Overview of Java ThreadPoolExecutor (PDF|MP4)
- The Java ExecutorService: Application to the PrimeChecker App (PDF|MP4)
- The Java ExecutorService: Evaluating Pros and Cons (PDF|MP4)
- The Java Executors Utility Class (PDF|MP4)
- Java ReentrantLock: Introduction (PDF|MP4)
- Java ReentrantLock: Structure and Functionality (PDF|MP4)
- Java ReentrantLock: Key Methods (PDF|MP4)
- Java ReentrantLock: Example Application (PDF|MP4)
- Java ReentrantLock: Usage Considerations (PDF|MP4)
- Week 7
- Walkthrough of Frequently Made Mistakes for Assignment 2A (MP4)
- Java ConditionObject: Introduction (PDF|MP4)
- Java ConditionObject: The Guarded Suspension Pattern (PDF|MP4)
- Java ConditionObject: Common Use Cases (PDF|MP4)
- Java ConditionObject: Structure and Functionality (PDF|MP4)
- Java ConditionObject: Key Class Methods (PDF|MP4)
- Java ConditionObject: Example Application (PDF|MP4)
- Java ConditionObject: Usage Considerations (PDF|MP4)
- Java Volatile Variables: Introduction (PDF|MP4)
- Java Volatile Variables: Example Application (PDF|MP4)
- Java Volatile Variables: Usage Considerations (PDF|MP4)
- Java ExecutorCompletionService: Introduction (PDF|MP4)
- Java ExecutorCompletionService: Key Methods (PDF|MP4)
- Java ExecutorCompletionService: Implementation Internals (PDF|MP4)
- Java ExecutorCompletionService: Designing a Memoizer (PDF|MP4)
- Java ExecutorCompletionService: Implementing a Memoizer (PDF|MP4)
- Java ExecutorCompletionService: Application to PrimeChecker App (PDF|MP4)
- Java ExecutorCompletionService: Evaluating Pros and Cons (PDF|MP4)
- Java FutureTask: Introduction (PDF|MP4)
- Java FutureTask: Key Methods (PDF|MP4)
- Java FutureTask: Application to Memoizer (PDF|MP4)
- Java FutureTask: Implementing Memoizer (PDF|MP4)
- Walkthrough of Assignment 2B (MP4)
- Java FutureTask: Applying Memoizer to the PrimeChecker App (PDF|MP4)
- Java FutureTask: Evaluating Pros and Cons (PDF|MP4)
- Java Synchronized Collections: Introduction (PDF|MP4)
- Java Synchronized Collections: Example Application (PDF|MP4)
- Walkthrough of Frequently Made Mistakes for Assignment 2B (MP4)
- Week 8
- Walkthrough of Assignment 3A (MP4)
- Java Concurrent Collections: Introduction (PDF|MP4)
- Java Concurrent Collections: ConcurrentHashMap and BlockingQueues (PDF|MP4)
- Java Concurrent Collections: Designing a Memoizer with ConcurrentHashMap (PDF|MP4)
- Java "Happens-Before" Relationships: Introduction (PDF|MP4)
- Java "Happens-Before" Relationships: Examples (PDF|MP4)
- Safe Publication in Java: Introduction (PDF|MP4)
- Safe Publication in Java: Examples (PDF|MP4)
- Week 9
- Java Monitor Objects: Introduction (PDF|MP4)
- Java Monitor Objects: Motivating Example (PDF|MP4)
- Java Monitor Objects: Evaluating the Motivating Example (PDF|MP4)
- Java Synchronized Methods (PDF|MP4)
- Java Synchronized Statements (PDF|MP4)
- Java Synchronized Method Example (PDF|MP4)
- Evaluating Java Synchronized Methods (PDF|MP4)
- Java Coordination Methods (PDF|MP4)
- Java Coordination Methods Example Visualization (PDF|MP4)
- Java Coordination Methods Example Implementation (PDF|MP4)
- Java Monitor Objects: Usage Considerations (PDF|MP4)
- Week 10
- Walkthrough of Assignment 3B (MP4)
- Managing the Java Lifecycle: Introduction (PDF|MP4)
- Managing the Java Lifecycle: State Machine for Java Threads (PDF|MP4)
- Managing the Java Lifecycle: Starting a Java Thread (PDF|MP4)
- Managing the Java Lifecycle: Overview of Stopping a Java Thread (PDF|MP4)
- Managing the Java Lifecycle: Stopping a Java Thread via a Volatile Flag (PDF|MP4)
- Managing the Java Lifecycle: Stopping a Java Thread via an Interrupt (PDF|MP4)
- Managing the Java Lifecycle: Patterns for Handling a Thread Interrupt (PDF|MP4)
- Managing the Java Lifecycle: Java Interrupts vs. Hardware/OS Interrupts (PDF|MP4)
- The Specific Notification Pattern: Introduction (PDF|MP4)
- The Specific Notification Pattern: Fair Semaphore Semantics (PDF|MP4)
- The Specific Notification Pattern: Visualizing a Fair Semaphore Implementation (PDF|MP4)
- Walkthrough of Frequently Made Mistakes for Assignment 3A (MP4)
- Week 11
- Java Readers-Write Locks: Introduction (PDF|MP4)
- Java Readers-Writer Locks: Evaluating Pros and Cons (PDF|MP4)
- Java ReentrantReadersWriterLock: Structure and Functionality (PDF|MP4)
- Java ReentrantReadersWriterLock: Key Methods (PDF|MP4)
- Java ReentrantReadersWriterLock: Example Application (PDF|MP4)
- Java ReentrantReadersWriterLock: Usage Considerations (PDF|MP4)
- Java StampedLock: Structure and Functionality (PDF|MP4)
- Java StampedLock: Key Methods (PDF|MP4)
- Java StampedLock: Example Application (PDF|MP4)
- Java StampedLock: Usage Considerations (PDF|MP4)
- Week 12
- Walkthrough of Assignment 3B Frequently Made Mistakes (MP4)
- Java Barrier Synchronization: Introduction (PDF|MP4)
- Java Barrier Synchronization: Overview of Java Barrier Synchronizers (PDF|MP4)
- Java CountDownLatch: Structure and Functionality (PDF|MP4)
- Java CountDownLatch: Key Methods (PDF|MP4)
- Java CountDownLatch: Example Application (PDF|MP4)
- Java CyclicBarrier: Structure and Functionality (PDF|MP4)
- Java CyclicBarrier: Key Methods (PDF|MP4)
- Java CyclicBarrier: Example Application (PDF|MP4)
- Java Phaser: Structure and Functionality (PDF|MP4)
- Java Phaser: Key Methods (PDF|MP4)
- Java Phaser: Example Application (PDF|MP4)
- Java Barrier Synchronizers: Usage Considerations (PDF|MP4)
- Walkthrough of Assignment 4 (MP4)
- Week 13
- Layered Architectures: Introduction (PDF|MP4)
- Layered Architectures: The Layers Architectural Pattern (PDF|MP4)
- Layered Architectures: Android's Layered Architecture (PDF|MP4)
- Overview of Android: the Hardware Layer (PDF|MP4)
- Overview of Android: the OS Kernel Layer (PDF|MP4)
- Overview of Android: Middleware Infrastructure Layers (PDF|MP4)
- Overview of Android: Key App Components (PDF|MP4)
- Android and Java Frameworks: Introduction (PDF|MP4)
- Android and Java Frameworks: Key Characteristics (PDF|MP4)
- Week 14
- Android Concurrency Frameworks: Motivation (PDF|MP4)
- Android Concurrency Frameworks: Introduction (PDF|MP4)
- Android Concurrency Frameworks: Structure and Functionality (PDF|MP4)
- The AsyncTask Framework: Introduction (PDF|MP4)
- The AsyncTask Framework: Key Methods (PDF|MP4)
- The AsyncTask Framework: Structure and Functionality (PDF|MP4)
- The AsyncTask Framework: Example Application (PDF|MP4)
- The AsyncTask Framework: Usage Considerations (PDF|MP4)
- Overview of Android: Application Framework and Apps Layer (PDF|MP4)
- All the assignments for this course will be available here as they are created.
Back to my CS Courses home page.