Scala Development

Contact Us for Dates
4 days practical workshop for up to 12 people.
Only £1580
Scala is an object-oriented language that runs on the Java Virtual Machine. Scala is also a functional language, and combines the features and benefits of OO and functional programming. This course provides a fast-paced introduction to the language for developers with experience in similar languages (e.g. Java, C#, or C++), and then delves deeper into idiomatic uses of Scala in practice.

Layout

This course is a mixture of lectures and hands on exercises designed to reinforce the topics learnt

Training Course Objectives

  • Writing and running Scala programs
  • Object orientation in Scala
  • Functional programming in Scala
  • Using concurrency
  • Implementing Domain-Specific Languages
  • Best practices and advanced techniques

Training Course Prerequisites

  • Experience using a contemporary object-oriented language such as Java, C#, or C++

Chapters

Chapter 1 Introduction to Scala

  • Overview of Scala
  • Installing Scala
  • Writing a simple Scala program
  • Using the Scala interpreter

Chapter 2 Core Scala Syntax

  • Types and variables
  • Literals
  • Tuples
  • Organising code
  • Importing types
  • Abstract types and parameterised types

Chapter 3 Operators and Flow Control

  • Operators and operands
  • Decision making
  • Looping
  • Pattern matching
  • Enumerations

Chapter 4 Traits

  • Overview of traits
  • Using traits as mix-ins
  • Constructing traits
  • Traits vs. classes

Chapter 5 Object-Oriented Programming in Scala

  • Classes and objects
  • Visibility
  • Overriding members of classes and traits
  • Companion objects
  • Case classes
  • Object equality

Chapter 6 The Scala Object System

  • The Predef object
  • Statics
  • Sealed class hierarchies
  • The Scala type hierarchy

Chapter 7 Functional Programming in Scala

  • Overview of functional programming
  • Recursion
  • Function literals and closures
  • Functional data structures
  • Pattern matching
  • Partial functions
  • Implicits

Chapter 8 Concurrency and Actors

  • The problems of shared, synchronized state
  • Actors
  • Sending messages to actors
  • The Mailbox
  • Threading and events

Chapter 9 Domain-Specific Languages

  • Overview of DSLs
  • Internal DSLs
  • External DSLs
  • Examples

Chapter 10 The Scala Type System

  • Reflection
  • Parameterised types
  • Variance under inheritance
  • Type bounds
  • Abstract types
  • Path-dependent types
  • Value types

Chapter 11 Application Design

  • Annotations
  • Enumerations
  • Exceptions
  • Design trait usage
  • Design patterns