Scala - Scala 2 - Foundation

Course Abstract
This is an introductory course to the Scala programming language and functional design patterns. The course will go through key aspects of Scala; the standard Scala libraries; and how to integrate Scala with the JVM eco system. The participants will learn how to use the Scala language, and how to best benefit from the functional programming style.
The course is taught workshop style, where theory and slides are mixed with lots of practical hands-on exercises. Emphasis is put on design thinking and group exercises. We challenge the students with games and role playing exercises to reinforce key concepts.
Topics Covered
Scala language basics - control structures, classes and objects, basic types
- Using the REPL
Functional objects, Functions and Closures
Composition and Inheritance, Traits
Pattern matching, case classes
Type inference, conversions
Higher order functions
- Collection API
OO meets functional programming - patterns and best practices
Mutable vs immutable
Pure vs Side Effects
- Unit testing
Building (sbt and gradle)
Interoperability with Java
Prerequisites
The participants are proficient in Java or C#, and have a basic knowledge of object oriented programming and object oriented design patterns.
Every participant has a computer with internet access and the following already installed:
- JDK 8
- Scala 2.12
Eclipse with the Scala plugin
- Gradle
- Git client
Target Audience
Anyone wishing to start using Scala and functional style programming in their JVM eco system.
Learning Objectives
The participants can understand Scala code
The partiipants can identify and apply basic functional patterns
The participants can write, build, test and execute programs written in Scala
The participants can process data by using the Scala Collection API
The participants can extend existing class hierarchies by the use of Traits
The participants can compose programs using higher order functions, recursion and pattern matching
The participants can use Scala and Java in a hybrid environment
