Course 473:
Scala Programming Foundations

(3 days)

 

Course Description

Throughout the life of the Web, the need to deal with large volumes of traffic (Big Traffic) and large data sets (Big Data) has been the immediate concern of a relatively small number of websites. The situation has changed in recent years as more organizations see both Big Traffic and Big Data as key to their growth and market position.

The question naturally arises, then, as to how to best engineer websites that support this direction. Big Traffic and Big Data naturally lead to an increased reliance on distributed computing, concurrent processing, fault tolerance, and correctness among other things. Cloud computing can provide the infrastructure for handling Big Traffic and Big Data, but the question still remains as to the best way to express the business logic.

Are the object-oriented programming (OOP) languages (e.g., Java) the best choice? Experience suggests that the functional programming (FP) languages are a better fit for creating robust, scalable systems.

The Scala programming language supports both OOP and FP styles of development. Scala runs on the Java Virtual Machine (JVM) and integrates well with Java libraries. Scala allows organizations currently using Java to leverage their existing expertise, infrastructure and processes while supporting a selective adoption of the FP style. Scala provides a path to FP that minimizes risk of adoption.

This course provides a hands-on introduction to the Scala programming language. It shows how Scala can be used for both OOP and FP. Although the Scala interpreter (REPL) is used to demonstrate various concepts, the course emphasizes Scala development using tools that would be typically used in a production Java environment. This includes build tools such as SBT, Maven, and Gradle as well as development environments such as Eclipse and IntelliJ. In addition, a test-driven development (TDD) approach to unit testing Scala code is also used.

Learning Objectives

  • Implement object-oriented programs with Scala
  • Invoke Java from Scala
  • Test Scala with unit tests
  • Understand the core concepts and terminology of functional programming
  • Develop functional programs using Scala
  • Utilize the Scala standard library and documentation

Who Should Attend

Architects, designers, and programmers involved in projects considering functional programing as part of their project technology stack.

Prerequisites

Previous programming experience with an object-oriented language is required.


Course Outline

Unit 1: Hello World with Scala?

  • Scala Features
    • Scala Language Specification
    • Scaladoc
  • The Scala Community
    • Web Resources
    • Key Frameworks
  • Tools for Developing Scala
    • The Scala Interpreter: REPL
    • The Scalac Compiler
    • SBT
    • Maven
    • Gradle
    • Eclipse
    • IntelliJ
  • Unit Testing Scala Code
    • JUnit
    • TestNG
    • Scala Test
    • Specs2

Unit 2: Scala as an OO Language

  • Language Goals and Choices
    • OOP Meets FP
    • Readability
  • Essential Syntax
    • Identifiers and Naming
    • Types and Objects
    • Type Inference
    • Keywords
    • Literals
    • Data Types
    • Variables and Values
  • Classes and Objects
    • Constructors
    • Methods
    • Members
    • Abstract Classes
    • Case Classes
    • Sealed Classes
  • Enumerations
  • Packages
    • Declaring Packages
    • Importing Packages
  • Inheritance
    • Overloading
    • Overriding
    • Polymorphism
  • Traits
  • Scope and Access Modifiers
  • Generics
  • Pattern Matching

Unit 3: Functional Programming

  • Pure Functions
  • First Class Functions
  • Anonymous Functions
  • Higher Order Functions
  • Currying
  • Closures

Unit 4: Standard Library

  • Collections
    • Tuples
    • Lists
    • Sets
    • Maps
    • Options
  • Math
  • I/O

Unit 5: Course Summary

  • Review of the Main Features of Scala
  • Review of Functional Programming Terminology
  • The Scala Development Ecosystem
  • Where to Go for More Information

Please Contact Your ROI Representative to Discuss Course Tailoring!