Training Compendium CE

Training goals

This training will guide programmers to a point where they can write and read Scala programs in a fairly fluent way. All core features of the language are covered, including pattern matching and how to approach problems in a functional style.

The course focuses on "Scala the language" so no more than a minimum of external frameworks are covered during this course - SBT, ScalaTest and Akka being notable mentions.

Examples and real life use-cases back each of the introduced features and principles. Participants will be asked to write automatic tests at the end of each section to get hands-on expirience on the given topic.

Conspect Show list

Day 1

  1. Introduction
    • Course schedule
  2. A gentle introduction to the Scala language
    • What is Scala?
    • What are it's sources of inspiration?
    • Why is Scala worth learning?
  3. "Hello World"
    • "Java in Scala"
    • The Scala way to "Hello World"
  4. Types
    • Basic types
    • Primitives?
  5. Classes
    • Primary constructor
    • Secondary constructors
    • Inheritance
    • Type Linearization
  6. Methods
    • How to think of Method and Functions in Scala?
    • Why mostly everything is a method
    • Definitions, Values, Lazy Values and Variables...
    • How to act like a field?
    • Variables
    • @tailrec and why it matters
    • Using Java annotations
    • Scala's override strictness
  7. Objects
    • When to use object instead of class?
    • How to use objects and still be able to have testable code?
    • The apply() method
    • The unapply() method
  8. Case Classes
    • What is a case class?
    • Pattern matching with "match"
    • The @switch annotation
    • Limits of case classes, and how to fallback to normal classes
  9. Traits
    • What is a Trait?
    • When to use Traits?
    • When NOT to use Traits?
    • Self-Type annotations - a way for Dependency Injection?
    • Traits calling other Traits in the same object instance
    • Interoperating with Java interfaces
  10. Type Parameters
    • What are they?
    • Type Parameters vs. the "type" keyword
  11. Implicits
    • What does "implicit" mean?
    • How to define implicit values?
    • How are implicits scoped?
    • Implicit conversions
  12. Parameter lists
    • Why can Scala have more than one parameter list?
    • Implicit parameters
    • Practical use case

Day 2

  1. Collections
    • Types of collections
    • How to stick to the immutable nature of Scala with collections?
    • Use parallel collections for quick wins
    • What is CanBuildFrom[_,_,_]?
  2. Functional programming in Scala
    • "The M word" - Monads
    • Monad examples - ()you've seen them already!)
    • Avoiding nulls with Option[_]
  3. "The Frameworks"
    • Best known and recommended libraries
    • What kinds of libraries to avoid?
    • ScalaTest and Specs2
  4. Akka 2.0
    • What inspired Akka?
    • Why and when to use Akka? What other options are there?
    • Example of an Actor driven application
  5. SBT - Simple Build Tool
    • What is SBT?
    • Tips on sbt versioning and maven inter-op
    • Example of a multi-module project
  6. Tips for your day-to-day Scala programming
    • When should you just "let it go" and use a hack?
    • Tips for Java inter-op, when Traits don't cut it
    • How not get "too smart code"
    • When to avoid implicits and other "magic"?
  7. Scala 2.10 - a brief overview
    • What is a "SIP"?
    • Overview of key features and SIPs with examples for each feature given
    • Tips for handling multiple scala versions with sbt
  8. Wrap up and QA session
Download conspect training as PDF

Additional information


This course is targeted at mature Java developers, as a fair background on Java is assumed. Scala builds on top of Java, extending some of it's ideas and adding new ones from functional languages such as Haskell or Lisp - knowledge of those may be useful, but is not required.

Difficulty level
Duration 2 days

The participants will obtain certificates signed by Compendium Education Center.


Compendium's trainer.

Training thematically related


Web Design and Programming

Contact form

Please fill form below to obtain more info about this training.

* Fields marked with (*) are required !!!

Information on data processing by Compendium - Centrum Edukacyjne Spółka z o.o.

500 EUR


Discount codes

Discount code may refer to (training, producer, deadline). If you have a discount code, enter it in the appropriate field.
(green means entering the correct code | red means the code is incorrect)



Traditional training

Sessions organised at Compendium CE are usually held in our locations in Kraków and Warsaw, but also in venues designated by the client. The group participating in training meets at a specific place and specific time with a coach and actively participates in laboratory sessions.



Paper materials

Traditional Materials: The price includes standard materials issued in the form of paper books, printed or other, depending on the arrangements with the manufacturer.

Electronic materials

Electronic Materials: These are electronic training materials that are available to you based on your specific application: Skillpipe, eVantage, etc., or as PDF documents.

Ctab materials

Ctab materials: the price includes ctab tablet and electronic training materials or traditional training materials and supplies provided electronically according to manufacturer's specifications (in PDF or EPUB form). The materials provided are adapted for display on ctab tablets. For more information, check out the ctab website.



No deadlines for this training.

Suggest your own appointment

Upcoming Compendium CE training

Training schedule
Compendium CE