Effective Programming in Scala

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.
man with headphones at computer

Along the journey of learning, you will discover 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.

Two female professionals
Who is the target audience?

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.

laptop with data visualization
Why should you enroll?

Scala is an expressive, versatile, and safe programming language, pleasant to maintain because the language has a lean syntax, and it supports declarative programming. Scala programs allow you to implement systems in a modular way, and to write reusable pieces of code. More than 75% of companies are looking to adopt data-driven technologies in the next five years. 

  Interested in learning more about our programs? 

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.


You should have the following tools, skills and abilities prior to registering for this course:

  • English at B1 level
  • Familiarity with computer environments (what is a program, file system, file formats, terminal, programming language, library)
  • Prior experience with any high-level programming language

The monthly subscription fee is CHF 420.-

Please contact us if you would like to request a quote or to pay a flat fee for the duration of the course: [email protected]

The course is estimated at 125 hours. Your completion time will depend on how much time you can dedicate to your learning experience each day/week/month.

All of our programs consist of video trainings, written lessons and hands-on exercises. This course, like all the courses and programs at the Extension School, is based on hands-on project work. The course projects are based on the learning materials provided in the course and give you the opportunity to demonstrate that you have acquired the skills taught in the program.

Our course and programs are all self-paced; as such you can start learning immediately. Create your learner account using the link below to get the ball rolling:

Please note that we do reserve the right to limit the number of enrollments at any given time to ensure that our course instructors are in a position to provide the high-quality and personalized support that each of our learners deserve. You will be informed about the next available start date if this is the case.    

You’ll be taken to our secure enrollment site, where you will need to provide the following information:

  • Personal information including your name, current address and date of birth;
  • Valid credit card details;
  • Valid form of government-issued, photo ID that matches your registration name. In general, we accept passports and driver’s licenses.

Ready to start learning?