Work in Progress

We are still in the process of writing the documentation for Scala 3. You can help us to improve the documentation.

Are you searching for the Scala 2 documentation?


Online Courses from The Scala Center


The online courses from the Scala Center provide two main paths to learn Scala. The fast path consists of taking the course Effective Programming in Scala, otherwise you can take the full Scala Specialization, which is made of four courses and a capstone project.

All the courses are available for free. Optionally, a subscription gives you access to a certificate of completion that attests your accomplishments. Learn more about Coursera certificates or edX certificates. Your subscriptions also supports the work of the Scala Center, whose mission is to create high-quality educational material.

You can learn more about the Scala Center online courses in the following video:

Scala Learning Path

The diagram below summarizes the possible learning paths with our courses:

The “foundational” courses target programmers with no prior experience in Scala, whereas the “deepening” courses aim at strengthening Scala programmers skills in a specific domain (such as parallel programming).

We recommend starting with either Effective Programming in Scala, or Functional Programming Principles in Scala followed by Functional Program Design. Then, you can complement your Scala skills by taking any of the courses Programming Reactive Systems, Parallel Programming, or Big Data Analysis with Scala and Spark. In case you take the Scala Specialization, you will end with the Scala Capstone Project.

Effective Programming in Scala

Effective Programming in Scala teaches non-Scala programmers everything they need to be ready to work in Scala. At the end of this hands-on course, you will know how to achieve common programming tasks in Scala (e.g., modeling business domains, implementing business logic, designing large systems made of components, handling errors, manipulating data, running concurrent tasks in parallel, testing your code). You can learn more about this course in the following video:

This course is also a good way to upgrade your Scala 2 knowledge to Scala 3.

After taking this course, you might be interested in improving your skills in specific areas by taking the courses Parallel Programming, Big Data Analysis with Scala and Spark, or Programming Reactive Systems.

Scala Specialization

The Scala Specialization provides a hands-on introduction to functional programming using Scala. You can access the courses material and exercises by either signing up for the specialization or auditing the courses individually. The specialization has the following courses.

These courses provide a deep understanding of the Scala language itself, and they also dive into more specific topics such as parallel programming, and Spark.

Programming Reactive Systems

Programming Reactive Systems (also available on edX) teaches how to write responsive, scalable, and resilient systems with the library Akka.

Scala 2 Courses

The above courses all use Scala 3. If needed, you can find the (legacy) Scala 2 version of our courses here:


Other Online Resources

You can find other online resources contributed by the community on this page.

Contributors to this page: