Parallel programming in Java
Course 1
- 19 hours
- 4.6 (1,205 ratings)
Course Details
What you’ll learn
This course teaches industry professionals and students the fundamental concepts of parallel programming in the context of Java 8. Parallel programming allows developers to take advantage of multi-core computers to speed up application performance by using multiple processors simultaneously. By the end of the course, you will know how to use popular parallel programming frameworks in Java (such as ForkJoin, Stream, and Phaser) to write parallel programs for a wide range of multi-core platforms, including servers, desktops, and mobile devices, and you will also learn about their theoretical foundations, including computational graphs, ideal parallelism, parallel speedup, Amadel’s law, information races, and determinism.
Why should you take this course?
- All computers are multi-core computers, so it is important that you learn how to extend your knowledge of sequential programming to Java.
- Java 7 and Java 8 introduced new parallel programming frameworks (ForkJoin, Stream) that significantly changed the paradigms of parallel programming since the early decades of Java.
- Each of the four modules in the course has a designated miniature project, which will give you useful practical experience to apply the concepts learned after completing the course.
- During the course, you will need online access to the instructor and mentors to receive personalized answers to your questions in the forums.
The desired learning outcomes of the course include:
- Parallelism theory: computational graphs, work, range, ideal parallelism, parallel speedup, Amadel’s law, information races, and determinism
- Task Concurrency Using Java’s ForkJoin Framework
- Functional Concurrency Using Java’s Future and Stream Frameworks
- Loop-level parallelism with extensions for checkpoints and iteration chunking
- Datastream parallelism using the Phaser framework and data-driven tasks
Mastering these concepts will allow you to immediately apply them in the context of multi-core Java programs, and will also provide the foundation for mastering other parallel programming frameworks that you will benefit from in the future (such as C++11, OpenMP, .Net Task Parallel Library).
Skills you will acquire
- Category: Data stream
- Category: Parallel Programming
- Category: Java Methodology
Synchronous programming in Java
Course 2
- 18 hours
- 4.5 (655 ratings)
Course Details
What you’ll learn
This course teaches industry professionals and students the fundamental concepts of synchronized programming in the context of Java 8. Synchronized programming allows developers to effectively and correctly manage the use of shared resources in concurrent programs. By the end of the course, you will know how to use basic synchronization constructs in Java such as processes (threads), locks, critical sections, atomic variables, isolation, actor models, optimistic synchronization, and synchronized collections, as well as their theoretical foundations (such as progress guarantees, deadlocks, livelocks, starvation, and linearizability).
Why should you take this course?
- It is important to be aware of the theoretical foundations of synchronization to avoid common but subtle programming mistakes.
- Java 8 has updated most of the synchronization constructs since the early days of processes and locks.
- During the course, you will need online access to the instructor and mentors to receive personalized answers to your questions in the forums.
- Each of the four modules in the course has a designated miniature project, which will give you useful practical experience to apply the concepts learned after completing the course.
The desired learning outcomes of the course include:
- Synchronization Theory: Progress Guarantees, Deadlock, Livelock, Starvation, Linearizability
- Using processes and locks in an ordered/unordered configuration in Java
- Atomic variables and isolation
- Optimistic synchronization and synchronized collections in Java (such as synchronized queues, synchronized hashmaps)
- Player model in Java
Mastering these concepts will allow you to immediately apply them in the context of synchronized Java programs, and will help you master other synchronized programming systems that you will benefit from in the future (such as POSIX threads, .NET threads).
Skills you will acquire
- Category: Synchronization (Computer Science)
- Category: Actor Model
- Category: Optimistic synchronization control
- Category: Synchronous Programming
Distributed programming in Java
Course 3
- 17 hours
- 4.5 (489 ratings)
Course Details
What you’ll learn
This course teaches industry professionals and students the fundamental concepts of distributed programming in the context of Java 8. Distributed programming allows developers to use multiple nodes in a data center to increase throughput and reduce latency for selected applications. By the end of the course, you will know how to use popular distributed programming frameworks for Java programs, including Hadoop, Spark, Sockets, Remote Method Invocation (RMI), Multicast Sockets, Kafka, Message Passing Interface (MPI), as well as various approaches to combining distributed work with multithreaded programming.
Why should you take this course?
- All servers in data centers are organized as collections of distributed servers, and it is also important to learn how to use multiple servers to increase bandwidth and reduce latency.
- In addition to learning specific frameworks for distributed programming, the course will teach you how to combine multi-core parallelism and distributed programming in a unified approach.
- Each of the four modules in the course has a designated miniature project, which will give you useful practical experience to apply the concepts learned after completing the course.
- During the course, you will need online access to the instructor and mentors to receive personalized answers to your questions in the forums.
The desired learning outcomes of the course include:
- Distributed Map-Reduce programming in Java using Hadoop and Spark frameworks
- Client-server programming using Java Socket and Remote Method Invocation (RMI) interfaces
- Message Passing Programming Using Message Passing Interface (MPI) in Java
- Approaches to integrate work distribution with multi-process programming, including processes and processes, distributed actors, and reactive programming
Mastering these concepts will allow you to immediately apply them in the context of distributed Java programs, and will also provide the foundation for mastering other distributed programming systems you will encounter in the future (such as Scala or C++).
Skills you will acquire
- Category: Distributed Programming
- Category: Actor Model
- Category: Parallel Programming
- Category: Reactive Programming