Effective Programming in

  • 125 hours
  • 420 CHF / month

In this course, you will learn how to get the most out of Scala to solve common programming tasks such as modeling business domains, breaking down complex problems into simpler problems, manipulating data, or running parallel tasks. Along the journey, you will also learn the best practices for writing high-quality code that scales to large applications, how to handle errors, how to write tests, and how to leverage a productive development environment.

EPFL Extension School learner

Ready to start learning?

Watch the course preview

Why you should take
this course

Scala is an expressive, versatile, and safe programming language. First, Scala code is pleasant to maintain because the language has a lean syntax, and it supports declarative programming. As a consequence, Scala programs are nice to read and seamless to refactor. Second, Scala programs are a blessing to engineer thanks to both objects and functions. They allow you to implement systems in a modular way, and to write reusable pieces of code.

Scala has been successfully used in domains such as big data processing, streaming, distributed computing, and more. Also, Scala developers are among the highest-paid developers.

This comprehensive, hands-on, course aims at leveling up your programming skills by embracing both functional programming and object-oriented programming. You will become familiar with the standard library and the common patterns of code used in the real world.

Who is it for?

Photo of the EPFL campus

Effective Programming in Scala is for any developer willing to gain the skills and understanding to oversee or implement a Scala project. You either want to switch careers or open up new career opportunities in your current workplace with a formal recognition of your skills.

Course curriculum

The course Effective Programming in Scala teaches non-Scala programmers everything they need to be ready to work in Scala. With video trainings, written lessons, and hands-on exercises, you’ll gain a broad understanding of the tools and techniques used to work in Scala.

  • Get Up and Running with Scala on Your Computer
  • What is a Scala Program: Learn how to write and evaluate basic expressions and definitions
  • Structuring Data in Scala: Learn how to model a business domain with case classes, sealed traits, and enumerations
  • Manipulating Collections of Data: Using the generic List data type from the standard library, learning about the other generic data structures provided by the standard library (sets, sequences, and maps), and their respective use cases. All the collection classes have a comprehensive set of high-level operations to transform, filter, and iterate over their elements
  • Writing Algorithms: A couple of techniques to implement loops in Scala (collections, while-loops, and recursion), and their tradeoffs
  • Programming in the Large: How to write Scala projects larger than a worksheet? Learn how to define an entry point for a Scala project, and discover the tools you can leverage to write, compile, run, and debug your code
  • Modules and Encapsulation: Using object-oriented programming techniques to break down a complex project into small modular components. Understanding when to use case classes versus simple classes
  • Reasoning About Code: Understanding the tradeoffs of using immutable data types vs mutable data types, and diving into different testing techniques such as unit testing, property-based testing, integration testing, and mocking
  • Type-Directed Programming: We look into a unique feature of Scala that lets the compiler write some (repetitive) parts of your programs for you! Based on the expected type of a parameter, the compiler can provide a value for this parameter if it finds an unambiguous candidate value. This technique is often used to automatically generate the serializer and deserializer of a data type, solely based on its definition, for instance.
  • Implicit conversions
  • Error Handling: Understanding the pros and cons of low-level “exceptions”, and exploring alternative approaches.
  • Remote Calls and Parallel Computations: Working with asynchronous computations, and leveraging the multiple CPUs of a computer by running tasks in parallel.
  • Capstone project Showcase the skills and knowledge you’ve learned on the program by applying them to your own Scala project.

These course details are subject to change; please refer to the program outline at the time of registration.


This course is taught at intermediate-level. You should have the following tools, skills and abilities prior to registering for this course:

  • English at B1 level
  • A computer with a webcam, microphone, and a minimum internet connection of 2Mbps download / 512kbps upload, enabling you to stream videos with sound and to effectively participate in video chats
  • Familiarity with computer environments (what is a program, file system, file formats, terminal, programming language, library)
  • Prior experience with any high-level programming language

Your course instructor team

Julien Richard-Foy
Julien Richard-Foy Course Developer and Instructor
Noel Welsh
Noel Welsh Course Developer
Sébastien Doeraene
Sébastien Doeraene Course Instructor
Adrien Piquerez
Adrien Piquerez Course Instructor
Jamie Thompson
Jamie Thompson Course Instructor
Anatolii Kmetiuk
Anatolii Kmetiuk Course Instructor

This course is developed and taught by the Scala Center, an independent not-for-profit center established at EPFL.

For more information please visit their website:

What you'll
get from us

  • 100% online
  • Hands-on project work
  • One-to-one personalized support
  • Self-paced learning
  • World-class EPFL quality
  • Real-world, job-ready, applicable skills

Ready to start learning?

Effective Programming in

  • 125 hours
  • 420 CHF / month
Enroll now

Become part of
our community

Get the latest news and course updates from the EPFL Extension School.