We may earn an affiliate commission when you visit our partners.
Felix Eckhardt

If you are a software developer looking to improve your understanding of concurrency in Scala applications, then the Building Concurrency in Scala course is for you. Led by a Senior Scala Developer with over 15 years of experience, this hands-on course will provide you with the knowledge and tools needed to identify and fix concurrency pitfalls.

Read more

If you are a software developer looking to improve your understanding of concurrency in Scala applications, then the Building Concurrency in Scala course is for you. Led by a Senior Scala Developer with over 15 years of experience, this hands-on course will provide you with the knowledge and tools needed to identify and fix concurrency pitfalls.

Throughout the course, you will learn about the importance of thread pools, how to deal with blocking IO, and how frameworks apply concurrency. You will also gain a deeper understanding of different ThreadPools and how to use them correctly, as well as how to monitor and tweak your applications to improve throughput or latency.

This course is designed for beginners who are familiar with Futures and experienced developers who want to gain a deeper understanding of Scala concurrency. It is hands-on, with step-by-step examples that simulate real-world applications. You will build small applications with performance issues, analyze them, and fix them.

Misusing execution contexts and thread pools can lead to poor throughput and overloaded systems. Therefore, understanding how the JVM internally works and having the right tools to analyze the problem is crucial for achieving high-performance applications. Many Scala frameworks, including Play, have dedicated chapters for the correct configuration of concurrency, highlighting the importance of properly configured concurrency.

In summary, if you want to improve your understanding of concurrency in Scala applications and learn how to identify and fix concurrency pitfalls, this hands-on Building Concurrency in Scala course is for you.

Enroll now

What's inside

Syllabus

Introduction
Scaling computation on a CPU
Intro
Going full core with the ForkJoinPool
Read more
Identify the limits of a synchronous application
How to identify concurrency issues
All cores on deck
Enable concurrent processing
Await asynchronous computation
From Future to Core
The inner workings of a thread pool
Orchestrate CPU and IO
Build a real-world application with IO and computation
Which thread pool should you use?
Working with Scala Frameworks
Play Framework
Play - Naive Approach
Play - Blocking Thread Pool
Cats Effects
Summary
Outro

Save this course

Save Mastering Concurrency: From Future to Core to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Mastering Concurrency: From Future to Core with these activities:
Review Java Concurrency Fundamentals
Strengthen your understanding of the underlying Java concurrency mechanisms that Scala's concurrency features are built upon.
Show steps
  • Review Java's Thread and Runnable interfaces.
  • Study the basics of thread synchronization.
  • Familiarize yourself with the Java Memory Model.
Explore 'Programming in Scala'
Strengthen your Scala foundation by reviewing the core concepts of the language.
View Programming in Scala on Amazon
Show steps
  • Obtain a copy of 'Programming in Scala'.
  • Review the chapters on functional programming and collections.
  • Study the sections on Scala's type system and implicits.
Read 'Java Concurrency in Practice'
Gain a deeper understanding of concurrency concepts and best practices by studying a classic text on Java concurrency.
Show steps
  • Obtain a copy of 'Java Concurrency in Practice'.
  • Read the chapters on thread safety and synchronization.
  • Study the sections on concurrent collections and executors.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Write a Blog Post on Thread Pool Configuration
Solidify your understanding of thread pools by explaining different configuration options and their impact on application performance.
Show steps
  • Research different thread pool types and their parameters.
  • Write a blog post explaining the trade-offs of different configurations.
  • Include examples of how to monitor and tune thread pools.
Build a Concurrent Web Scraper
Apply your knowledge of Scala concurrency to build a practical application that fetches and processes data from multiple web pages simultaneously.
Show steps
  • Choose a set of websites to scrape.
  • Implement a concurrent web scraping solution using Futures or Actors.
  • Measure and optimize the performance of your scraper.
Create a Presentation on Concurrency in Play Framework
Deepen your understanding of how concurrency is handled in the Play Framework by creating a presentation that explains the different approaches and best practices.
Show steps
  • Research Play Framework's concurrency features.
  • Prepare a presentation outlining the different concurrency models.
  • Present your findings to a peer or group.
Implement Concurrent Data Structures
Reinforce your understanding of concurrency primitives by implementing your own concurrent data structures, such as a concurrent queue or map.
Show steps
  • Choose a data structure to implement concurrently.
  • Use locks or atomic variables to ensure thread safety.
  • Write unit tests to verify the correctness of your implementation.

Career center

Learners who complete Mastering Concurrency: From Future to Core will develop knowledge and skills that may be useful to these careers:
Scala Developer
As a Scala Developer, your day-to-day work involves writing Scala code, and concurrency is a key aspect of building high-performance applications. This course will help you become proficient in managing concurrency in Scala, leading to more efficient and robust code. You'd do well to develop skills in using thread pools effectively, dealing with blocking IO, and leveraging asynchronous computation. The hands-on approach of building and analyzing real-world applications will be particularly beneficial. The course's focus on Scala frameworks is also helpful.
Performance Engineer
A Performance Engineer specializes in identifying and resolving performance bottlenecks in software systems. This course helps you improve your understanding of concurrency in Scala applications, thereby enabling you to diagnose and fix concurrency-related performance issues effectively. By learning how to analyze the inner workings of the JVM and how to use the right tools, this learning experience prepares you to optimize throughput and latency, which is what a Performance Engineer does. The content on the Play and Cats Effects frameworks will be particularly useful.
Scalability Engineer
A Scalability Engineer ensures that applications can handle increasing loads without performance degradation. This course helps you master concurrency in Scala, which is crucial for building scalable systems. You will find that the course provides the knowledge and tools needed to optimize thread pools, manage blocking IO, and implement asynchronous computation effectively. The hands-on examples of real-world applications provided by this course are extremely valuable for a Scalability Engineer aiming to design robust and scalable solutions.
Backend Developer
A Backend Developer focuses on the server-side logic of applications, where concurrency is paramount for handling multiple requests efficiently. This course will help you improve your skills in managing concurrency in Scala, leading to more robust and scalable backend systems. It will also help you learn to identify and resolve concurrency issues, optimize thread pool usage, and leverage asynchronous computation, which is crucial for Backend Developers. The coverage of the ForkJoinPool would be particularly useful for maximizing CPU utilization.
Distributed Systems Engineer
A Distributed Systems Engineer designs and maintains systems that run across multiple machines, where concurrency and parallelism are crucial. This course will help you improve your understanding of concurrency in Scala, enabling you to build highly scalable distributed applications. The lessons on managing thread pools, handling blocking IO, and orchestrating CPU and IO are invaluable. Hands-on experience will improve your ability to identify concurrency issues and optimize performance in distributed environments, especially with the content related to the ForkJoinPool.
Software Engineer
The role of a Software Engineer often involves designing, developing, and testing software applications. Optimizing performance is a key responsibility, and this course helps you become proficient in concurrency, a critical aspect of building high-performance Scala applications. By learning how to use thread pools effectively and understanding the intricacies of the JVM, you can write more efficient and scalable code. This course is particularly beneficial because it covers practical examples and real-world scenarios, enabling you to effectively identify and resolve concurrency issues, which is crucial for a Software Engineer.
Lead Developer
As a Lead Developer you are responsible for guiding development teams and designing robust, scalable applications. This course helps you improve your understanding of concurrency in Scala, enabling you to architect systems that perform well under heavy loads. You will be able to effectively manage thread pools, handle blocking IO, and leverage asynchronous computation. Hands-on experience building and analyzing real-world applications with concurrency issues is invaluable for a Lead Developer. The coverage of Cats Effects is very helpful.
Application Developer
As an Application Developer, your primary task is creating and maintaining applications, and performance is a critical factor for user satisfaction. This course helps you master concurrency in Scala, enabling you to build fast and responsive applications. You would do well to learn how to deal with blocking IO and how to utilize different ThreadPools correctly. The course's hands-on approach, simulating real-world applications, is beneficial for an Application Developer aiming to write efficient, high-performance Scala applications. The course content on the Play framework is particularly relevant.
Technical Lead
A Technical Lead guides a team of developers and ensures the technical quality of their work. This course helps you gain a mastery of concurrency in Scala, enabling you to provide expert guidance on how to build high-performance applications. By learning how to identify and fix concurrency pitfalls, you can help your team avoid common mistakes and deliver robust solutions. The real-world simulations in the course are invaluable for providing practical advice to your team members. The course's lessons on blocking IO are particularly helpful.
Cloud Engineer
Cloud Engineers are responsible for designing, implementing, and managing cloud-based solutions, often involving concurrent processing. This course helps you optimize concurrency in Scala applications, enabling you to build efficient and scalable cloud services. You can improve your skills to manage thread pools, deal with blocking IO, and monitor application performance, which is crucial for a Cloud Engineer. The emphasis on real-world application simulations is particularly beneficial, with the course's coverage of Play providing value.
Systems Architect
The role of Systems Architect demands a deep understanding of system performance and scalability. This course helps you learn the complexities of concurrency in Scala, enabling you to design systems that handle high loads efficiently. You'd be well-served to learn about thread pool management, blocking IO, and asynchronous computation. The course's emphasis on real-world application simulations provides valuable insights for a Systems Architect who needs to make informed decisions about concurrency strategies. The course is especially helpful because it teaches how to identify the limits of a synchronous application.
Software Architect
The role of a Software Architect involves making high-level design choices, including concurrency strategies. This course may be helpful to gain an understanding of concurrency in Scala, allowing you to design systems that are both efficient and scalable. The course is useful because it provides a hands-on look at real-world applications and concurrency issues. Learning to identify concurrency pitfalls will be particularly helpful for a Software Architect looking to build robust applications.
Platform Engineer
Platform Engineers build and maintain the underlying infrastructure that supports software applications. This course may be helpful to learn about the core concepts of concurrency in Scala, which is essential for building scalable and reliable platforms. The course discusses thread pools, blocking IO, and asynchronous computation, which prepares you to optimize platform performance. Hands-on experience is incredibly valuable for a Platform Engineer who wants to optimize application throughput and latency by identifying concurrency issues.
DevOps Engineer
As a DevOps Engineer, ensuring the smooth operation and performance of applications is a key objective. This course may be helpful to learn how to properly configure concurrency in Scala, enabling you to optimize application throughput and latency. By understanding how to monitor and tweak applications, you can identify and resolve performance issues quickly. The course’s coverage of the Play Framework and the course's lessons on how frameworks apply concurrency, will be valuable for a DevOps Engineer working with Scala-based systems.
Data Engineer
As a Data Engineer, you build and maintain the infrastructure for processing large datasets, where concurrency is often critical for performance. This course may be helpful to master concurrency in Scala, enabling you to design efficient data pipelines and processing systems. Understanding thread pools, blocking IO, and asynchronous computation aids in optimizing data workflows. This course can benefit a Data Engineer who wishes to build high-performance data processing applications, especially with knowledge of the ForkJoinPool.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Mastering Concurrency: From Future to Core.
Provides a comprehensive and practical guide to Java concurrency. It delves into the fundamentals of threads, locks, and concurrent collections. It is highly recommended for understanding the lower-level details that underpin Scala's concurrency abstractions, and is considered a must-read for any serious Java or Scala developer working with concurrent systems. It provides a solid foundation for understanding the concepts covered in the course.
Serves as a comprehensive introduction to the Scala programming language. While not solely focused on concurrency, it provides essential background knowledge on Scala's syntax, features, and functional programming paradigms. It is particularly useful for those new to Scala or those who want to solidify their understanding of the language before diving into concurrency-specific topics. It can be used as a reference throughout the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser