Kotlin Fundamentals

This course covers the Kotlin programming language and some of its more important APIs. This course focuses on the core part of Kotlin, and 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, Basics

2

Coding Conventions, Basic Types

3

Control Flow, Packages

4

Classes

5

Inheritance

6

Interfaces

7

Visibility, Extensions, Sealed Classes, Generics

8

Nested Classes, Enum, Objects, Delegfation

9

Functions

10

Lambdas

11

Destructuring, Collections, Ranges

12

Types, The ‘this’ Keyword

                                                                                                                                                                                                                                                                                                                                                                     

13

Comparison

                                                                                                                                                                                                                                                                                           

14

Operators

15

Annotations

16

Reflection

17

Java Interop

18

Idioms