" rel="stylesheet">
Skip Main Navigation
Page Content
This event has ended

Object Oriented Meets Functional (Fast Track To Scala)


Thursday, May 19, 2011 at 9:00 AM - Friday, May 20, 2011 at 5:30 PM (CEST)

Ticket Information

Ticket Type Sales End Price Fee Quantity
Standard Ended CHF1,500.00 CHF0.00

Share Object Oriented Meets Functional (Fast Track To Scala)

Event Details

Training Course Participants And Objective

A fast track to Scala for Java developers and engineering managers.  No previous knowledge of Scala is assumed. Although intense, the course ensures you will understand the fundamentals of Scala and gain an appreciation for its more advanced features.

The course will be taught by Martin Odersky and Iulian Dragos.

If you already have Scala programming experience then this course could be a useful refresher.

The course concludes with a 2 hour, interactive “live coding session”. With guidance from the instructor you bring all the aspects of Scala together to produce a fully-functioning Swing spreadsheet application.

Advanced topics such as concurrency, Actors and common Java library use will not be covered in any detail.

After having participated in this course you should

  • be a competent user of Scala constructs in application code
  • know and be able to apply the functional programming style in Scala
  • have a basic understanding of software architecture in Scala,
  • know how to construct or extend high-level Scala libraries, frameworks and design DSLs in Scala,
  • have a good feel for what kinds of applications benefit most from using Scala
  • be confident to start using Scala in production applications

Course Description

Part 1: Overview 

A brief history programming languages, the concepts that led to Scala being developed and a summary of the use commercial companies like Twitter, LinkedIn and EDF have made of Scala.
An illustration of how Scala conciseness and expressiveness improves productivity both in code creation and maintenance.
A tour of the main features of Scala and their benefits, including

  • closures,
  • traits and pattern matching,
  • seamless interoperability with Java,
  • new modules,
  • abstraction through parameters, abstract members (both types and values), and self-types,
  • scalability,
  • extensible control structures,
  • "everything is an object", and
  • Actors for concurrency

Scala the Language

The presentation will be mixed with hands-on exercises that give you a good opportunity to try what you have learnt, and a chance to clarify your understanding. Each part of the language will be described using examples and compared to the Java equivalent program code. This enables you to understand its structure, benefits and relate it to what you know already.

For example, comparing class creation.

//Scala Class and Object
class Sample(x: Int) {
def instMeth(y:Int) = x + y

object Sample {
 def staticMeth(x: Int,y: Int) = x * y
//Java Class with static
class Sample {
  final int x;
Sample(int x) {
this.x = x
int instMeth(int y) {
return = x + y;
static int staticMeth(int x, int y) {
return x * y;

Part 2: Language Fundamentals

The fundamental language elements are explained and many short exercises allow you to verify your comprehension. Functions as objects are introduced and their use to create concise re-useable code demonstrated.

  • Variables, method definition, expressions,
  • Immutability, mutability,
  • Functions, recursion, tail-recursion,
  • Concise Scala syntax, identifiers,
  • Objects, classes, traits, fields, constructors,
  • Packages,
  • How to construct functional objects,
  • Binary operators, precedence, associativity,
  • Scala’s type hierarchy,
  • Lists, other sequences, collections,
  • Functions as objects or higher-order functions,
  • Pattern-matching,
  • For-loops and for-comprehensions, 
  • Sets and maps,
  • Partial functions, 
  • Call-by-name, currying.

Part 3: Object-Oriented

The essential object-oriented features of Scala are explained. You will learn how concisely Scala allows you to describe classes and avoid un-neccessary boilerplate. You will further explore pattern matching using case classes. The topics include

  • abstract classes
  • parameterless methods
  • extending classes, inheritance, traits
  • combinators, factories
  • case classes and pattern-matching
  • the Option Type

Part 4: An inside tour of Scala collections.

Multicore processors are on every desk now. An attractive way of exploiting their power is through a high-level collections framework. Scala 2.8 has such a framework, which extends seamlessly to parallel collections. In this part you will learn about the new features of Scala collections and learn more about design of large-scale frameworks in general.

  • A tour of the collections API
  • How to add your own collections
  • Exploiting multi-core performance with parallel collections
  • Advanced techniques for framework design
    • implicts
    • higher-kinded types
    • generic traits
    • traversers and builders

Part 5: Domain-specific Languages

DSLs have become a powerful tool to allow programmers to create a coding style that fits closely to the problem domain. EDF has used them to enable traders to describe financial products directly in the language. NASA has used them to allow launch engineers to directly encode shuttle launch control procedures. The power of parallel processing will depend on DSLs to capture inherent parallelism in problem domains. In this part the more common design methods of DSLs are explored together with the supporting Scala language features.

  • Binary and postfix operator syntax for method calls
  • Curried functions
  • By-name parameters
  • {...} blocks as parameters
  • Implicits
  • Functions as objects
  • Sophisticated types

Part 6: Live-coding a Spreadsheet

The course concludes with a 2 hour, interactive “live-coding session”. With guidance from the instructor, you bring all the aspects of Scala together to produce a fully-functioning Swing spreadsheet application.


Note Typesafe's training cancellation policy is:

* Full refund with 10 working days notice by email to info@typesafe.com.

* 80% refund with 5 days notice.

* 25% refund with less than 5 days notice.


Have questions about Object Oriented Meets Functional (Fast Track To Scala)? Contact Typesafe

When & Where

EPFL Science Park (PSED)
1015 Lausanne

Thursday, May 19, 2011 at 9:00 AM - Friday, May 20, 2011 at 5:30 PM (CEST)

  Add to my calendar
Object Oriented Meets Functional (Fast Track To Scala)
Lausanne, Switzerland Events Class

Please log in or sign up

In order to purchase these tickets in installments, you'll need an Eventbrite account. Log in or sign up for a free account to continue.