Scala Training Course (2 days Beginner, 4 days comprehensive


Note: this outline is our proposal, but the training can be tailored to your specific requirements upon prior request ahead of the proposed course date.

Why Learn Scala

Scala Language was created to address problems with programming in Java. It's a general-purpose programming language that runs on Java Virtual Machine (JVM) and can accommodate libraries in either language. The Scala community is robust, and the language itself is just as flexible as more dynamic languages such as Python.


Java programmers often learn Scala programming because it's on the newest project or their companies have adopted it. Scala code does solve quite a few Java issues including supporting multiparadigm programming (object-oriented and functional programming) Even though Java 8 has attempted to address this, it's still a few steps behind.

It's interoperable with Java code. It offers closures like more dynamic languages (Ruby or Python for example). It's highly expressive, much more so than Java, allowing developers to build beautiful and elegant solutions. Current versions of Scala also offer case classes, and Scala documentation is getting better as more developers jump on it.


  • Knowledge of functional programming and basic knowledge of Java and the JVM would be an advantage to start learning Scala.

Course details

In the first part, you will learn the foundations of the language for developers and data scientists interested in using Scala for data analysis.

  • Tackle data analysis problems involving Big Data, Scala and Spark.

  • Get a solid understanding of the fundamentals of the language, the tooling, and the development process.

  • Develop a good appreciation of more advanced features.


The agenda can also cover advanced topics, see Part 2.

The final training outline will be designed depending on your particular requirements.

The practical exercises constitute a big part of the course time, besides demonstrations and theoretical presentations. Discussions and questions can be asked throughout the course.


Course Outline

Part 1:


  • What is Scala

  • The paradigms of object-oriented programming

  • Functional programming paradigms

  • Scala and Java

  • Language runtime environments


Basics of Scala

  • data Types

  • Operators

  • The control instructions and loops


Object-Oriented Programming

  • Classes

  • Fields

  • Methods

  • Objects and instances

  • Inheritance, abstraction, encapsulation, polymorphism

  • Features


Functional Programming

  • A function declaration

  • function Arguments

  • closures

  • anonymous functions

  • recursion

  • delayed initialization



  • Packages Scala language

  • Importing packages

  • Create your own packages


Other aspects of the Scala language

  • general types

  • exceptional service

  • case of the class.

  • collections, data structures

  • parameters alleged

  • metaprogramming

  • concurrent programming

Part 2: 


  • Who uses Scala?

  • Developing large-scale, purely-functional programs


Overview of Functional Programming in Scala

  • Higher-Order Functions

  • Combinators

  • Polymorphic Functions


Mastering Scala Types

  • Product types & Sum types

  • Supertypes & Subtypes

  • Universals & Existentials

  • Higher-Kinded Types

  • Type Lambdas


Mastering Scala Type Classes

  • Classes & Instances

  • Tricks with Implicits

  • Polymorphic Constraints


Case Study: Highly-stateful programs with complex external systems

Coding Exercise

Working with Data

  • Immutable Data & Recursion

  • Catamorphisms & Church Encoding

  • Fixed-Point Data

  • Recursion Schemes


Advanced Pattern Matching in Scala

  • Deep matching

  • Using extractors


Case Study: Scala and Big Data

Coding Exercise

Using Functional Patterns

  • Options, Eithers & Validations

  • Semigroups & Monoids

  • Functors

  • Applicatives

  • Monads

  • Foldables & Traversables

  • Lenses


Working with Effects

  • IO

  • State

  • Reader

  • Combining Effects


Case Study

  • TBD


Coding Exercise

Functional Architecture

  • Modern Architecture for FP

  • Reified Computation & Deferred Evaluation

  • Compositional Evaluators

  • Optimization Techniques

  • Purely Functional Mocking


Libraries and DSLs

  • Custom control structures with by-name parameters

  • Building well-designed libraries and internal DSLs


Functional Exception Handling

  • Traditional exception handling

  • Functional exception handling

  • Using Try with For comprehensions


Final Coding Exercise and Evaluation

Closing Remarks