
Scala is a general-purpose programming language mainly used for data processing, distributed computing, micro services, and more. It supports multiple paradigms, but it is best known for being able to blend object-oriented and functional programming into one amazing concoction.
In this guide, I’ve picked the best free online courses to learn Scala. Some courses are short to get you started in Scala programming in no time while others are comprehensive with hundreds of hours of university-level content packed with projects. Most of the courses are beginner-friendly!
Here are my top picks. Click on one to skip to the course details:
What is Scala?
Scala is a strong statically typed general-purpose programming language mainly used for data processing, distributed computing, micro services, and more. Created by Martin Odersky at the Swiss Research University École Polytechnique Fédérale de Lausanne, it was designed to be a better Java and solved many of the problems Java had, like extraneous boilerplates, complicated concurrent programming, and lack of functional programming support.
But don’t think that Scala is purely a functional programming language — you’d be wrong on that as the Scala language is actually purely object-oriented! Instead, Scala is very flexible and supports multiparadigm programming, so the smart developer can choose the most appropriate paradigm to follow when writing code. This is especially true in data processing, when it makes more sense to model data as objects but process them with pure functions for better parallelization. Additionally, Scala can compile to Java Bytecode (as well as machine code and JavaScript), and it is interoperable with Java code.
Scala is the implementation language of many important frameworks, including Apache Spark, Kafka and Akka. Not only that, it has been used extensively in industry as infrastructure for tech giants such as Twitter, Netflix, and Spotify. There are a lot of Scala jobs available on the market, with Scala being one of the most high-paying languages at $92,780 per year according to the Stack Overflow Developer 2022 Survey. So if you’re interested in working with lots of data or building stuff for the web, Scala is one of the best languages to learn.
Best Courses Guides Methodology
I built this ranking following the now tried-and-tested methodology used in previous Best Courses Guides (you can find them all here). It involves a three-step process:
- Research: I started by leveraging Class Central’s database with 100K online courses and 200K+ reviews. Then, I made a preliminary selection of 70+ courses by rating, reviews, and bookmarks.
- Evaluate: I read through reviews on Class Central, Reddit, and course providers to understand what other learners thought about each course and combined it with my own experience as a learner.
- Select: Well-made courses were picked if they presented valuable and engaging content and they have to fit in a set of criteria and be ranked accordingly: comprehensive curriculum, affordability, release date, ratings and enrollments.
Course Ranking Statistics
Here are some aggregate stats about the ranking:
- All of the courses in this ranking are free or free-to-audit.
- Three of the courses in this ranking are university courses, whereas the rest are independent.
- All of the courses in this ranking have been made or updated for the latest version of Scala, Scala 3.
- All of the courses, except for two, are beginner-friendly.
- Around 700 people follow Scala Topic on Class Central.
Without further ado, let’s go through the top picks.
My #1 pick for the best course to learn Scala is the Functional Programming in Scala Coursera Specialization.
Created by EPFL, the university behind the Scala language itself, this free-to-audit specialization is designed to turn programmers with no prior experience in Scala into Scala experts with a deep understanding of the language.
The specialization covers basic topics such as functional programming principles all the way to the more advanced topics like big data analysis with Spark and parallel programming. Additionally the specialization ends with a capstone project, where you’ll implement a complete application capable of processing gigabytes of data about temperatures all over the world.
You’ll should have one year of experience with any programming language (preferably with Java or C#, but any other language works).
What You’ll Learn
The first course of the specialization will show you the common traits of functional programming, like higher-order functions, function composition, and pattern-matching, and you’ll learn how to apply them in everyday programming tasks. You’ll also be able to reason about functional programs through proofs of invariants and symbolic tracing of execution.
The second course adds on to the first course by teaching you even more ways to apply the functional programming style when designing larger Scala applications. You’ll be able to address a variety of problems using functional programming concepts like laziness, monads, combinatorial search, and more.
With the recent advent of commercial parallel hardware, parallel programming is becoming more and more important. The third course addresses the basics of parallel computing, from a theoretical and a practical aspect. You’ll find that the Scala standard library is production-ready for parallel computing.
In the fourth course, you’ll think even bigger, applying functional concepts across machines instead of individual processors, otherwise known as distributed computing. One of the reasons you’ll want to do this is when you encounter massive datasets up to hundreds or even thousands of gigabytes.
And finally the fifth and final course is where everything you’ve learned throughout the specialization culminates in a capstone project where you’ll build a large data-intensive application using real-world data.
How You’ll Learn
This specialization is 30 weeks long with 7 hours a week, with a combined total of 210 hours of study time. Throughout the courses, you’ll complete many quizzes and build small to medium size Scala applications to apply what you’ve learned into practice. You’ll also end the specialization by building a big real-world application as a capstone project.
Institution | École Polytechnique Fédérale de Lausanne |
Provider | Coursera |
Instructors | Dr. Aleksandar Prokopec, Julien Richard-Foy, Erik Meijer, Martin Odersky, Prof. Heather Miller, Prof. Viktor Kuncak and Roland Kuhn |
Level | Beginner |
Workload | 210 hours |
Enrollments | 66K |
Rating | 4.7 / 5.0 (6.8K) |
Certificate | Paid |
Fun Facts
- All of the instructors who teach this specialization are distinguished contributors to the Scala programming language. Even the designer behind Scala language itself, Martin Odersky, is one of them!
- This course was produced in collaboration with the Scala Center, a not-for-profit center established at EPFL. Hence, it is the official course for beginners to learn Scala.
- The first course in this specialization is one of Class Central’s best free online courses of all time, having 10.5K bookmarks and 66 reviews on Class Central.
If you’re interested in this course, you can find more information about the course and how to enroll here.
My 2nd pick for the best Scala course is Effective Programming in Scala, also by EPFL.
This free-to-audit course is the fast track of the previous course getting you up to speed quickly with Scala programming. It is focused on the simple and practical aspects of the language, teaching you how to unite functional programming and object-oriented programming together, modeling business domains, running parallel tasks, as well as best practices.
To take this course, you should have some experience in any programming language.
What You’ll Learn
You’ll begin the course by learning the basics of the language, starting with the syntax before moving on to thinking programmatically, where you’ll learn how to break down complex problems into simpler problems and model business domains. You’ll also get to know several key programming concepts like conditionals, loops, and collections.
Next, the course gives you a taste of the developer experience by showing you around the tools Scala programmers use in their daily workflow, especially how to organize large programs using modules.
Testing is an essential part of a developer’s toolkit. You’ll learn the most effective ways to test as well as how to reason about code. Additionally, you’ll see how the Scala compiler can, under certain circumstances, write some parts of your program for you, and leverage that usefulness. Finally, you’ll end the course with handling run-time errors and writing concurrent programs such as a web server.
How You’ll Learn
This course is 6 weeks long with each week taking around 5 hours of study. Every week contains about an hour and a half of lectures. You’ll learn by watching the lectures and answering the practice quizzes that come after them so that you can immediately assess your understanding of the material.
At the end of each week, you’ll work on a small Scala project inspired by real-world programs to help you immediately put into practice what you have just learned, if you are paying for the certificate.
Institution | École Polytechnique Fédérale de Lausanne |
Provider | Coursera |
Instructors | Julien Richard-Foy and Noel Welsh |
Level | Beginner |
Workload | 30 hours |
Enrollments | 10K |
Rating | 4.7 / 5.0 (120) |
Certificate | Paid |
Fun Facts
- The course has 48 bookmarks on Class Central.
- There is a paid version of this course by EPFL Extension School which includes everything in the Coursera version plus weekly 30 minutes of live sessions with instructors and a review of your final project by Scala experts.
If you’re interested in this course, you can find more information about the course and how to enroll here.
My third pick for the best Scala course is Scala – Your First Programming Language.
If you’re a complete beginner to programming with no experience whatsoever, this course will suit you. In fact, it’ll bring you from a newbie all the way to a proficient Scala programmer. By the end of this course, you’ll understand basic coding concepts and coding paradigm functional programming and object-oriented programming.
What You’ll Learn
You’ll begin the course by understanding how code is read and interpreted by the computer, and then relate this with the Scala Build Tool and the JVM. Then, you’ll learn the fundamental programming concepts like setting up your development environment, values, defs, vars, and scopes. Afterward, you’ll study how programs can make decisions with conditionals and static types.
Subroutines take control of your code and return control once they have done what they were supposed to do. They play a huge role in recursion, and you’ll see how efficient programming techniques like dynamic programming can result from this.
Once you have the basic concepts down, you’ll explore the functional paradigm with concepts like higher-order functions, function composition, and pattern matching, before moving on to object-oriented programming concepts like inheritance, classes, and polymorphism. You’ll integrate the best concepts from both worlds when writing code. The last few videos in the course ends with error-handling, packages, namespaces, and imports.
How You’ll Learn
This course is 19 hours long. You’ll learn by watching the lecture videos and following along with the instructor as he codes throughout the course.
Channel | DevInsideYou |
Provider | YouTube |
Instructor | Vladyslav Pekker |
Level | Beginner |
Workload | 19 hours |
Certificate | None |
Fun Facts
- Vladyslav Pekker is a 10+ years Scala veteran. His aim is to make the world of professional software development accessible to anyone by creating educational material in the form of video courses and tutorials.
- You can find his own personal website here, along with his Discord community where you can get help.
If you’re interested in this course, you can find more information about the course and how to enroll here.
Scala at Light Speed will teach programmers all they need to know in order to get up and running with Scala.
This free 2 hour jam-packed course goes through the basics very quickly, preferring to focus more on more advanced Scala-specific features like case classes, pattern matching, asynchronous programming with Futures, and more!
To take this course you’ll need to have some programming background.
What You’ll Learn
You’ll quickly start this course off by going through the syntax and basic programming concepts like values, types, expressions and functions. Then, you’ll explore how Object-Oriented programming is done in Scala by looking at classes, singletons, generics, and others. You’ll then see how Functional programming is used by learning about higher-order functions, flatmaps, filters, and more.
One of Scala’s superpower features is pattern matching as it allows you to check values against even the most complicated and nested patterns. You’ll learn pattern matching along with other more advanced features like Futures, implicits, and contextual abstraction.
How You’ll Learn
This course is 2 hours long and is made up of 7 lecture videos. Every example given in the videos are hands-on, and you’ll learn a lot by coding along and running the code with the instructor.
Institution | Rock the JVM |
Provider | Teachable |
Instructor | Daniel Ciocîrlan |
Level | Beginner |
Workload | 2 hours |
Certificate | None |
Fun Facts
- If you’ve managed to build something by yourself after finishing this course, you can email the instructor and he’ll send you a gift as a marker of your work.
- The GitHub page for this course can be found here.
- The course is also available as a YouTube playlist.
If you’re interested in this course, you can find more information about the course and how to enroll here.
Scala Crash Course with some JavaScript flavor, as the name implies, is geared towards JavaScript developers who want to indulge themselves in Scala programming. Whereas other courses in this ranking may be more OOP-focused, this course will teach all the basics and even some advanced features in Scala within a functional perspective — no knowledge of FP required.
What You’ll Learn
After setting up your development environment, you’ll learn the basic Scala programming concepts like values, variables, types, conditionals, loops, and operators. Then, you’ll move onto functions and see the role function plays in functional programming with important concepts like higher-order functions, anonymous functions, and recursion. You’ll be drilled on these deeply.
Of course, you’ll need to know how Scala does OOP with classes, inheritance, and subtype polymorphism. Additionally, pattern-matching, exceptions, and collections will be taught to flesh out your knowledge. Finally, you’ll get to know what Algebraic Data Types are as well as one of Scala’s most controversial features, implicits.
How You’ll Learn
This course is 3–4 hours long. You’ll learn by watching the lecture videos and following along with the instructor as he codes.
Channel | DevInsideYou |
Provider | YouTube |
Instructor | Vladyslav Pekker |
Level | Beginner |
Workload | 3–4 hours |
Views | 40K |
Likes | 1.1K |
Certificate | None |
Fun Facts
If you’re interested in this course, you can find more information about the course and how to enroll here.
COSC250 – Functional and Reactive Programming is a free online public course from the University of New England.
Although the unit is an introduction to functional, object-oriented, asynchronous, and reactive programming, it is taught predominantly using Scala. By the time you’ve completed the course, you’ll be able to code in Scala following many different programming paradigms and techniques!
This course is designed for second year undergraduate students, who mostly have experience of imperative languages (Python and Java), so background knowledge of programming is needed.
What You’ll Learn
The course begins by introducing you to the basic Scala syntax through the familiar context of imperative programming and object-oriented programming. That means you’ll be able to implement any program you’ve developed in your previous programming language. But Scala-specific concepts will be introduced as well, like its type system, Futures and Promises, and Actors.
Next, you’ll explore the functional paradigm. A lot of foreign concepts will be taught, like how functions can be values, laziness, immutability as first-class citizens, pattern matching, and more. Additionally, you’ll learn about category theory, a branch of mathematics influential to functional programming, which involves learning about the dreaded Monoids and Monads. Finally, the last few sections of the course will teach you how to deal with massive streams of events using asynchronous and reactive programming.
How You’ll Learn
This course consists of 11 chapters. You’ll learn by watching the lecture videos and reading the slides given. There are also practicals where you’ll be given tasks or problems to solve. Solutions for these practicals are also available.
Institution | University of New England |
Instructor | Will Billingsley |
Level | Intermediate |
Workload | N/A |
Certificate | None |
Fun Facts
If you’re interested in this course, you can find more information about the course and how to enroll here.
Scala Exercises is an open source project for learning different technologies in Scala. The course has hundreds of solvable interactive exercises with runnable code samples organized into several categories covering the basics of the Scala language and its most important libraries.
The exercises range in difficulty from beginners to advanced, so it is suitable to all levels.
What You’ll Learn
There are 10 categories of exercises in total:
- STD Lib: Learn Scala’s Standard Library.
- Cats: Learn Cats, a library which provides abstractions for functional programming in Scala.
- Shapeless: Learn Shapeless, a type class and dependent type based generic programming library for Scala.
- doobie: Learn doobie, a pure functional JDBC layer for Scala.
- ScalaCheck: Learn ScalaCheck, a tool for testing Scala and Java programs.
- Scala Tutorial: Quickly learn Scala from the beginning through an interactive tutorial.
- circe: Learn circe, a JSON library for Scala.
- Fetch: Learn fetch, a library for making access to data both simple & efficient
- Monocle: Learn Monocle, an optics library for Scala.
- FP in Scala: Learn FP by doing exercises based on Manning’s Functional Programming in Scala book.
How You’ll Learn
This course consists of 10 categories with each category containing many subcategories and exercises. In each category, you’ll learn by reading the explanation snippets and applying what you’ve learned by filling in the interactive code samples. The system will consider the category complete when all its exercises are successfully done.
Institution | 47 Degrees |
Level | All levels |
Workload | N/A |
Stars | 2.5K |
Certificate | None |
Fun Facts
- 47 Degrees is a technology consultancy that unlocks business growth for clients by creating assured solutions for complex, mission-critical software.
- After completing a category, you’ll be able to go back and edit it. Additionally, you can even add new exercises or improve existing ones by sending a pull request, that’s the power of open source!
If you’re interested in this course, you can find more information about the course and how to enroll here.
Exercism is an free online coding platform that provides interesting and unique programming exercises of various difficulty levels. As learning a skill is all about practice, doing exercises on Exercism is an excellent way to practice your Scala coding skills.
When you have solved and submitted an exercise, you’ll receive automated feedback on your code. If you do find an exercise particularly challenging, you can request a mentor to look over your code and give you personalized advice on how to improve it, which I think is the best feature about this website!
What You’ll Learn
Exercism contains exercises of three difficulties: easy, medium, and hard.
Easy exercises include binary search, flattening arrays, and translating RNA sequences into proteins.
The medium exercises include determining whether a person is allergic to something given an allergy score, creating a custom set type, and implementing run-length encoding and decoding.
And finally, the hard exercises include creating a zipper for a binary tree, implementing variable length quantity encoding and decoding, and parsing a Smart Game Format string.
How You’ll Learn
This course is self-paced, so you can take all the time you need to complete the 90+ hands-on programming exercises. Each exercise comes with automatic analysis of your code as well as personal mentoring to help you understand your code’s strengths and flaws.
Provider | Exercism |
Level | All levels |
Workload | N/A |
Enrollments | 14K |
Certificate | None |
Fun Facts
- Exercism provides exercises on 50+ programming languages like Python, Kotlin, F#, and even WebAssembly.
- Their mission is to help everyone get really good at programming, regardless of their background, share the love of programming, and help people upskill as part of their upward social mobility.
- 56 people have contributed towards the Scala syllabus and exercises, with over 180 mentors available at the time of writing.
If you’re interested in this course, you can find more information about the course and how to enroll here.
Just Enough Scala For Spark is a free Jupyter Notebook tutorial on the most important core concepts of Scala that you need to use Apache Spark’s Scala API for data engineering effectively. Although this course isn’t a complete introduction to Spark itself, it’ll teach you just enough Scala for Spark.
Some prior programming experience in any language is assumed, although familiarity with Java is helpful.
What You’ll Learn
Topics which you’ll learn in this tutorial include:
- Methods, and functions,
- Immutable vs. mutable values,
- Type inference,
- Pattern matching,
- Scala’s object model,
- Scala collections and the common operations on them (the basis of Spark’s RDD API),
- Scala type hierarchy and useful Scala types, like case classes, tuples, and options,
- Effective use of the Spark shell (Scala interpreter), and
- Common mistakes and how to avoid them.
How You’ll Learn
You’ll learn through hands-on practice by writing code for the exercises in the Jupyter Notebook and iterating on your code through feedback. Solutions are also available in the notebook.
Provider | GitHub |
Instructor | Dean Wampler |
Level | Intermediate |
Workload | N/A |
Certificate | None |
Fun Facts
If you’re interested in this course, you can find more information about the course and how to enroll here.
Source link