{"id":21127197,"url":"https://github.com/ashishgopalhattimare/parallel-concurrent-and-distributed-programming-in-java","last_synced_at":"2026-04-29T19:31:33.490Z","repository":{"id":147307865,"uuid":"270652069","full_name":"ashishgopalhattimare/Parallel-Concurrent-and-Distributed-Programming-in-Java","owner":"ashishgopalhattimare","description":"Parallel, Concurrent, and Distributed Programming in Java | Coursera","archived":false,"fork":false,"pushed_at":"2020-10-13T22:39:09.000Z","size":36139,"stargazers_count":2,"open_issues_count":14,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-27T02:41:23.387Z","etag":null,"topics":["block-isolation","boruvka-algorithm","concurrent-programming","critical-section","distributed-programming","java-8","kafka","locks","mapreduce-java","mpi","parallel-programming","rice-university","spark","synchronization","threads"],"latest_commit_sha":null,"homepage":"https://www.coursera.org/account/accomplishments/specialization/certificate/NDV8ZGXD45BP","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ashishgopalhattimare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-08T12:01:52.000Z","updated_at":"2024-11-02T15:20:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f7d3029-dacc-4b01-9549-a9b787a7ebb3","html_url":"https://github.com/ashishgopalhattimare/Parallel-Concurrent-and-Distributed-Programming-in-Java","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ashishgopalhattimare/Parallel-Concurrent-and-Distributed-Programming-in-Java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishgopalhattimare%2FParallel-Concurrent-and-Distributed-Programming-in-Java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishgopalhattimare%2FParallel-Concurrent-and-Distributed-Programming-in-Java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishgopalhattimare%2FParallel-Concurrent-and-Distributed-Programming-in-Java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishgopalhattimare%2FParallel-Concurrent-and-Distributed-Programming-in-Java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ashishgopalhattimare","download_url":"https://codeload.github.com/ashishgopalhattimare/Parallel-Concurrent-and-Distributed-Programming-in-Java/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishgopalhattimare%2FParallel-Concurrent-and-Distributed-Programming-in-Java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32440845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["block-isolation","boruvka-algorithm","concurrent-programming","critical-section","distributed-programming","java-8","kafka","locks","mapreduce-java","mpi","parallel-programming","rice-university","spark","synchronization","threads"],"created_at":"2024-11-20T04:47:01.945Z","updated_at":"2026-04-29T19:31:33.474Z","avatar_url":"https://github.com/ashishgopalhattimare.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Parallel-Concurrent-and-Distributed-Programming-in-Java\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/ashishgopalhattimare/Parallel-Concurrent-and-Distributed-Programming-in-Java/blob/master/certificate/NDV8ZGXD45BP.png\" width=\"50%\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e \u003ci\u003eParallel Concurrent and Distributed Programming in Java | Coursera Certification\u003c/i\u003e \u003c/p\u003e\n\n---\n\n\u003cb\u003eLEGENDS LABELLING\u003c/b\u003e \u003c/br\u003e\n✔️\t- The topics covered during the course\u003c/br\u003e\n✅      - Self-done assignment\u003c/br\u003e\n☑\t- Instructor assistence required\u003c/br\u003e\n\n---\n\n## Parallel Programming in Java\n\n\u003cb\u003e\u003cu\u003eWeek 1 : Task Parallelism\u003c/u\u003e\u003c/b\u003e\n\n✔️ Demonstrate task parallelism using Asynkc/Finish constructs \u003c/br\u003e\n✔️ Create task-parallel programs using Java's Fork/Join Framework \u003c/br\u003e\n✔️ Interpret Computation Graph abstraction for task-parallel programs \u003c/br\u003e\n✔️ Evaluate the Multiprocessor Scheduling problem using Computation Graphs \u003c/br\u003e\n✔️ Assess sequetional bottlenecks using Amdahl's Law \u003c/br\u003e\n\n\n✅ \u003ci\u003eMini project 1 : Reciproncal-Array-Sum using the Java Fork/Join Framework\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 2 : Functional Parallelism\u003c/u\u003e\u003c/b\u003e\n\n✔️ Demonstrate functional parallelism using the Future construct \u003c/br\u003e\n✔️ Create functional-parallel programs using Java's Fork/Join Framework \u003c/br\u003e\n✔️ Apply the princple of memoization to optimize functional parallelism \u003c/br\u003e\n✔️ Create functional-parallel programs using Java Streams \u003c/br\u003e\n✔️ Explain the concepts of data races and functional/structural determinism \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 2 : Analysing Student Statistics Using Java Parallel Streams\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 3 : Loop Parallelism\u003c/u\u003e\u003c/b\u003e\n\n✔️ Create programs with loop-level parallelism using the Forall and Java Stream constructs \u003c/br\u003e\n✔️ Evaluate loop-level parallelism in a matrix-multiplication example \u003c/br\u003e\n✔️ Examine the barrier construct for parallel loops \u003c/br\u003e\n✔️ Evaluate parallel loops with barriers in an iterative-averaging example \u003c/br\u003e\n✔️ Apply the concept of iteration grouping/chunking to improve the performance of parallel loops \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 3 : Parallelizing Matrix-Matrix Multiply Using Loop Parallelism\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 4 : Data flow Synchronization and Pipelining\u003c/u\u003e\u003c/b\u003e\n\n✔️ Create split-phase barriers using Java's Phaser construct \u003c/br\u003e\n✔️ Create point-to-point synchronization patterns using Java's Phaser construct \u003c/br\u003e\n✔️ Evaluate parallel loops with point-to-point synchronization in an iterative-averaging example \u003c/br\u003e\n✔️ Analyze pipeline parallelism using the principles of point-to-point synchronization \u003c/br\u003e\n✔️ Interpret data flow parallelism using the data-driven-task construct \u003c/br\u003e\n\n☑ \u003ci\u003eMini project 4 : Using Phasers to Optimize Data-Parallel Applications\u003c/i\u003e\n\n---\n\n## Concurrent Programming in Java\n\t\n\u003cb\u003e\u003cu\u003eWeek 1 : Threads and Locks\u003c/u\u003e\u003c/b\u003e\n\n✔️ Understand the role of Java threads in building concurrent programs \u003c/br\u003e\n✔️ Create concurrent programs using Java threads and the synchronized statement (structured locks) \u003c/br\u003e\n✔️ Create concurrent programs using Java threads and lock primitives in the java.util.concurrent library (unstructured locks) \u003c/br\u003e\n✔️ Analyze programs with threads and locks to identify liveness and related concurrency bugs \u003c/br\u003e\n✔️ Evaluate different approaches to solving the classical Dining Philosophers Problem \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 1 : Locking and Synchronization\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 2 : Critical Sections and Isolation\u003c/u\u003e\u003c/b\u003e\n\n✔️ Create concurrent programs with critical sections to coordinate accesses to shared resources \u003c/br\u003e\n✔️ Create concurrent programs with object-based isolation to coordinate accesses to shared resources with more overlap than critical sections \u003c/br\u003e\n✔️ Evaluate different approaches to implementing the Concurrent Spanning Tree algorithm \u003c/br\u003e\n✔️ Create concurrent programs using Java's atomic variables \u003c/br\u003e\n✔️ Evaluate the impact of read vs. write operations on concurrent accesses to shared resources \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 2 : Global and Object-Based Isolation\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 3 : Actors\u003c/u\u003e\u003c/b\u003e\n\n✔️ Understand the Actor model for building concurrent programs \u003c/br\u003e\n✔️ Create simple concurrent programs using the Actor model \u003c/br\u003e\n✔️ Analyze an Actor-based implementation of the Sieve of Eratosthenes program \u003c/br\u003e\n✔️ Create Actor-based implementations of the Producer-Consumer pattern \u003c/br\u003e\n✔️ Create Actor-based implementations of concurrent accesses on a bounded resource \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 3 : Sieve of Eratosthenes Using Actor Parallelism\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 4 : Concurrent Data Structures\u003c/u\u003e\u003c/b\u003e\n\n✔️ Understand the principle of optimistic concurrency in concurrent algorithms \u003c/br\u003e\n✔️ Understand implementation of concurrent queues based on optimistic concurrency \u003c/br\u003e\n✔️ Understand linearizability as a correctness condition for concurrent data structures \u003c/br\u003e\n✔️ Create concurrent Java programs that use the java.util.concurrent.ConcurrentHashMap library \u003c/br\u003e\n✔️ Analyze a concurrent algorithm for computing a Minimum Spanning Tree of an undirected graph \u003c/br\u003e\n\n☑ \u003ci\u003eMini project 4 : Parallelization of Boruvka's Minimum Spanning Tree Algorithm\u003c/i\u003e\n\n---\n\n## Distributed Programming in Java\n\n\u003cb\u003e\u003cu\u003eWeek 1 : Distributed Map Reduce\u003c/u\u003e\u003c/b\u003e\n\n✔️ Explain the MapReduce paradigm for analyzing data represented as key-value pairs \u003c/br\u003e\n✔️ Apply the MapReduce paradigm to programs written using the Apache Hadoop framework \u003c/br\u003e\n✔️ Create Map Reduce programs using the Apache Spark framework \u003c/br\u003e\n✔️ Acknowledge the TF-IDF statistic used in data mining, and how it can be computed using the MapReduce paradigm \u003c/br\u003e\n✔️ Create an implementation of the PageRank algorithm using the Apache Spark framework \u003c/br\u003e\n\n☑ \u003ci\u003eMini project 1 : Page Rank with Spark\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 2 : Client-Server Programming\u003c/u\u003e\u003c/b\u003e\n\n✔️ Generate distributed client-server applications using sockets \u003c/br\u003e\n✔️ Demonstrate different approaches to serialization and deserialization of data structures for distributed programming \u003c/br\u003e\n✔️ Recall the use of remote method invocations as a higher-level primitive for distributed programming (compared to sockets) \u003c/br\u003e\n✔️ Evaluate the use of multicast sockets as a generalization of sockets \u003c/br\u003e\n✔️ Employ distributed publish-subscribe applications using the Apache Kafka framework \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 2 : Filer Server\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 3 : Message Passing\u003c/u\u003e\u003c/b\u003e\n\n✔️ Create distributed applications using the Single Program Multiple Data (SPMD) model \u003c/br\u003e\n✔️ Create message-passing programs using point-to-point communication primitives in MPI \u003c/br\u003e\n✔️ Identify message ordering and deadlock properties of MPI programs \u003c/br\u003e\n✔️ Evaluate the advantages of non-blocking communication relative to standard blocking communication primitives \u003c/br\u003e\n✔️ Explain collective communication as a generalization of point-to-point communication \u003c/br\u003e\n\n☑ \u003ci\u003eMini project 3 : Matrix Multiply in MPI\u003c/i\u003e\n\n\u003cb\u003e\u003cu\u003eWeek 4 : Combining Distribution and Multuthreading\u003c/u\u003e\u003c/b\u003e\n\n✔️ Distinguish processes and threads as basic building blocks of parallel, concurrent, and distributed Java programs \u003c/br\u003e\n✔️ Create multithreaded servers in Java using threads and processes \u003c/br\u003e\n✔️ Demonstrate how multithreading can be combined with message-passing programming models like MPI \u003c/br\u003e\n✔️ Analyze how the actor model can be used for distributed programming \u003c/br\u003e\n✔️ Assess how the reactive programming model can be used for distrubted programming \u003c/br\u003e\n\n✅ \u003ci\u003eMini project 4 : Multi-Threaded File Server\u003c/i\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashishgopalhattimare%2Fparallel-concurrent-and-distributed-programming-in-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashishgopalhattimare%2Fparallel-concurrent-and-distributed-programming-in-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashishgopalhattimare%2Fparallel-concurrent-and-distributed-programming-in-java/lists"}