Kotlin Fundamentals

This course covers the very basic parts of the Kotlin programming language and some of its more important APIs. This course focuses on the very 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 knowledge in Java. It can be either a programming course that was taken in the past or practical experience.

This course includes 40 academic hours delivered in 8 weekly meetings of 5 academic hours each (or 5 full day 0900-1700 meetings of 8 academic hours each) 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 10% 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.

Hereto the comparison between the short course (40 academic hours) and the long one (90 academic hours):
(1)

The short course doesn’t cover the following topics:
Handling XML and JSON Files
The Interoperability Between Java and Kotlin
Coroutines in Kotlin
Networking
Reflection
Unit Testing
KDoc
Inline Functions
(2)
The short course includes less practice in class. In the 90 academic hours course we usually have 25-40 % practice. In the 40 academic hours course we usually have around 10-15 % practice and in some topics we don’t have any practice.

(3)

In addition, in some topics (the ones who don’t count to be core topics) we cover less subtopics.

1

Introduction
Basics

2

Coding Conventions
Basic Types
Control Flow
Packages
Classes (Basic OOP)

3

Classes (Basic OOP)
Classes (Inheritance)
Classes (Interfaces)
Classes (visibility)
Classes (Data Classes)
Classes (Sealed Classes)

4

Generics
Inner & Nested Classes
Enum
Objects
Functions

Generics in Java @ http://lifemichael.com/moodle/course/view.php?id=247

Enum in Java @
http://www.abelski.com/courses/j2se_intro/oop.pdf 

5

Exceptions
Extensions
Nullable
Delegation

The ‘this’ Keyword                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

6

Collections
Ranges
Annotations                            
Coding Conventions

7

Destructuring
Lambdas (till LINQ style lambda expressions)

8

Operators

Threads
Equality
Lambdas (from LINQ style lambda expressions)
Idioms

Threads in Java @
http://www.abelski.com/courses/j2se_intro/threads.pdf 

Code Sample for wait and notify in Java @
https://javabook.co.il/wordpress/?p=114