Scala

Join the Scala Track
Scala combines object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.
Join the Scala Track
Track mentors

13 Mentors

Our mentors are friendly, experienced Scala developers who will help teach you new techniques and tricks.
Track students

4,237 Students

Join thousands of students who have enjoyed learning and improving their skills by taking this track.
Track exercises

90 Exercises

Hundreds of hours have gone into making these exercises fun, useful, and challenging to help you enjoy learning.

About Scala

object HelloWorld {
  def hello() = "Hello, World!"
}

Scala combines object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.

  • Features
    • JVM Interoperability - Scala runs on the JVM, so Java and Scala stacks can be mixed for seamless integration.
    • Type Inference - Scala is statically typed. However, Scala provides type inference to ease the burden of an advanced type system.
    • Object Oriented - Scala is a pure object-oriented language in the sense that every value is an object. Data types and behaviors of objects are described by classes and traits. Class abstractions are extended by subclassing and by a flexible mixin-based composition mechanism to avoid the problems of multiple inheritance.
    • Functional - Scala is also a functional language in the sense that every function is a value. Scala provides a lightweight syntax for defining anonymous functions, it supports higher-order functions, it allows functions to be nested, and supports currying. Scala’s case classes and its built-in support for pattern matching model algebraic types used in many functional programming languages. Singleton objects provide a convenient way to group functions that aren’t members of a class.
    • Concurrency & Distribution - Use data-parallel operations on collections, use actors for concurrency and distribution, or futures for asynchronous programming.
Join the Scala track

A tremendous learning opportunity to explore the depth of your own knowledge

Exercism is fantastic in learning new languages but that is not the extent of it. If you are a "more experienced" programmer you may have encountered impostor syndrome: the idea you don't really know what you think you know. Exercism lets you solve problems and put them in the space of open feedback which is a tremendous learning opportunity to explore the depth of your own knowledge. Even if you have been programming in a language for awhile it is worth checking into Exercism to see where you stand with current implementation practices.

Relaxed. Encouraging. Supportive.

Meet the Scala Track mentors

Once you join the Scala language track, you will receive support and feedback from our team of mentors. Here are the bios of a few of the mentors of this track.

Avatar of Thayne McCombs

Thayne McCombs https://github.com/tmccombs

I've worked on scala profesionally for over five years. I like it's pragmatic approach to functional programming on the robust JVM platform
Avatar of Avremel Kaminetzky

Avremel Kaminetzky Personal Website

I enjoy the functional/immutable style of Scala.
Avatar of Greg Stromire

Greg Stromire https://github.com/gstro

I learned to program on embedded devices, and later moved to iOS development in Objective-C and Swift. Most recently, I've been exploring functional programming in Scala. I'm interested in security principles and applied cryptography. And if I can ever find some spare free time, I would love to try out Rust!
Avatar of Max Leuthäuser

Max Leuthäuser GitHub

Software Engineer and IT Consultant. Scala Enthusiast.
Avatar of Alexandre Langlais

Alexandre Langlais French blog

Scala is a great solution for pure functional programming in today's industry.
Avatar of Jacqueline Outka

Jacqueline Outka https://github.com/outkaj

I find Scala to be both a beautiful and useable language. I like that you can use clear and concise functional paradigms, while still enjoying the benefits of object orientation and JVM interoperability.
Fun. Challenging. Interesting

Community-sourced Scala exercises

These are a few of the 90 exercises on the Scala track. You can see all the exercises here.

Grade School

easy
maps
sequences
sorting

Rail Fence Cipher

medium
algorithms
strings
transforming

Palindrome Products

medium
algorithms
optional values
sets
strings
tuples
math

Clock

easy
structural equality
time

Collatz Conjecture

easy
recursion
math

Triangle

easy
misc
Passionate. Knowledgeable. Creative.

Meet the Scala Track maintainers

The Scala Maintainers are the brains behind the Scala Track. They spend their spare time creating interesting and challenging exercises that we can all learn from. We are incredibly grateful for their hard work. Here are the bios of a few of the maintainers of this track.

Avatar of Ric Emery

Ric Emery

This maintainer has not added their bio yet.
Avatar of Erik Schierboom

Erik Schierboom My blog

This maintainer has not added their bio yet.

Get started with the Scala track. As with everything on Exercism, it's 100% free!

Join the Scala Track