Programming with Scala

The course covers all the content that is necessary to effectively use Scala: operators and data types, using basic data structures such as arrays, map, tuples, the use of object-oriented and functional approach.
Code: JVA-031
Duration: 30 hours

Description

In this course, participants will learn the specifics and features of the Scala language, its advantages and challenges.

The Scala programming language has been gaining popularity in recent years not only in the software development community, but also in enterprise development as well. Its benefits include the use of the most advanced features of contemporary programming languages and extensive support of functional programming.

Scala offers programmers an opportunity to improve development efficiency and create a very expressive and efficient code. Scala code is compiled to Java byte code and runs inside the JVM, which provides excellent compatibility with existing Java libraries and tools.

The course covers all the content that is necessary to effectively use Scala: operators and data types, using basic data structures such as arrays, map, tuples, the use of object-oriented and functional approach, working with collections, pattern matching, case-classes, generics and implicit conversions. It also include a large number of practical exercises.

Roadmap

Scala introduction
Scala instructions, operators and types
  • Conditional statements
  • Loops
  • Functions
  • Variables
  • Operators
  • Unit type
  • Function type
  • Null, Nothing, Any, AnyRef and AnyVal types
  • Packages and imports
  • Implicit imports
  • Exceptions

Arrays, maps, tuples
  • Creation, adding and removing array elements
  • Access to Array Elements
  • Arrays of fixed and variable length
  • Multidimensional Arrays
  • Operations with arrays
  • Sorting an array
  • Creating and accessing the associative tables
  • Iteration, changing and sorting of associative tables
  • Tuples
  • Zipping

Classes and Inheritance
  • Classes
  • Properties with getters and setters
  • Use parentheses method calls
  • Properties with only getters
  • Auxiliary constructors
  • The primary constructor
  • Nested classes
  • Extending the class
  • Overriding methods
  • Type check and cast
  • Call the superclass constructor
  • Overriding fields
  • Anonymous subclasses
  • Abstract fields
  • Constructor order and early definitions
  • Scala Inheritance Hierarchy
  • Objects equality

Objects
  • Singletons
  • Companion Objects
  • Objects extending a class or trait
  • Enumerations
  • Packages objects
  • Apply and unapply methods
  • Lazy objects

Traits
  • Traits as interfaces
  • Traits with a specific implementation
  • Redefine the abstract methods in the Traits
  • Concrete and abstract fields in Traits
  • Objects that use multiple Traits
  • Trait construction order
  • Initializing Trait fields
  • Traits extending classes
  • Self-types

Functions
  • Functions as values
  • Default arguments and named arguments
  • Functions without a return value
  • Anonymous functions
  • Functions with Function as parameter
  • Closures
  • Functional Interfaces
  • Currying
  • Passing function as a parameter in the block of code
  • Using return

Collections
  • Traits collections in Scala: Map, Set and Seq
  • Mutable and immutable collections
  • Sequences
  • Lists
  • Mutable lists
  • Sets
  • Operators for working with collections
  • Standard methods for working with collections
  • Use map, reduce, fold and scan functions
  • Zipping
  • Iterators
  • Data Streams
  • Threadsafe Collections
  • Parallel collections
  • Interaction with Java collections

Pattern matching
  • Pattern matching as a better switch
  • Guards
  • The variables in patterns
  • Type patterns
  • Matching arrays, lists and tuples
  • Regular expressions
  • Extractors
  • Patterns in variable declarations
  • Patterns in for expressions

Case classes, Option type and partial functions
  • Сase classes
  • Copy method and named parameters
  • Sealed classes
  • Option type
  • Partial functions

Generics
  • Generic сlasses
  • Generic functions
  • Type variance
  • Upper and lower type bounds
  • Use _ for type

Implicit conversions
  • Using implicit keyword to define implicit type
  • Import and use of implicit conversions
  • Implicit parameters

Objectives

Introduce developers to the Scala programming language.

Target Audience

The course is designed for Java developers but other full-featured language developers (such as C++, C#, etc.) are also eligible.

Prerequisites

Knowledge of the contemporary OOP programming language is required. Java knowledge is desirable.


Trainer in Wroclaw
Vladimir Sonkin Java and Web Technologies Expert
Vladimir has more than 12 years of experience in Java Enterprise development and has been working for Luxoft since 2006, where he is now a Senior Developer involved in one of our most important banking projects.

During this period he has been involved in several large scale software development projects for a wide array of industries such as banking, agriculture and e-commerce. As a result he has been able to work with a variety of technologies such as Java or JavaScript, used in developing complex Web applications and Web interfaces with low response time.

His main interest is in developing scalable and ergonomic Web interfaces and technologies aimed at increasing the productivity level of software developers. Since 2004, Vladimir has developed and conducted trainings on Java, Java Enterprise, SQL Server DBMS and AngularJS.
Course is scheduled in: Wroclaw
22.01.2019 - 25.01.2019
Time: 09:00-16:30
City: Wroclaw
Duration: 30 hours
Language: English
Trainer
Vladimir Sonkin
Java and Web Technologies Expert
€450
Register for the next course
+
Registering in advance ensures you have priority. We’ll notify you when we schedule the next course on this topic
Register for the next course
+
Registering in advance ensures you have priority. We’ll notify you when we schedule the next course on this topic
Bucharest €450
Krakow €450
Wroclaw €450

Invoices for the course will be issued in local currency. All fees above can change according to training location and delivery mode and are subject to change while scheduling. For individual participants the price is as displayed. For legal entities VAT is added to the displayed price.

Courses you may be interested in:

Sign up

Choose dates
First Name*
Last Name*
Company
Email*
Phone
Your Comment
loading map...
Luxoft Warsaw - Warsaw Spire, plac Europejski 1, 00-844 Warszawa
loading map...
Dimitrie Pompeiu nr 5-7 , building C, Et. 5, sect 2, Bucharest, 014459

Contact phone:

021 371 4858
loading map...
Luxoft Poland Wrocław - Silver Tower pl. Konstytucji 3-go Maja 3 50-048 Wrocław
loading map...
Aleja Generała Tadeusza Bora-Komorowskiego 25, Quattro Business Park Five, 31-476 Kraków, Poland

Contact phone:

+48 122110650
Success
Thank you.
Your request has been received.