JetBrains Kotlin Workshop Material
[![official project](http://jb.gg/badges/official-plastic.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)

## Kotlin Workshop

![Kotlin Logo](kotlinlogo.png)

A Kotlin workshop intended to be taught in two days. 

### Structure

This workshop is divided into two parts

* Introduction to Kotlin
* Advanced Kotlin

It consists of 

* **Instructor Project**: Used to explain concepts, with existing code samples
* **Student Project**: For students to complete
* **Presentations**: For the instructor to use 
* **Questions**: For students to complete

Both the Instructor Project and the slides have Introduction and Advanced modules included. While the Introduction 
has a lot of pre-built examples, it also serves as a canvas to show more code while teaching. However, please make sure that if you're 
a contributing author to this project, that you *do not* check-in any ad-hoc code. It's also recommended to use Scratch files in IntelliJ IDEA
for this purpose.

#### Presentations

Slides for the workshop lead by Hadi Hariri can be found [here](https://docs.google.com/presentation/d/1zYWyDedyf0YhnLFF3TVpUqU3C8PKTuvR5P06L99MRn8/edit?usp=sharing).

Presentations used for the workshop at KotlinConf:
1. [Intro](https://speakerdeck.com/svtk/1-intro-kotlin-workshop)
2. [Nullable Types](https://speakerdeck.com/svtk/2-nullable-types-in-kotlin-kotlin-workshop)
3. [Object-Oriented Programming in Kotlin](https://speakerdeck.com/svtk/3-object-oriented-programming-in-kotlin-kotlin-workshop)
4. [Kotlin Types](https://speakerdeck.com/svtk/4-kotlin-types-kotlin-workshop)
5. [Functional Programming in Kotlin](https://speakerdeck.com/svtk/5-functional-programming-kotlin-workshop)
6. [The Power of inline](https://speakerdeck.com/svtk/6-the-power-of-inline-kotlin-workshop)
7. [Lambda With Receiver](https://speakerdeck.com/svtk/7-lambda-with-receiver-kotlin-workshop)
8. [Conventions](https://speakerdeck.com/svtk/8-conventions-kotlin-workshop)
9. [Intro to Coroutines](https://speakerdeck.com/svtk/9-introduction-to-coroutines-kotlin-workshop)

#### Questions

Questions can be found [here](https://drive.google.com/file/d/18AiXqEzdJmNonc6Lo6eumeFmcVvC_9vk/view?usp=sharing). The keys to the questions are in the module `instructor/quizzes`.

Note that the similar material can be found explained in detail in the following [Coursera course](https://www.coursera.org/learn/kotlin-for-java-developers).

### Authors

This workshop includes material from the following authors:

* [Hadi Hariri](https://github.com/hhariri)
* [Svetlana Isakova](https://github.com/svtk)
* [Dmitry Jemerov](https://github.com/yole)
* [Roman Elizarov](https://github.com/elizarov)

### License and Usage

The material provided in this repository, including but not limited to source code, presentations, notes and exercises is Copyright (c) 2017 JetBrains, and is provided as-is. 

![JetBrains Logo](jetbrainslogo.png)

<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.


JetBrains and Kotlin are Registered Trademarks of their respective trademark holders. 

#### Contributions

We welcome all contributions to this workshop. If you feel you'd like to contribute something, create a fork and make a pull request. Bug fixes, comments, suggestions, all welcome. 

If you're contributing code or samples, please send a pull request. If you'd like to update the slides or questions, please contact [Hadi Hariri](https://github.com/hhariri).  

#### Usage and endorsements 
 
You are welcome to use the material in this workshop provided you abide by the corresponding license agreement. Additionally 

* By using this material, with or without any modification, JetBrains does not endorse any workshop or training that you may offer.
* By using this material, with or without any modification, you may not use JetBrain's name to promote your workshop or training without prior written consent. 
* By using this material, provided there are no modifications, you may indicate that you are using JetBrains Kotlin Workshop Material.

If you're interested in becoming an official JetBrains Training Partner, please [contact us](https://www.jetbrains.com/company/partners/become_a_partner.html) 
