CS *254: Concurrent Object-Oriented and Functional Programming in Java and Android
Times and Location
- Classtime -- Tuesdays from 6:30pm to 7:45pm central time.
- Final exam time is the last day of class.
Philosophy
Developing high quality concurrent object-oriented and functional
software in Java for Android mobile devices is hard; developing high
quality reusable concurrent object-oriented and functional
software is even harder. The principles, methods, and skills required
to develop reusable software cannot be learned by generalities.
Instead, developers must learn through experience how reusable
concurrent components and frameworks can be designed, implemented,
optimized, validated, maintained, and enhanced by applying good
object-oriented and functional development practices and patterns.
Prerequisites
- Proficiency in Java, i.e., as covered in CS 101
- Proficiency in software patterns, i.e., as covered in CS 251
- Knowledge of email, the Web, and online discussion forums
- 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. More
extensive material from a previous offering of this course is
available here
- Week 1
- CS 254 Course Overview Part 1 (MP4|PDF)
- CS 254 Course Overview Part 2 (MP4|PDF)
- CS 254 Course Overview Part 3 (MP4|PDF)
- CS 254 Course Overview Part 4 (MP4|PDF)
- Walkthrough of Assignment 1A (MP4)
- Overview of Java Lambda Expressions (MP4|PDF)
- Using Java Lambda Expressions Correctly and Efficiently (MP4|PDF)
- Applying Java Lambda Expressions - Case Study ex4 (MP4|PDF)
- Benefits of Java Lambda Expressions (MP4|PDF)
- Implementing Closures with Java Lambda Expressions (MP4|PDF)
- Applying Closures and Java Lambda Expressions in Case Study ex6 (MP4|PDF)
- Overview of Java Method References (MP4|PDF)
- Applying Java Method References (MP4|PDF)
- Java Functional Interfaces: Overview (MP4|PDF)
- The Java Predicate Functional Interface (MP4|PDF)
- The Java Predicate Functional Interface: Case Study ex8 (MP4|PDF)
- Week 2
- The Java Function Functional Interface (MP4|PDF)
- The Java Function Functional Interface: Case Study ex9 (MP4|PDF)
- The Java BiFunction Functional Interface (MP4|PDF)
- The Java BiFunction Functional Interface: Case Study ex11 (MP4|PDF)
- The Java Supplier Functional Interface: Optional Usage (MP4|PDF)
- The Java Supplier Functional Interface: Case Study ex12 (MP4|PDF)
- The Java Consumer Functional Interface (MP4|PDF)
- Applying the Java Consumer & Function Functional Interfaces (MP4|PDF)
- The Java Function & Consumer Functional Interfaces: Case Study ex14 (MP4|PDF)
- Week 3
- The Java Supplier Functional Interface: Constructor References (MP4|PDF)
- The Java Supplier Functional Interface: Case Study ex13 (MP4|PDF)
- Other Properties of Java Functional Interface (MP4|PDF)
- Summary of Frequently Made Mistakes for Assignment 1A in CS 5254
(MP4)
- Walkthrough of Assignment 1B (MP4)
- Java Platform Threads vs. Virtual Threads (Part 1) (MP4|PDF)
- Java Platform Threads vs. Virtual Threads (Part 2) (MP4|PDF)
- Applying Java Platform Threads & Virtual Threads: Case Study ex15 (MP4|PDF)
- Key Methods in a Java Thread (MP4|PDF)
- Applying Java Functional Programming Features to the ThreadJoinTest Case Study (MP4|PDF)
- Applying Java Functional Programming Features and Threads in ThreadJoinTest (MP4|PDF)
- Applying Java Functional Programming Features: the ThreadJoinTest Case Study (MP4|PDF)
- Evaluating the ThreadJoinTest Case Study (MP4|PDF)
- Week 4
- Motivating the Need for Java Futures (MP4|PDF)
- Overview of the Future Lifecycle & Common Human Known Uses (MP4|PDF)
- Overview of Java Futures (MP4|PDF)
- Overview of Java FutureTask (MP4|PDF)
- Applying Java Futures in Case Study ex16 (MP4|PDF)
- Week 5
- Walkthrough of Frequently Made Mistakes for Assignment 1B (MP4)
- Walkthrough of Assignment 2A (MP4)
- Week 6
- Implementing the Singleton Pattern in Java Multi-threaded Programs - Case Study ex28 (Part 1) (MP4)
- Implementing the Singleton Pattern in Java Multi-threaded Programs - Case Study ex28 (Part 2) (MP4)
- Implementing the Singleton Pattern in Java Multi-threaded Programs - Case Study ex28 (Part 3) (MP4)
- Implementing the Singleton Pattern in Java Multi-threaded Programs - Case Study ex28 (Part 4) (MP4)
- Applying the Java Volatile Type Qualifier to Coordinate Multiple Threads in a Concurrent Program (MP4)
- Week 7
- Walkthrough of Frequently Made Mistakes for Assignment 2a (MP4)
- Walkthrough of Assignment 2A for CS 5254 in Summer of 2023 (MP4)
- Implementing an "AtomicLong" Capability with Java Synchronizers - Case Study ex39 (Part 1) (MP4)
- Implementing an "AtomicLong" Capability with Java Synchronizers - Case Study ex39 (Part 2) (MP4)
- Implementing an "AtomicLong" Capability with Java Synchronizers - Case Study ex39 (Part 3) (MP4)
- Implementing an "AtomicLong" Capability with Java Synchronizers - Case Study ex39 (Part 4) (MP4)
- Applying Reentrant & Non-Reentrant Java Locks to Object-Oriented Frameworks & Applications (Part 1) (MP4)
- Applying Reentrant & Non-Reentrant Java Locks to Object-Oriented Frameworks & Applications (Part 2) (MP4)
- Applying Reentrant & Non-Reentrant Java Locks to Object-Oriented Frameworks & Applications (Part 3) (MP4)
- Week 8
- Overview of the ImageTaskGang Application (MP4|PDF)
- Structure & Dynamics of the ImageTaskGang Application (MP4|PDF)
- Pattern-Oriented Software Architecture of the ImageTaskGang Application (MP4|PDF)
- Analyzing the TaskGang Class (MP4|PDF)
- Analyzing the ImageTaskGang Class (MP4|PDF)
- Analyzing the Filter Class Hierarchy (MP4|PDF)
- Wrapping Up the ImageTaskGang Application Analysis (MP4|PDF)
- Walkthrough of Frequently Made Mistakes for Assignment 2B (MP4)
- Week 9
- Walkthrough for Assignment 3A for CS 5254 (MP4)
- Week 10
- Overview of the SearchTaskGang Case Study (MP4|PDF)
- Overview of the TaskGang Framework (MP4|PDF)
- Overview of the SearchTaskGangCommon Class (MP4|PDF)
- Overview of the OneShotThreadPerTask Class (MP4|PDF)
- Overview of the OneShotExecutorService Class (MP4|PDF)
- Overview of the OneShotExecutorServiceFuture Class (MP4|PDF)
- Overview of the OneShotExecutorCompletionService Class (MP4|PDF)
- Week 11
- Walkthrough of Frequently Made Mistakes for Assignment 3A (MP4)
- Walkthrough of Assignment 3B (MP4)
- Overview of the BarrierTaskGang Case Study (MP4|PDF)
- Overview of the SearchTaskGangCommon Class (MP4|PDF)
- Overview of the OneShotSearchWithCountDownLatch Class (MP4|PDF)
- Overview of the SearchTaskGangCommonCyclic Class (MP4|PDF)
- Overview of the CyclicSearchWithCyclicBarrier Class (MP4|PDF)
- Overview of the CyclicSearchWithPhaser Class (MP4|PDF)
- Wrapping Up the BarrierTaskGang Case Study Analysis (MP4|PDF)
- Week 12
- Walkthrough of Frequently Made Mistakes for Assignment 3B (MP4)
- The Java StampedLock: Case Study ex47 part 1 (MP4)
- The Java StampedLock: Case Study ex47 part 2 (MP4)
- The Java StampedLock: Case Study ex47 part 3 (MP4)
- Walkthrough of Assignment 4 (MP4)
- Walkthrough of Frequently Made Mistakes for Assignment 4 (MP4)
- All the assignments for this course will be available here as they are created.
Back to my CS Courses home page.