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.

Requirements

  • 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:

Introduction

  • 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

  • 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: 

Introduction

  • 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

 europe@training-united.com

 +49 30 2218 0753

©TRAINING UNITED