Track of my approach on learning the fundamentals of parallel, concurrent, and distributed programming. I started with the specialization on Coursera taught by Vivek Sarkar named Parallel, Concurrent, and Distributed Programming in Java Specialization and build Maven projects in this repo to showcase key learning outcomes through practical implementation.
- Java Programming
- Computer Science
- Apache Spark
- Servers
- Scalability
- Functional Design
- Performance Tuning
- Data Structures
- Java
- Distributed Computing
- Algorithms
- Network Protocols
- Java 8 Javadocs
- PCDP Javadocs
- PCDP Source Code
- RecursiveAction
- RecursiveTask
- ForkJoinPool
- Java Streams Javadocs
- The Java Stream class
- A simple Java tutorial on streams
- A simple Java ForkJoin tutorial
- Using the JDK's performance profiler
- Clone the repository:
gh repo clone pushpsood/ParallelConcurrentDistributedProgrammingConcepts
- Open the repository in your favorite IDE(preferably intelliJ) and start learning.
- This repository contains different modules that should be traversed in a specific order, module by module, listed below.
Each module will have a pom.xml file. To make it a workable module, add them as a Maven module in the order listed below:
## Command to generate the tree: ## If required get the package(macOS): brew install tree ## tree -o readmeTree.md ├── README.md ├── Media │ ├── ParallelConcurrentDistributedProgramming.pdf ├──ParallelProgrammingInJava │ ├── README.md │ ├── ReciprocalArraySumUsingJavaForkJoinFramework │ ├── AnalyzingStudentStatisticsUsingJavaParallelStreams │ ├── ParallelizingMatrixMatrixMultiplyUsingLoopParallelism │ ├── UsingPhasersToOptimizeDataParallelApplications ├── ConcurrentProgramminginJava │ ├── README.md │ ├── LockingandSynchronization │ ├── GlobalAndObjectBasedIsolation │ ├── SieveofEratosthenesUsingActorParallelism │ ├── ParallelizationOfBoruvkaMinimumSpanningTreeAlgorithm ├── DistributedProgramminginJava │ ├── README.md │ ├── FileServer │ ├── MatrixMultiplyInMPI └ └── PageRankWithSpark
- You can test the projects by running the respective Test classes in each module.
- For example, to test the
ReciprocalArraySumUsingJavaForkJoinFramework
module, run theReciprocalArraySumTest.java
class.
- For example, to test the
- If you're getting the below errors while cloning the repository, run the mentioned command:
## fatal: the remote end hung up unexpectedly ## error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400 ## send-pack: unexpected disconnect while reading sideband packet git config --global http.postBuffer 157286400
https://www.coursera.org/account/accomplishments/specialization/CJKSM1MQ59H1
- Offline: ParallelConcurrentDistributedProgramming.pdf
- Online(Comments allowed here, use this for any rectification request): Link
If you need any help while going through the repository, feel free to ping me on LinkedIn Pushp Sood