Course Information
Course Overview
System Programming, C/++, Multithreading Concepts, Thread Synchronization, Operating System Project Courses, Event Loops
Welcome to the World of Asynchronous Programming!!
Asynchronous programming is used anywhere where your application interacts with other external entities - be it other threads, other processes. This world by its nature is Asynchronous. Asynchronous literally means - anything can happen anytime - unpredictable. How do you write software through Asynchronous programming? That's what we shall be going to learn in this course. Big software projects of reasonable sizes are Asynchronous. Software projects leave their synchronous boundaries the moment it starts integrating and communicating with external entities or go multithreaded.
Asynchronous programming is widely used in Distributed Systems, Networking Protocols, Distributes Databases, etc.
The prerequisite of this Course :
Know Thread Synchronization Concepts - Mutexes and Condition Variables ( any thread library, but we will be using pthreads )
C or C++ in preferable, but if your fav language is any other mainstream language then also it is ok. Borrow the concepts and implement it in your fav language.
Comfortable with basic Data structures such as Linked-List.
Zeal to learn and excel - beyond what Crowd is doing ( DS/ALGO/CP )
The end product of this Course shall be a mini library yet very powerful library which allows you do develop software through Asynchronous programming.
Course Difficulty Level :
The Course is level is Intermediate to Advanced. Very beginners pls refrain from enrolling into the Course.
Software Designing Problems to Address in this Course :
Problem 1. Simulating Concurrency in Single-Threaded Programs
problem 2. Reducing Multi-threaded Programs to Single Threaded
Problem 3. Work Deferrals
Problem 4. Asynchronous Communication
Problem 5. Queuing and Processing Incoming Network Packets
Good luck ! Happy Learning.
After doing this course You would understand :
Problems with Synchronous programming
Design and Implement Asynchronous Application/Softwares
What type of applications/softwares must not be multi-threaded
What type of applications/softwares must be asynchronous
Say good bye to locking and thread synchronization for forever.
The Concepts you would learn in this course are portable to other programming languages of your choice
Course Content
- 10 section(s)
- 66 lecture(s)
- Section 1 Understanding the term Asynchronous
- Section 2 Getting Started with Asynchronous Programming
- Section 3 Design Pattern 1 - Serializing Multi-Threaded Flows
- Section 4 Design Pattern 2 - Serializing Timers
- Section 5 Design Pattern 3 - Preemption and Rescheduling
- Section 6 Design Pattern 4 - Task Prioritization
- Section 7 Design Pattern 5 - Handling Premature Deletion
- Section 8 Appendix A - Understanding Producer Consumer Synchronization
- Section 9 Appendix B - Understanding Concurrency and Parallelism
- Section 10 Appendix C - Adding Listener Threads
What You’ll Learn
- The Art of Asynchronous Programming
- How to Communicate in an Asynchronous way
- Writing a Computation Scheduler
- Reducing Multithreaded Application to Single Threaded
- Designing and Implementing Asynchronous Software's
- Implementing Concurrency in a Single Threaded Applications
- Event Loop Design and Implementation
- Implementing blocking and Non-Blocking Calls
Skills covered in this course
Reviews
-
KKarol Cieśla
1. In the early parts many things are not explained and yet code is provided, for example mutex/critical section choice. Then in following chapters these details are provided, it would be good to at least indicate that this part will be explained later or change the order. 2. Section 4 says to do git clone of repo... which does not use queue. Yet in the same section I can tell from the code it is using queue based approach, and such thing was not mentioned after the git clone part. Also network utils seem to be missing htons for port conversion, mysteriously UDP listener will not work on many systems. It would be better to (additionally) provide clear list of changes. 3. Its C, not C/C++. 4. Some pictures with steps are a bit messy - small handwriting, it would be better to use clearer, bigger graphical indications, so I could take a screenshot and have some summary.
-
MMike Harris
Asynchronous programming is a philosophy, not just multi threading but how to handle multiple Tasks. Recommended if you want to learn some advance programming skills(not easy), and how to schedule tasks/jobs, single threaded or multi threaded. Like logging output or managing memory during system idle times.
-
MMUHAMMET GORMEZ
Nice implementation
-
AAhmad Saleh
Outstanding course as usual with this course, will start being professional with threads and implement real world scenarios in very easy way (its very recommend to enroll courses thread part A and part B before watching this course) Very recommended course thank you abhishek