Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 03f73de

Browse files
update readme
1 parent d20ccb7 commit 03f73de

File tree

1 file changed

+83
-61
lines changed

1 file changed

+83
-61
lines changed

‎README.md

Lines changed: 83 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,92 +5,114 @@ Parallel, Concurrent, and Distributed Programming in Java | Coursera
55
## Parallel Programming in Java
66

77
<b><u>Week 1 : Task Parallelism</u></b>
8-
- Demonstrate task parallelism using Asynkc/Finish constructs
9-
- Create task-parallel programs using Java's Fork/Join Framework
10-
- Interpret Computation Graph abstraction for task-parallel programs
11-
- Evaluate the Multiprocessor Scheduling problem using Computation Graphs
12-
- Assess sequetional bottlenecks using Amdahl's Law
8+
- [ ] Demonstrate task parallelism using Asynkc/Finish constructs
9+
- [ ] Create task-parallel programs using Java's Fork/Join Framework
10+
- [ ] Interpret Computation Graph abstraction for task-parallel programs
11+
- [ ] Evaluate the Multiprocessor Scheduling problem using Computation Graphs
12+
- [ ] Assess sequetional bottlenecks using Amdahl's Law
13+
14+
✅ <i>Mini project 1 : Reciproncal-Array-Sum using the Java Fork/Join Framework</i>
1315

1416
<b><u>Week 2 : Functional Parallelism</u></b>
1517

16-
- Demonstrate functional parallelism using the Future construct
17-
- Create functional-parallel programs using Java's Fork/Join Framework
18-
- Apply the princple of memoization to optimize functional parallelism
19-
- Create functional-parallel programs using Java Streams
20-
- Explain the concepts of data races and functional/structural determinism
18+
- [ ] Demonstrate functional parallelism using the Future construct
19+
- [ ] Create functional-parallel programs using Java's Fork/Join Framework
20+
- [ ] Apply the princple of memoization to optimize functional parallelism
21+
- [ ] Create functional-parallel programs using Java Streams
22+
- [ ] Explain the concepts of data races and functional/structural determinism
23+
24+
✅ <i>Mini project 2 : Analysing Student Statistics Using Java Parallel Streams</i>
2125

2226
<b><u>Week 3 : Loop Parallelism</u></b>
23-
- Create programs with loop-level parallelism using the Forall and Java Stream constructs
24-
- Evaluate loop-level parallelism in a matrix-multiplication example
25-
- Examine the barrier construct for parallel loops
26-
- Evaluate parallel loops with barriers in an iterative-averaging example
27-
- Apply the concept of iteration grouping/chunking to improve the performance of parallel loops
27+
- [ ] Create programs with loop-level parallelism using the Forall and Java Stream constructs
28+
- [ ] Evaluate loop-level parallelism in a matrix-multiplication example
29+
- [ ] Examine the barrier construct for parallel loops
30+
- [ ] Evaluate parallel loops with barriers in an iterative-averaging example
31+
- [ ] Apply the concept of iteration grouping/chunking to improve the performance of parallel loops
32+
33+
✅ <i>Mini project 3 : Parallelizing Matrix-Matrix Multiply Using Loop Parallelism</i>
2834

2935
<b><u>Week 4 : Data flow Synchronization and Pipelining</u></b>
30-
- Create split-phase barriers using Java's Phaser construct
31-
- Create point-to-point synchronization patterns using Java's Phaser construct
32-
- Evaluate parallel loops with point-to-point synchronization in an iterative-averaging example
33-
- Analyze pipeline parallelism using the principles of point-to-point synchronization
34-
- Interpret data flow parallelism using the data-driven-task construct
36+
- [ ]Create split-phase barriers using Java's Phaser construct
37+
- [ ]Create point-to-point synchronization patterns using Java's Phaser construct
38+
- [ ]Evaluate parallel loops with point-to-point synchronization in an iterative-averaging example
39+
- [ ]Analyze pipeline parallelism using the principles of point-to-point synchronization
40+
- [ ]Interpret data flow parallelism using the data-driven-task construct
3541

42+
✅ <i>Mini project 4 : Using Phasers to Optimize Data-Parallel Applications</i>
3643

3744
## Concurrent Programming in Java
3845

3946
<b><u>Week 1 : Threads and Locks</u></b>
40-
- Understand the role of Java threads in building concurrent programs
41-
- Create concurrent programs using Java threads and the synchronized statement (structured locks)
42-
- Create concurrent programs using Java threads and lock primitives in the java.util.concurrent library (unstructured locks)
43-
- Analyze programs with threads and locks to identify liveness and related concurrency bugs
44-
- Evaluate different approaches to solving the classical Dining Philosophers Problem
47+
- [ ] Understand the role of Java threads in building concurrent programs
48+
- [ ] Create concurrent programs using Java threads and the synchronized statement (structured locks)
49+
- [ ] Create concurrent programs using Java threads and lock primitives in the java.util.concurrent library (unstructured locks)
50+
- [ ] Analyze programs with threads and locks to identify liveness and related concurrency bugs
51+
- [ ] Evaluate different approaches to solving the classical Dining Philosophers Problem
52+
53+
✅ <i>Mini project 1 : Locking and Synchronization</i>
4554

4655
<b><u>Week 2 : Critical Sections and Isolation</u></b>
47-
- Create concurrent programs with critical sections to coordinate accesses to shared resources
48-
- Create concurrent programs with object-based isolation to coordinate accesses to shared resources with more overlap than critical sections
49-
- Evaluate different approaches to implementing the Concurrent Spanning Tree algorithm
50-
- Create concurrent programs using Java's atomic variables
51-
- Evaluate the impact of read vs. write operations on concurrent accesses to shared resources
52-
56+
- [ ] Create concurrent programs with critical sections to coordinate accesses to shared resources
57+
- [ ] Create concurrent programs with object-based isolation to coordinate accesses to shared resources with more overlap than critical sections
58+
- [ ] Evaluate different approaches to implementing the Concurrent Spanning Tree algorithm
59+
- [ ] Create concurrent programs using Java's atomic variables
60+
- [ ] Evaluate the impact of read vs. write operations on concurrent accesses to shared resources
61+
62+
✅ <i>Mini project 2 : Global and Object-Based Isolation</i>
63+
5364
<b><u>Week 3 : Actors</u></b>
54-
- Understand the Actor model for building concurrent programs
55-
- Create simple concurrent programs using the Actor model
56-
- Analyze an Actor-based implementation of the Sieve of Eratosthenes program
57-
- Create Actor-based implementations of the Producer-Consumer pattern
58-
- Create Actor-based implementations of concurrent accesses on a bounded resource
65+
- [ ] Understand the Actor model for building concurrent programs
66+
- [ ] Create simple concurrent programs using the Actor model
67+
- [ ] Analyze an Actor-based implementation of the Sieve of Eratosthenes program
68+
- [ ] Create Actor-based implementations of the Producer-Consumer pattern
69+
- [ ] Create Actor-based implementations of concurrent accesses on a bounded resource
70+
71+
✅ <i>Mini project 3 : Sieve of Eratosthenes Using Actor Parallelism</i>
5972

6073
<b><u>Week 4 : Concurrent Data Structures</u></b>
61-
- Understand the principle of optimistic concurrency in concurrent algorithms
62-
- Understand implementation of concurrent queues based on optimistic concurrency
63-
- Understand linearizability as a correctness condition for concurrent data structures
64-
- Create concurrent Java programs that use the java.util.concurrent.ConcurrentHashMap library
65-
- Analyze a concurrent algorithm for computing a Minimum Spanning Tree of an undirected graph
74+
- [ ] Understand the principle of optimistic concurrency in concurrent algorithms
75+
- [ ] Understand implementation of concurrent queues based on optimistic concurrency
76+
- [ ] Understand linearizability as a correctness condition for concurrent data structures
77+
- [ ] Create concurrent Java programs that use the java.util.concurrent.ConcurrentHashMap library
78+
- [ ] Analyze a concurrent algorithm for computing a Minimum Spanning Tree of an undirected graph
79+
80+
✅ <i>Mini project 4 : Parallelization of Boruvka's Minimum Spanning Tree Algorithm</i>
6681

6782
## Distributed Programming in Java
6883

6984
<b><u>Week 1 : Distributed Map Reduce</u></b>
70-
- Explain the MapReduce paradigm for analyzing data represented as key-value pairs
71-
- Apply the MapReduce paradigm to programs written using the Apache Hadoop framework
72-
- Create Map Reduce programs using the Apache Spark framework
73-
- Acknowledge the TF-IDF statistic used in data mining, and how it can be computed using the MapReduce paradigm
74-
- Create an implementation of the PageRank algorithm using the Apache Spark framework
85+
- [ ] Explain the MapReduce paradigm for analyzing data represented as key-value pairs
86+
- [ ] Apply the MapReduce paradigm to programs written using the Apache Hadoop framework
87+
- [ ] Create Map Reduce programs using the Apache Spark framework
88+
- [ ] Acknowledge the TF-IDF statistic used in data mining, and how it can be computed using the MapReduce paradigm
89+
- [ ] Create an implementation of the PageRank algorithm using the Apache Spark framework
90+
91+
✅ <i>Mini project 1 : Page Rank with Spark</i>
7592

7693
<b><u>Week 2 : Client-Server Programming</u></b>
77-
- Generate distributed client-server applications using sockets
78-
- Demonstrate different approaches to serialization and deserialization of data structures for distributed programming
79-
- Recall the use of remote method invocations as a higher-level primitive for distributed programming (compared to sockets)
80-
- Evaluate the use of multicast sockets as a generalization of sockets
81-
- Employ distributed publish-subscribe applications using the Apache Kafka framework
94+
- [ ] Generate distributed client-server applications using sockets
95+
- [ ] Demonstrate different approaches to serialization and deserialization of data structures for distributed programming
96+
- [ ] Recall the use of remote method invocations as a higher-level primitive for distributed programming (compared to sockets)
97+
- [ ] Evaluate the use of multicast sockets as a generalization of sockets
98+
- [ ] Employ distributed publish-subscribe applications using the Apache Kafka framework
99+
100+
✅ <i>Mini project 2 : Filer Server</i>
82101

83102
<b><u>Week 3 : Message Passing</u></b>
84-
- Create distributed applications using the Single Program Multiple Data (SPMD) model
85-
- Create message-passing programs using point-to-point communication primitives in MPI
86-
- Identify message ordering and deadlock properties of MPI programs
87-
- Evaluate the advantages of non-blocking communication relative to standard blocking communication primitives
88-
- Explain collective communication as a generalization of point-to-point communication
103+
- [ ] Create distributed applications using the Single Program Multiple Data (SPMD) model
104+
- [ ] Create message-passing programs using point-to-point communication primitives in MPI
105+
- [ ] Identify message ordering and deadlock properties of MPI programs
106+
- [ ] Evaluate the advantages of non-blocking communication relative to standard blocking communication primitives
107+
- [ ] Explain collective communication as a generalization of point-to-point communication
108+
109+
✅ <i>Mini project 3 : Matrix Multiply in MPI</i>
89110

90111
<b><u>Week 4 : Combining Distribution and Multuthreading</u></b>
91-
- Distinguish processes and threads as basic building blocks of parallel, concurrent, and distributed Java programs
92-
- Create multithreaded servers in Java using threads and processes
93-
- Demonstrate how multithreading can be combined with message-passing programming models like MPI
94-
- Analyze how the actor model can be used for distributed programming
95-
- Assess how the reactive programming model can be used for distrubted programming
112+
- [ ]Distinguish processes and threads as basic building blocks of parallel, concurrent, and distributed Java programs
113+
- [ ]Create multithreaded servers in Java using threads and processes
114+
- [ ]Demonstrate how multithreading can be combined with message-passing programming models like MPI
115+
- [ ]Analyze how the actor model can be used for distributed programming
116+
- [ ]Assess how the reactive programming model can be used for distrubted programming
96117

118+
✅ <i>Mini project 4 : Multi-Threaded File Server</i>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /