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