LiveLessons: Parallel Functional Programming with Java

Douglas C. Schmidt (
Cornelius Vanderbilt Professor
of Engineering (Computer Science),
Associate Provost of Research, and
Data Science Institute Co-Director
at Vanderbilt University

Table of Contents

oCourse Summary
oCourse Topics
oCourse Objectives
oRecommended Background
oJava Source Code
oFacebook Group
oAdditional Resources
oAbout the Instructor

Course Summary

Parallel Functional Programming in Java LiveLessons video series describes by example how to apply Java functional programming features and frameworks to alleviate the complexity of developing software that can run efficiently and scalably on multi-core and distributed-core processors.

In this course, you'll learn how to develop programs using powerful object-oriented and functional programming language features and frameworks supported by Java. This course first provides an introduction to Javas foundational functional programming features, including lambda expressions, method references, and functional interfaces. These core features provide the foundation for the next topic in this course: the Javas Streams framework, which supports functional-style sequential and parallel operations on streams of elements, such as map-reduce transformations on Java collections.

This course also shows by example how to develop efficient reactive programs that run scalably on multi-core processors using powerful object-oriented and functional programming language features and parallelism frameworks supported by Java. This portion of the course describes how Java leverages its functional programming features to create the completable futures framework. This framework defines a powerful reactive programming model that allows programmers to run multiple asynchronous operations concurrently in one or more pools of threads and process their results asynchronously with respect to other operations in a program.

To help you program high-quality quality and scalable parallel functional programs in Java, this course provides over 16 hours of videos that focus on the pattern-oriented techniques, tools, and methods covered in the following parts:

Course Topics

The Table of Contents for this course is available at the bottom of the page
here. The following is a summary of the key topics covered in this course:

Course Objectives

Upon completing this course, students will be able to:

Recommended Background

This course is intended for software developers who are familiar with More coverage of these background topics is available in my numerous
digital learning offerings.

Java Source Code

The Java source code for all the examples is available here. These examples been tested in Eclipse, Intellij, and/or Android Studio and should be straightforward to port it to other Java environments, as well. Suggestions for improvement are welcome (especially if they are accompanied with updates to the source code).

Facebook Group

There's a Facebook group on Concurrent and Parallel Programming in Java. Feel free to post questions and comments on that group.

Additional Resources

The following are other online sources of material on concurrent and parallel programming in Java:

About the Instructor

Back to Douglas C. Schmidt's LiveLessons page.