Scala Fundamentals

This course covers the Scala programming language and some of its more important APIs. This course focuses on the core part of Scala, and especially on its functional programming on the one hand, and on its oop capabilities on the other. The course provides its participants with the required knowledge and practical experience required for using this relatively new programming language in a practical way.

This course was developed for people with basic knowledge in software development. It can be either a programming course that was taken in the past or practical experience.

This course includes 90 academic hours delivered in 18 weekly meetings, and 180 academic hours (and beyond) that take place at home. The training material (slides, video clips, assignments, solutions and code samples) for the entire course is organized on the e-learning platform we use during the course. Each meeting includes a theoretical lecture together with practical practice (at least 25% of each meeting). The practical practice includes coding by the instructor followed by the students and coding by the students with the assistance of the instructor. Each meeting is captured on video in order to allow the students effective learning process at home. Each meeting is broadcasted online in order to allow remote participation.

The course includes lots of relatively small assignments and a final project the students will develop as an open source project and place it on GitHub in order to allow other Kotlin developers to use it.

Meeting

Date

Topic

Sub Topics

1

Introduction, Scala Basics

2

Classes

3

Objects

4

Operators

5

Control Statements

6

Functions, Closures, Unit Testing

7

Inheritance

8

Traits

9

Packages

10

Assertions

11

Exceptions

12

Patterns Matching

                                                                                                                                                                                                                                                                                                                                                                     

13

Scala Hierarchy

                                                                                                                                                                                                                                                                                           

14

Collections, Lists, Sets, Tuples, Maps, Ranges, Options

15

Types Parameterization, Abstract Members, Properties

16

Types Conversions, Annotations, Scala & XML

17

Objects Comparisons, Java Integration

18

Concurrency