Concurrent Programming in Java

  • 4.5
Approx. 19 hours to complete

Course Summary

This course teaches you how to write concurrent and parallel programs in Java, which is essential for designing high-performance applications. You will learn how to use Java's concurrency framework to create efficient and scalable multi-threaded applications.

Key Learning Points

  • Learn how to use Java's concurrency framework to create efficient and scalable multi-threaded applications
  • Understand the principles of concurrency and parallelism in Java
  • Gain hands-on experience with Java's concurrency tools and techniques

Related Topics for further study


Learning Outcomes

  • Understand the principles of concurrency and parallelism in Java
  • Learn how to use Java's concurrency framework to create efficient and scalable multi-threaded applications
  • Gain hands-on experience with Java's concurrency tools and techniques

Prerequisites or good to have knowledge before taking this course

  • Basic knowledge of Java programming language
  • Familiarity with object-oriented programming concepts

Course Difficulty Level

Intermediate

Course Format

  • Online
  • Self-paced

Similar Courses

  • Parallel Programming in Java
  • Advanced Java Programming

Related Education Paths


Related Books

Description

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).

Outline

  • Welcome to the Course!
  • Course Welcome
  • General Course Info
  • Course Icon Legend
  • Discussion Forum Guidelines
  • Pre-Course Survey
  • Mini Project 0: Setup
  • Threads and Locks
  • 1.1 Threads
  • 1.2 Structured Locks
  • 1.3 Unstructured Locks
  • 1.4 Liveness
  • 1.5 Dining Philosophers
  • Demonstration: Locking and Synchronization
  • 1.1 Lecture Summary
  • 1.2 Lecture Summary
  • 1.3 Lecture Summary
  • 1.4 Lecture Summary
  • 1.5 Lecture Summary
  • Mini Project 1: Locking and Synchronization
  • Module 1 Quiz
  • Critical Sections and Isolation
  • 2.1 Critical Sections
  • 2.2 Object Based Isolation (Monitors)
  • 2.3 Concurrent Spanning Tree Algorithm
  • 2.4 Atomic Variables
  • 2.5 Read, Write Isolation
  • Demonstration: Global and Object-Based Isolation
  • 2.1 Lecture Summary
  • 2.2 Lecture Summary
  • 2.3 Lecture Summary
  • 2.4 Lecture Summary
  • 2.5 Lecture Summary
  • Mini Project 2: Global and Object-Based Isolation
  • Module 2 Quiz
  • Talking to Two Sigma: Using it in the Field
  • Industry Professional on Parallel, Concurrent, and Distributed Programming in Java - Jim Ward, Managing Director
  • Industry Professional on Concurrency - Dr. Shams Imam, Software Engineer
  • About these Talks
  • Actors
  • 3.1 Actors
  • 3.2 Actor Examples
  • 3.3 Sieve of Eratosthenes Algorithm
  • 3.4 Producer-Consumer Problem
  • 3.5 Bounded Buffer Problem
  • Demonstration: Sieve of Eratosthenes Using Actor Parallelism
  • 3.1 Lecture Summary
  • 3.2 Lecture Summary
  • 3.3 Lecture Summary
  • 3.4 Lecture Summary
  • 3.5 Lecture Summary
  • Mini Project 3: Sieve of Eratosthenes Using Actor Parallelism
  • Module 3 Quiz
  • Concurrent Data Structures
  • 4.1 Optimistic Concurrency
  • 4.2 Concurrent Queue
  • 4.3 Linearizability
  • 4.4 Concurrent Hash Map
  • 4.5 Concurrent Minimum Spanning Tree Algorithm
  • Demonstration: Parallelization of Boruvka's Minimum Spanning Tree Algorithm
  • 4.1 Lecture Summary
  • 4.2 Lecture Summary
  • 4.3 Lecture Summary
  • 4.4 Lecture Summary
  • 4.5 Lecture Summary
  • Mini Project 4: Parallelization of Boruvka's Minimum Spanning Tree Algorithm
  • Exit Survey
  • Module 4 Quiz
  • Continue Your Journey with the Specialization "Parallel, Concurrent, and Distributed Programming in Java"
  • Industry Professionals on Parallelism - Jake Kornblau and Margaret Kelley, Software Engineers, Two Sigma
  • Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma
  • Our Other Course Offerings

Summary of User Reviews

Discover the world of concurrent programming in Java with this comprehensive course on Coursera. Users rave about the engaging content and practical exercises that make it easy to learn the concepts. Many have praised the instructor's teaching style, which is clear and easy to follow.

Key Aspect Users Liked About This Course

The practical exercises make it easy to learn the concepts.

Pros from User Reviews

  • Engaging content that keeps learners interested.
  • Clear and easy-to-follow teaching style.
  • Practical exercises and examples help learners understand the concepts.
  • Instructor is knowledgeable and experienced in the field.
  • Course material is well-organized and easy to navigate.

Cons from User Reviews

  • Some users felt the course was too basic and didn't provide enough advanced knowledge.
  • A few users experienced technical issues with the platform and had trouble completing assignments.
  • Some users felt that the course was too focused on theory and not enough on practical applications.
  • A handful of users found the course pacing to be too slow or too fast.
  • A few users felt that the course could be more interactive and engaging.
English
Available now
Approx. 19 hours to complete
Vivek Sarkar
Rice University
Coursera

Instructor

Vivek Sarkar

  • 4.5 Raiting
Share
Saved Course list
Cancel
Get Course Update
Computer Courses