Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Creating a Kotlin Course from Scratch (JetBrains Kotlin webinar)

Creating a Kotlin Course from Scratch (JetBrains Kotlin webinar)

This talk tells the story of mobile development at BME-VIK-AUT, how I joined that story, and how we introduced Kotlin to the university curriculum. First as part of the Android software development course, then eventually creating a standalone course to teach it in depth.

It covers the all-live-demo approach used for lectures, the choices made to make the course fun to complete, the wonders that remote teaching introduced, and how the students have received the course.

More about the talk:
https://zsmb.co/appearances/kotlin-for-education-webinar-july-2021/

Marton Braun

July 29, 2021
Tweet

More Decks by Marton Braun

Other Decks in Programming

Transcript

  1. zsmb.co
    zsmb13
    Creating a Kotlin
    Course from Scratch
    Márton Braun

    View full-size slide

  2. › Budapest, Hungary

    View full-size slide

  3. › Budapest, Hungary
    › BME (Budapest University of Technology and Economics)

    View full-size slide

  4. › Budapest, Hungary
    › BME (Budapest University of Technology and Economics)
    › VIK (Faculty of Electrical Engineering and Informatics)

    View full-size slide

  5. › Budapest, Hungary
    › BME (Budapest University of Technology and Economics)
    › VIK (Faculty of Electrical Engineering and Informatics)
    › AUT (Department of Automation and Applied Informatics)

    View full-size slide

  6. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011

    View full-size slide

  7. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011

    View full-size slide

  8. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)

    View full-size slide

  9. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book

    View full-size slide

  10. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)

    View full-size slide

  11. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)

    View full-size slide

  12. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)

    View full-size slide

  13. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)

    View full-size slide

  14. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin

    View full-size slide

  15. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin

    View full-size slide

  16. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin

    View full-size slide

  17. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin
    Converting the Android course to Kotlin

    View full-size slide

  18. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin
    Converting the Android course to Kotlin
    Creating a Kotlin Course from Scratch

    View full-size slide

  19. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin
    Converting the Android course to Kotlin
    Creating a Kotlin Course from Scratch Kotlin course (elective)

    View full-size slide

  20. 2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2012
    2022
    2010
    2011
    Android & iOS courses (elective)
    Android development book
    Mobile Software Development minor (MSc)
    Flutter course (elective)
    Mobile and Web Development course (BSc)
    Android course (as a student)
    Learning Kotlin
    Converting the Android course to Kotlin
    Creating a Kotlin Course from Scratch Kotlin course (elective)

    View full-size slide

  21. Acknowledgements
    Bertalan
    Forstner
    Péter
    Ekler
    Hassan
    Charaf
    Imre
    Kelényi
    Gergely
    Csúcs

    View full-size slide

  22. Goals
    › Teach independently of Android

    View full-size slide

  23. Goals
    › Teach independently of Android
    › Build an interest in Kotlin

    View full-size slide

  24. Goals
    › Teach independently of Android
    › Build an interest in Kotlin
    › Deep understanding of language basics

    View full-size slide

  25. Goals
    › Teach independently of Android
    › Build an interest in Kotlin
    › Deep understanding of language basics
    › Building on Java and OO knowledge

    View full-size slide

  26. Student language stats
    3%
    4%
    4%
    10%
    11%
    25%
    32%
    37%
    61%
    72%
    77%
    87%
    0% 20% 40% 60% 80% 100%
    Dart
    pascal
    Swift
    PHP
    TypeScript
    Kotlin
    JavaScript
    Python
    C#
    C
    C++
    Java

    View full-size slide

  27. Materials
    › Full written material in English

    View full-size slide

  28. Materials
    › Full written material in English

    View full-size slide

  29. Materials
    › Full written material in English

    View full-size slide

  30. Materials
    › Full written material in English
    › Many links, lots of code

    View full-size slide

  31. Materials
    › Full written material in English
    › Many links, lots of code
    › Some original illustrations

    View full-size slide

  32. All on GitHub

    View full-size slide

  33. All on GitHub
    István
    Juhos
    stewemetal

    View full-size slide

  34. Lectures
    › 0 slides

    View full-size slide

  35. Lectures
    › 0 slides
    › All live coding

    View full-size slide

  36. Lectures
    › 0 slides
    › All live coding

    View full-size slide

  37. Live coding
    › The IDE is a core part of the Kotlin experience

    View full-size slide

  38. Live coding
    › The IDE is a core part of the Kotlin experience

    View full-size slide

  39. Live coding
    › The IDE is a core part of the Kotlin experience

    View full-size slide

  40. Live coding
    › The IDE is a core part of the Kotlin experience – and it’s free!

    View full-size slide

  41. Live coding
    › The IDE is a core part of
    the Kotlin experience

    View full-size slide

  42. Live coding
    › The IDE is a core part of
    the Kotlin experience
    › Great for encouraging
    questions

    View full-size slide

  43. Useful IDE functionality

    View full-size slide

  44. Useful IDE functionality

    View full-size slide

  45. Useful IDE functionality

    View full-size slide

  46. Useful IDE functionality

    View full-size slide

  47. Useful IDE functionality

    View full-size slide

  48. Useful IDE functionality

    View full-size slide

  49. Useful IDE functionality

    View full-size slide

  50. Useful IDE functionality
    › Java to Kotlin converter
    › Kotlin scripts
    › Scratch files
    › REPL

    View full-size slide

  51. Lectures
    › Usual setup
    › In-person lectures

    View full-size slide

  52. Lectures
    › Usual setup
    › In-person lectures
    › Extras outside of the core
    material
    › Events
    › Language news

    View full-size slide

  53. Lectures
    › Usual setup
    › In-person lectures
    › Extras outside of the core
    material
    › Events
    › Language news
    › Easy interaction

    View full-size slide

  54. Remote
    › Recordings are essential

    View full-size slide

  55. Remote
    › Recordings are essential
    › Started these in person already

    View full-size slide

  56. Remote
    › Recordings are essential
    › Started these in person already
    › Making them available very quickly

    View full-size slide

  57. Remote
    › Recordings are essential
    › Started these in person already
    › Making them available very quickly
    › Available in multiple forms

    View full-size slide

  58. Remote
    › Recordings are essential
    › Started these in person already
    › Making them available very quickly
    › Available in multiple forms

    View full-size slide

  59. Remote
    › Recordings are essential
    › Started these in person already
    › Making them available very quickly
    › Available in multiple forms
    › Zoom classes
    › Harder to get interaction

    View full-size slide

  60. Remote
    › Recordings are essential
    › Started these in person already
    › Making them available very quickly
    › Available in multiple forms
    › Zoom classes
    › Harder to get interaction
    › Clear communication of important info

    View full-size slide

  61. Remote
    › Recordings are essential
    › Started these in person already
    › Making them available very quickly
    › Available in multiple forms
    › Zoom classes
    › Harder to get interaction
    › Clear communication of important info

    View full-size slide

  62. Requirements
    Homework Test

    View full-size slide

  63. Homework
    › Free choice of project

    View full-size slide

  64. Homework
    › Free choice of project
    › … as long as it’s not Android

    View full-size slide

  65. Homework
    › Free choice of project
    › … as long as it’s not Android
    › Varying difficulty
    › Create something meaningful
    › Write neat Kotlin code

    View full-size slide

  66. Homework
    › Starter projects
    › Command line, JDK8
    › JavaFX JDK8
    › TornadoFX
    › JavaFX JDK11

    View full-size slide

  67. Homework
    › Starter projects
    › Command line, JDK8
    › JavaFX JDK8
    › TornadoFX
    › JavaFX JDK11
    › Largest setup problems
    › JDK versions
    › Missing JavaFX support

    View full-size slide

  68. Homework
    › Starter projects
    › Command line, JDK8
    › JavaFX JDK8
    › TornadoFX
    › JavaFX JDK11
    › Largest setup problems
    › JDK versions
    › Missing JavaFX support
    › No problems installing IntelliJ IDEA

    View full-size slide

  69. Homework examples

    View full-size slide

  70. Homework examples
    › Basic Kotlin classes with operators, unit tests, conventions

    View full-size slide

  71. Homework examples
    › Basic Kotlin classes with operators, unit tests, conventions
    › REST services
    › Ktor/Exposed stack
    › Spring Boot apps

    View full-size slide

  72. Homework examples
    › Basic Kotlin classes with operators, unit tests, conventions
    › REST services
    › Ktor/Exposed stack
    › Spring Boot apps
    › JavaFX / TornadoFX games
    › Minesweeper, Tetris, Game of Life

    View full-size slide

  73. Homework examples
    › Basic Kotlin classes with operators, unit tests, conventions
    › REST services
    › Ktor/Exposed stack
    › Spring Boot apps
    › JavaFX / TornadoFX games
    › Minesweeper, Tetris, Game of Life
    › Integrations with video games

    View full-size slide

  74. Homework examples
    › Basic Kotlin classes with operators, unit tests, conventions
    › REST services
    › Ktor/Exposed stack
    › Spring Boot apps
    › JavaFX / TornadoFX games
    › Minesweeper, Tetris, Game of Life
    › Integrations with video games
    › Image processing

    View full-size slide

  75. Homework examples
    › Basic Kotlin classes with operators, unit tests, conventions
    › REST services
    › Ktor/Exposed stack
    › Spring Boot apps
    › JavaFX / TornadoFX games
    › Minesweeper, Tetris, Game of Life
    › Integrations with video games
    › Image processing
    › Data analysis

    View full-size slide

  76. Testing
    › Not super hard

    View full-size slide

  77. Testing
    › Not super hard
    › Lots of quiz type questions

    View full-size slide

  78. Testing
    › Not super hard
    › Lots of quiz type questions
    › Open ended questions

    View full-size slide

  79. Testing
    › Not super hard
    › Lots of quiz type questions
    › Open ended questions
    › Some coding questions

    View full-size slide

  80. Testing
    › Not super hard
    › Lots of quiz type questions
    › Open ended questions
    › Some coding questions
    › “Rewrite this by using apply”
    val square = Square()
    square.x = 10
    square.y = 20
    square.side = 50

    View full-size slide

  81. Testing
    › Analyzing broken code

    View full-size slide

  82. Testing
    › Analyzing broken code
    › “Someone wrote this code without sufficiently learning Kotlin.
    Mark and fix as many mistakes as you can!”

    View full-size slide

  83. Testing
    › Analyzing broken code
    › “Someone wrote this code without sufficiently learning Kotlin.
    Mark and fix as many mistakes as you can!”
    class Car(val year = 2000) {
    val model: String;
    }
    void drive(car: Car?) {
    println("Driving around in a $car.year $car.model")
    }

    View full-size slide

  84. Stats
    0
    20
    40
    60
    80
    100
    120
    2019/20/1 2019/20/2 2020/21/1 2020/21/2
    Students Survey responses

    View full-size slide

  85. External resources used

    View full-size slide

  86. External resources used
    › kotlinlang.org

    View full-size slide

  87. External resources used
    › kotlinlang.org
    › Ktor, TornadoFX, Spring docs

    View full-size slide

  88. External resources used
    › kotlinlang.org
    › Ktor, TornadoFX, Spring docs
    › StackOverflow

    View full-size slide

  89. External resources used
    › kotlinlang.org
    › Ktor, TornadoFX, Spring docs
    › StackOverflow
    › YouTube tutorials

    View full-size slide

  90. External resources used
    › kotlinlang.org
    › Ktor, TornadoFX, Spring docs
    › StackOverflow
    › YouTube tutorials

    View full-size slide

  91. External resources used
    › hyperskill.org

    View full-size slide

  92. External resources used
    › play.kotlinlang.org

    View full-size slide

  93. More to consider
    › play.kotlinlang.org

    View full-size slide

  94. More to consider
    › play.kotlinlang.org

    View full-size slide

  95. More to consider
    › play.kotlinlang.org

    View full-size slide

  96. More to consider

    View full-size slide

  97. Favourites
    › Showing everything through examples

    View full-size slide

  98. Favourites
    › Showing everything through examples
    › Homework assignment

    View full-size slide

  99. Favourites
    › Showing everything through examples
    › Homework assignment
    › GitHub repo materials

    View full-size slide

  100. Favourites
    › Showing everything through examples
    › Homework assignment
    › GitHub repo materials
    › Functional programming

    View full-size slide

  101. Favourites
    › Showing everything through examples
    › Homework assignment
    › GitHub repo materials
    › Functional programming
    › Coroutines

    View full-size slide

  102. Favourites
    › Showing everything through examples
    › Homework assignment
    › GitHub repo materials
    › Functional programming
    › Coroutines
    › Looking at Java bytecode

    View full-size slide

  103. Favourites
    › Showing everything through examples
    › Homework assignment
    › GitHub repo materials
    › Functional programming
    › Coroutines
    › Looking at Java bytecode
    › Nyan progress bar

    View full-size slide

  104. Feedback
    “Never seen live coding like this in a course before”

    View full-size slide

  105. Feedback
    “Never seen live coding like this in a course before”
    “The most useful elective course I’ve had so far”

    View full-size slide

  106. Feedback
    “Never seen live coding like this in a course before”
    “The most useful elective course I’ve had so far”
    “Finally understood lambdas after seeing it elsewhere before”

    View full-size slide

  107. Feedback
    “Never seen live coding like this in a course before”
    “The most useful elective course I’ve had so far”
    “Finally understood lambdas after seeing it elsewhere before”
    “Didn’t just learn the language, but also the design decisions
    behind it, and the IDE’s capabilities”

    View full-size slide

  108. Feedback
    “Never seen live coding like this in a course before”
    “The most useful elective course I’ve had so far”
    “Finally understood lambdas after seeing it elsewhere before”
    “Didn’t just learn the language, but also the design decisions
    behind it, and the IDE’s capabilities”
    “Would love a 4 credit subject with labs each week”

    View full-size slide

  109. Feedback
    “I’m an electrical engineer in the 4th semester, realized I
    want to code for a living instead, this course reenforced
    that decision.”

    View full-size slide

  110. Feedback
    “I’m an electrical engineer in the 4th semester, realized I
    want to code for a living instead, this course reenforced
    that decision.”
    “Was looking for copper but found gold. I wanted to take a
    2 credit filler course for my last semester, but this turned
    out to be really useful.”

    View full-size slide

  111. Overall subject rating: 9.63
    0
    20
    40
    60
    80
    100
    120
    140
    160
    1 2 3 4 5 6 7 8 9 10

    View full-size slide

  112. › Meet students where they are
    › Live lectures or recordings
    › Written material
    › Projects to follow along with

    View full-size slide

  113. › Meet students where they are
    › Live lectures or recordings
    › Written material
    › Projects to follow along with
    › Teach more than syntax
    › Explain the “why”
    › Show underlying details

    View full-size slide

  114. › Meet students where they are
    › Live lectures or recordings
    › Written material
    › Projects to follow along with
    › Teach more than syntax
    › Explain the “why”
    › Show underlying details
    › Put students first
    › Clear communication, open for feedback
    › Involve them in the lectures
    › No super hard requirements

    View full-size slide

  115. Everything’s a remix
    › Android-based Software Development
    (VIAUAV21)
    › C11 and C++11 Programming
    (VIEEAV01)
    › Server Side JavaScript
    (VITMAV42)

    View full-size slide

  116. Kotlin @ BME
    › Android software development (4)
    › Kotlin software development (2)
    › Mobile & web development
    › 400+, all BSc students
    › Mobile Software Development minor (MSc)
    › Mobile Software Platforms (4)
    › Mobile Software System Development (4)
    › Mobile Software Laboratory (4)
    › 3D Graphics
    › KotlinJS for WebGL

    View full-size slide

  117. zsmb13
    zsmb.co/talks

    View full-size slide

  118. zsmb.co/talks
    zsmb13
    Márton Braun › Meet students where they are
    › Teach more than syntax
    › Put students first
    Creating a Kotlin
    Course from Scratch

    View full-size slide