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.

3 Mentors

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

2,283 Students

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

89 Exercises

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

About Scala

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
object HelloWorld {
  def hello() = "Hello, World!"
}

Exercism is a great website

Exercism is a great website where I was able to have some very interesting challenges.

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.

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!

Avremel Kaminetzky Personal Website

I enjoy the functional/immutable style of Scala.

Rutger Claes https://github.com/rutgerclaes

I really like working in Scala. It allows me to come up with elegant, functional code that is also concise and type safe.
Fun. Challenging. Interesting

Community-sourced Scala Exercises

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

Difference Of Squares
medium
easy
integers
mathematics
Secret Handshake
medium
easy
bitwise operations
lists
strings
Armstrong Numbers
medium
easy
integers
mathematics
Bob
medium
easy
control flow if else statements
pattern matching
strings
Zebra Puzzle
medium
hard
logic
Crypto Square
medium
medium
lists
security
strings
transforming

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

Join the Scala Track