Course intended for:

Java programmers, who would like to enhance their effectiveness and develop a better code in the new object-functional programming language on the Java platform.

Course objective:

The participants will learn how to use Scala language for very fast development of high quality applications operating on the Java platform.

In particular, the participants are to:

  • Get familiar with the Scala language syntax shown against the background of known structures from Java language,

  • Get familiar with new language components, not present in Java, including: higher order functions, adjustment of patterns, implicit arguments and conversions, structural types,. Continuations, abstract types, operator overloading.

  • During practical exercises, they will learn to use the compiler and IDE to build their first software using the standard Scala libraries, as well as Java libraries

  • They will also get familiar with integration of modules written in Java with those developed in Scala.

The following will also be discussed:

  1. Control instructions, constant and variable, the system of types, the object model, the error management mechanism, the code decomposition methods

  2. The best practices of code design and ways of developing codes in accordance with the functional programming paradigm

Course strengths:

After the training, the participants will be ready to write complex applications in the Scala language and develop the existing Java language applications by components developed in Scala language. Particular emphasis will be placed on learning the best practices of development of high quality codes – coherent, easy to read and maintain.


Java programming skills are required (to be learned at the course J/JP).

Course parameters:

3*8 hours (3*7 net hours) of lectures and workshops (with a visible emphasis on workshops). During the workshops, apart from simple exercises, a simple complex application is designed and implemented.

Group size: no more than 8-10 participants.

Course curriculum

  1. Introduction

  2. First steps with Scala language

    1. The first program

    2. Interpreter (REPL)

    3. Compiler

    4. IDE

    5. Source code organization

    6. Application building (SBT)

    7. Documentation

  3. Classes and objects

    1. Basic types of objects and operations

    2. Constants, variables, methods

    3. Operator overloading

    4. In-built control instructions

    5. Constructors

    6. Equivalence of objects

    7. Concrete classes

    8. Inheritance and multi inheritance

    9. Abstract properties

    10. Interfaces

    11. Singleton objects

    12. Class importing

    13. Visibility range control

    14. Embedded classes

    15. Sealed class hierarchies

  4. Functions

    1. Functional objects

    2. Lambda expressions

    3. Currying and partial function application

    4. Function composition

    5. Partial functions

    6. Typical applications of lambda expressions in collections

  5. Programming without nulls: Option, Some and None

  6. Returning of many objects from function simultaneously: short

  7. Pattern matching or what the Java switch cannot do

    1. Simple applications

    2. Adjustment with embedding

    3. Defining of own extractors

    4. Defining of a partial function on the basis of cases

    5. Management of exceptions

  8. Standard collections

    1. Mutability versus persistence

    2. Write lines

    3. Tables, lists, sets and dictionaries

    4. Iterators

    5. Streams

    6. Collection generation

      1. Iterative: a better for loop

      2. Recurrent: with use of streams

  9. Generic types

    1. Generic methods

    2. Generic classes

    3. Specification of type limitations

    4. Variance control

    5. specialization

  10. implicit conversions

  11. implicit parameters

  12. regular expressions

  13. working with XML

  14. annotations

  15. assertions

  16. concurrence

    1. threads

    2. asynchronous exchange of messages

  17. Cooperation with Java code

Any questions?

* Required.

Phone +48 22 2035600
Fax +48 22 2035601