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/

4047c64e3a1e2f81addd4ba675ddc451?s=128

Marton Braun

July 29, 2021
Tweet

Transcript

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

  2. None
  3. › Budapest, Hungary

  4. › Budapest, Hungary › BME (Budapest University of Technology and

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

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

    Economics) › VIK (Faculty of Electrical Engineering and Informatics) › AUT (Department of Automation and Applied Informatics)
  7. 2013 2014 2015 2016 2017 2018 2019 2020 2021 2012

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

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

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

    2022 2010 2011 Android & iOS courses (elective) Android development book
  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)
  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)
  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)
  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)
  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
  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
  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
  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
  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
  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) 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)
  21. 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)
  22. Acknowledgements Bertalan Forstner Péter Ekler Hassan Charaf Imre Kelényi Gergely

    Csúcs
  23. Goals › Teach independently of Android

  24. Goals › Teach independently of Android › Build an interest

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

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

    in Kotlin › Deep understanding of language basics › Building on Java and OO knowledge
  27. 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
  28. Materials › Full written material in English

  29. Materials › Full written material in English

  30. Materials › Full written material in English

  31. Materials › Full written material in English › Many links,

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

    lots of code › Some original illustrations
  33. None
  34. None
  35. None
  36. All on GitHub

  37. All on GitHub István Juhos stewemetal

  38. Lectures

  39. Lectures › 0 slides

  40. Lectures › 0 slides › All live coding

  41. Lectures › 0 slides › All live coding

  42. Live coding

  43. Live coding › The IDE is a core part of

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

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

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

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

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

    the Kotlin experience › Great for encouraging questions
  49. Useful IDE functionality

  50. Useful IDE functionality

  51. Useful IDE functionality

  52. Useful IDE functionality

  53. Useful IDE functionality

  54. Useful IDE functionality

  55. Useful IDE functionality

  56. Useful IDE functionality › Java to Kotlin converter › Kotlin

    scripts › Scratch files › REPL
  57. Lectures › Usual setup › In-person lectures

  58. Lectures › Usual setup › In-person lectures › Extras outside

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

    of the core material › Events › Language news › Easy interaction
  60. Remote

  61. Remote › Recordings are essential

  62. Remote › Recordings are essential › Started these in person

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

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

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

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

    already › Making them available very quickly › Available in multiple forms › Zoom classes › Harder to get interaction
  67. 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
  68. 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
  69. Requirements Homework Test

  70. Homework › Free choice of project

  71. Homework › Free choice of project › … as long

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

    as it’s not Android › Varying difficulty › Create something meaningful › Write neat Kotlin code
  73. Homework › Starter projects › Command line, JDK8 › JavaFX

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

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

    JDK8 › TornadoFX › JavaFX JDK11 › Largest setup problems › JDK versions › Missing JavaFX support › No problems installing IntelliJ IDEA
  76. Homework examples

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

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

    conventions › REST services › Ktor/Exposed stack › Spring Boot apps
  79. 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
  80. 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
  81. 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
  82. 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
  83. Testing

  84. Testing › Not super hard

  85. Testing › Not super hard › Lots of quiz type

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

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

    questions › Open ended questions › Some coding questions
  88. 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
  89. Testing › Analyzing broken code

  90. Testing › Analyzing broken code › “Someone wrote this code

    without sufficiently learning Kotlin. Mark and fix as many mistakes as you can!”
  91. 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") }
  92. Stats 0 20 40 60 80 100 120 2019/20/1 2019/20/2

    2020/21/1 2020/21/2 Students Survey responses
  93. External resources used

  94. External resources used › kotlinlang.org

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

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

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

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

    › StackOverflow › YouTube tutorials
  99. External resources used › hyperskill.org

  100. External resources used › play.kotlinlang.org

  101. More to consider › play.kotlinlang.org

  102. More to consider › play.kotlinlang.org

  103. More to consider › play.kotlinlang.org

  104. More to consider

  105. Favourites

  106. Favourites › Showing everything through examples

  107. Favourites › Showing everything through examples › Homework assignment

  108. Favourites › Showing everything through examples › Homework assignment ›

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

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

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

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

    GitHub repo materials › Functional programming › Coroutines › Looking at Java bytecode › Nyan progress bar
  113. Favourites

  114. Feedback

  115. Feedback “Never seen live coding like this in a course

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

    before” “The most useful elective course I’ve had so far”
  117. 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”
  118. 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”
  119. 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”
  120. Feedback “I’m an electrical engineer in the 4th semester, realized

    I want to code for a living instead, this course reenforced that decision.”
  121. 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.”
  122. Overall subject rating: 9.63 0 20 40 60 80 100

    120 140 160 1 2 3 4 5 6 7 8 9 10
  123. None
  124. › Meet students where they are › Live lectures or

    recordings › Written material › Projects to follow along with
  125. › 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
  126. › 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
  127. None
  128. Everything’s a remix › Android-based Software Development (VIAUAV21) › C11

    and C++11 Programming (VIEEAV01) › Server Side JavaScript (VITMAV42)
  129. 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
  130. zsmb13 zsmb.co/talks

  131. 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