- Level Professional
- المدة 19 ساعات hours
- الطبع بواسطة Rice University
-
Offered by
عن
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).الوحدات
About the Course
1
Discussions
- Get to Know Your Classmates!
1
Videos
- Course Welcome
4
Readings
- General Course Info
- Course Icon Legend
- Discussion Forum Guidelines
- Pre-Course Survey
Optional: Mini Project
- Mini Project 0 Submission
1
Readings
- Mini Project 0: Setup
Course Content
5
Videos
- 1.1 Threads
- 1.2 Structured Locks
- 1.3 Unstructured Locks
- 1.4 Liveness
- 1.5 Dining Philosophers
5
Readings
- 1.1 Lecture Summary
- 1.2 Lecture Summary
- 1.3 Lecture Summary
- 1.4 Lecture Summary
- 1.5 Lecture Summary
Mini Project
- Mini Project 1 Submission
1
Videos
- Demonstration: Locking and Synchronization
1
Readings
- Mini Project 1: Locking and Synchronization
Quiz
1
Assignment
- Module 1 Quiz
Course Content
5
Videos
- 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
5
Readings
- 2.1 Lecture Summary
- 2.2 Lecture Summary
- 2.3 Lecture Summary
- 2.4 Lecture Summary
- 2.5 Lecture Summary
Mini Project
- Mini Project 2 Submission
1
Videos
- Demonstration: Global and Object-Based Isolation
1
Readings
- Mini Project 2: Global and Object-Based Isolation
Quiz
1
Assignment
- Module 2 Quiz
Talking to Two Sigma: Using it in the Field
2
Videos
- Industry Professional on Parallel, Concurrent, and Distributed Programming in Java - Jim Ward, Managing Director
- Industry Professional on Concurrency - Dr. Shams Imam, Software Engineer
1
Readings
- About these Talks
Course Content
5
Videos
- 3.1 Actors
- 3.2 Actor Examples
- 3.3 Sieve of Eratosthenes Algorithm
- 3.4 Producer-Consumer Problem
- 3.5 Bounded Buffer Problem
5
Readings
- 3.1 Lecture Summary
- 3.2 Lecture Summary
- 3.3 Lecture Summary
- 3.4 Lecture Summary
- 3.5 Lecture Summary
Mini Project
- Mini Project 3 Submission
1
Videos
- Demonstration: Sieve of Eratosthenes Using Actor Parallelism
1
Readings
- Mini Project 3: Sieve of Eratosthenes Using Actor Parallelism
Quiz
1
Assignment
- Module 3 Quiz
Course Content
5
Videos
- 4.1 Optimistic Concurrency
- 4.2 Concurrent Queue
- 4.3 Linearizability
- 4.4 Concurrent Hash Map
- 4.5 Concurrent Minimum Spanning Tree Algorithm
5
Readings
- 4.1 Lecture Summary
- 4.2 Lecture Summary
- 4.3 Lecture Summary
- 4.4 Lecture Summary
- 4.5 Lecture Summary
Required: Mini Project 4
- Mini Project 4 Submission
1
Videos
- Demonstration: Parallelization of Boruvka's Minimum Spanning Tree Algorithm
1
Readings
- Mini Project 4: Parallelization of Boruvka's Minimum Spanning Tree Algorithm
Quiz
1
Assignment
- Module 4 Quiz
1
Readings
- Exit Survey
Industry Professionals on Parallel and Distributed Programming
2
Videos
- 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
1
Readings
- Our Other Course Offerings
Auto Summary
"Concurrent Programming in Java" is a professional-level course designed for IT and Computer Science enthusiasts, focusing on the fundamentals of concurrent programming using Java 8. Taught by Coursera, it covers essential topics like threads, locks, atomic variables, and more, ensuring learners can efficiently manage shared resources in parallel programs. The course includes theoretical foundations and hands-on mini-projects across four modules. Lasting approximately 1140 minutes, it offers Starter and Professional subscription options, ideal for industry professionals and students aiming to master concurrent programming concepts.

Vivek Sarkar