This course teaches learners (industry professionals and students) the fundamental concepts of concurrent programming in the context of Java 8. Concurrent programming enables developers to efficiently and correctly mediate the use of shared resources in parallel programs. By the end of this course, you will learn how to use basic concurrency constructs in Java such as threads, locks, critical sections, atomic variables, isolation, actors, optimistic concurrency and concurrent collections, as well as their theoretical foundations (e.g., progress guarantees, deadlock, livelock, starvation, linearizability).
Why take this course?
• It is important for you to be aware of the theoretical foundations of concurrency to avoid common but subtle programming errors.
• Java 8 has modernized many of the concurrency constructs since the early days of threads and locks.
• During the course, you will have online access to the instructor and mentors to get individualized answers to your questions posted on the forums.
• Each of the four modules in the course includes an assigned mini-project that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends.
The desired learning outcomes of this course are as follows:
• Concurrency theory: progress guarantees, deadlock, livelock, starvation, linearizability
• Use of threads and structured/unstructured locks in Java
• Atomic variables and isolation
• Optimistic concurrency and concurrent collections in Java (e.g., concurrent queues, concurrent hashmaps)
• Actor model in Java
Mastery of these concepts will enable you to immediately apply them in the context of concurrent Java programs, and will also help you master other concurrent programming system that you may encounter in the future (e.g., POSIX threads, .NET threads).

Taught By

Vivek Sarkar

Professor

Transcript

Welcome to Concurrent Programming in Java. I'm your instructor, Vivek Sarkar. I'm a Professor of Computer Science at Rice University. Where my group leads new research on programming models, compilers, and runtimes for parallel, concurrent, and distributed computers. Prior to joining Rice, I was a senior manager for programming technologies in IBM's Research Division. In this course, you will learn the fundamentals of concurrent programming by studying threads and locks, critical section, actors, and concurrent data structures. This course is one part of a three part specialization named Parallel, Concurrent, and Distributed Programming in Java. In a typical course week you will watch five short lecture videos, read the lecture summaries. Check your understanding with a short quiz, watch a demonstration video. And complete a related coding mini-project in which you will apply the concepts that you've learned in practice. Check out Mini Project 0 for all of the simple setup and tools that you will need in order to complete future projects. Also please use the course's discussion forums to converse with and help out your peers. Welcome to Concurrent Programming in Java!

Explore our Catalog

Join for free and get personalized recommendations, updates and offers.