Kotlin Coroutines and Concurrency 

If you've been writing coroutine code and just "hoping" that it's right, or if you gave up and settled for other solutions... now's the time to get a full, cohesive mental model that enables you to be effective with coroutines. Once you connect all the dots, you'll be ready to build concurrent and asynchronous apps like a pro!

 

Learn with Ease

Grow your understanding one step at a time, with each lesson building upon earlier lessons.

Craft a Solid Mental Model

Understand how coroutines work, and use them effectively wherever you need them.

Code with Confidence

Know what your coroutines are doing, and eliminate the guesswork.

Learn Coroutines the Easy Way

Asynchronous code. Shared mutable state. Structured concurrency. Context. Scope. When learning coroutines, it can be difficult to know where to start.

Many Kotlin developers have tried piecing together information from different blog posts and articles, hoping to get the full picture, but often end up walking away more confused than ever.

It's not just you!

I had used coroutines in production for years. I'd read the documentation and other articles, watched the conference talks, and even dug into the source code. But still, I always felt it was likely I'd do something wrong with them. For a long time, I just didn't have the same confidence when writing coroutine code as I did with the rest of my code.

But then, while researching and preparing to write the coroutines chapter of my book, Kotlin: An Illustrated Guide, I couldn't put things off any longer - I had to wrestle with the concepts until I figured out how to present them in ways that would be fun, relatable, and accessible.

And you know what I discovered?

The reason many developers struggle with coroutines isn't because they're inherently difficult to understand. Coroutines are often just introduced in overwhelming ways, diving right into asynchronous code, or jumping into the depths of how the internals are structured.

Don't waste your time trying to piece together tidbits of information from lots of small articles about coroutines, hoping to form a full picture. It's a lot of work - trust me! That's why I've designed this course - to ease you into the concepts from beginning to end.

If you've been writing coroutine code and just "hoping" that it's right, or if you gave up and settled for other solutions... now's the time to get a full, cohesive mental model that enables you to be effective with coroutines. Once you connect all the dots, you'll be ready to build concurrent and asynchronous apps like a pro.

What are you waiting for?

Start crafting your coroutines with confidence!

Join The Course

What's covered in this course?

The course totals over 9½ hours of content. Below is the list of units and lessons, along with the runtime in minutes for each unit.

Coroutines and Suspending Functions (35m)

âś… Intro to Coroutines and Concurrency
✅ Suspending Functions
✅ Coroutines in the Standard Library

Builders, Dispatchers, and Context (35m)

✅ You'll Need a Scope...
✅ Coroutine Builders: launch() and async()
✅ Threads and Dispatchers
✅ Coroutine Context
✅ Ways to Get a Scope

Shared Mutable State (33m)

✅ Intro to Shared Mutable State
✅ Avoiding Shared Mutable State
✅ Confinement
✅ Mutex Locks
✅ Atomics

Structured Concurrency 1 (46m)

✅ Structured Programming & Concurrency
✅ Creating Structured Concurrency
✅ Scopes and Suspending Functions
✅ Structured Concurrency in Practice

 Structured Concurrency 2 (49m)

✅ Cancellations
✅ Managing Cancellations

âś… Exceptions in Coroutines
✅ Supervisors
✅ CoroutineExceptionHandler

 Coroutine Usage Patterns (43m)

✅ Avoiding Unnecessary Coroutines
✅ Attaching a Scope to a Lifecycle

âś… Passing Scopes and Dispatchers
✅ Wrapping Callback-Based APIs

Flow 1: Essentials (55m)

✅ Review of Collections and Sequences
✅ Flows, Collectors, and Emitters
✅ Flow Operators
✅ Flow and Cancellations
✅ Flow and Exceptions

Flow 2: Multi-Coroutine Flows (41m)

✅ Intro to Multi-Coroutine Flows
✅ Multi-Coroutine Flow Operators
✅ Putting Flows Together
✅ Flattening Flows

Flow 3: Hot Flows (43m)

âś… Intro to Hot Flows
✅ SharedFlow

✅ StateFlow
✅ Converting Cold Flows into Hot Flows

 Channels (71m)

✅ Intro to Workflows
✅ Channel Basics
✅ Complex Workflows
✅ Produce and Select
✅ Actors
✅ Terminating Channels
âś… Channels and Flows

Testing and Debugging (86m)

âś…Basics of Testing Concurrent Code
✅ Controlling Time in Tests
✅ Testing Coroutines on External Scopes
✅ Testing Flows
✅ Debugging with IDs and Names
✅ Debugging Coroutines in the IDE
✅ The Coroutines Debugging Library

Coroutines in the Wild (34m)

âś… Coroutines in Spring Framework
âś… Coroutines in Ktor Server and Client
âś… Coroutines in Compose Apps

Register Today 

Registration is open from Monday, June 16 until Friday, June 20, and space is limited.

Hey, I'm Dave.


After 25 years of professional coding, I’ve learned something about teaching technical concepts: the right illustration or analogy can make all the difference.

That’s the philosophy behind everything I make. I’ve been writing about Kotlin since 2017 - back when the language was just taking off - and that experience shaped my book, Kotlin: An Illustrated Guide, a carefully crafted, visual guide where each concept builds on the last, with stories and cartoons that make the concepts stick.

Get a feel for my teaching style on my YouTube channel, and join me for The TypeAlias Show, a livestream covering the latest in Kotlin and Android.

  

Ready to become a coroutines expert?

Choose your currency to get started.

United States

US Dollars (USD)

Continue

Europe

Euros (EUR)

Continue

India

Indian Rupee (INR)

Continue

Register Today 

Registration is open from Monday, June 16 until Friday, June 20, and space is limited.

Questions & Answers

Register Today 

Registration is open from Monday, June 16 until Friday, June 20, and space is limited.

❤️ Loved by Learners 

Henry

This is by far the best resource I have used to learn coroutines. I have bought and read all the books on the subject I could get my hands on. I have taken multiple courses on the topic but I have never been able to confidently use coroutines until now.

This course filled in the gaps I didn't know I had in trying to learn to use coroutines confidently. It goes beyond learning the syntax you need to explain why each of the parts are required and that makes all the difference!

Phong

The course has been amazing. I’d highly recommend it to anyone looking to dive deep into Kotlin Coroutines and learn how to use them effectively in real-world Kotlin app development.

I have already gained a huge amount of understanding, and now I feel much more confident applying Coroutines and Structured Concurrency in practice with projects I am working on, not only my tasks, but also helping to review the code of my colleagues.

Codrut

This is one of the few courses that I’ve genuinely enjoyed while gaining useful knowledge about concurrency and coroutines.

The concepts are very well-prepared, with detailed explanations of how things work under the hood rather than just showing how to use APIs or libraries. I especially appreciated the visual support and drawings for the harder parts, and the hands-on exercises that helped the concepts stick.


Gaelle

I have been using coroutines in my day to day work but this course has really helped me gain deeper knowledge of the concepts. It also gave me tips on how to test and experiment myself with coroutines and suspending functions.

The course is clear with real life example easy to follow. The exercises help you experiment with the different concepts. Whether you want to start using coroutines or are already using them in your project you will be able to follow and will learn a lot!

Michael

Really great explanations and good exercises. Just about right for me doing this course between work-time.

Paolo

Dave is a really good teacher. He's definitely well prepared. The lessons are divided into sections that aren't too long and are full of examples. I'm happy with my purchase.

Ready to start?

Join the Course