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

Creating a Kotlin Course from Scratch (JetBrain...

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/

Márton Braun

July 29, 2021
Tweet

More Decks by Márton Braun

Other Decks in Programming

Transcript

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

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

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

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

    2022 2010 2011 Android & iOS courses (elective) Android development book
  5. 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)
  6. 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)
  7. 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)
  8. 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)
  9. 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
  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) Mobile and Web Development course (BSc) Android course (as a student) Learning Kotlin
  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) Android course (as a student) Learning Kotlin
  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) Android course (as a student) Learning Kotlin Converting the Android course to Kotlin
  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) Learning Kotlin Converting the Android course to Kotlin Creating a Kotlin Course from Scratch
  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 Converting the Android course to Kotlin Creating a Kotlin Course from Scratch Kotlin course (elective)
  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) 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)
  16. Goals › Teach independently of Android › Build an interest

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

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

    lots of code › Some original illustrations
  20. Live coding › The IDE is a core part of

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

    the Kotlin experience › Great for encouraging questions
  22. Lectures › Usual setup › In-person lectures › Extras outside

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

    of the core material › Events › Language news › Easy interaction
  24. Remote › Recordings are essential › Started these in person

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

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

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

    already › Making them available very quickly › Available in multiple forms › Zoom classes › Harder to get interaction
  28. 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
  29. 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
  30. Homework › Free choice of project › … as long

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

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

    JDK8 › TornadoFX › JavaFX JDK11 › Largest setup problems › JDK versions › Missing JavaFX support › No problems installing IntelliJ IDEA
  33. Homework examples › Basic Kotlin classes with operators, unit tests,

    conventions › REST services › Ktor/Exposed stack › Spring Boot apps
  34. 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
  35. 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
  36. 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
  37. 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
  38. Testing › Not super hard › Lots of quiz type

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

    questions › Open ended questions › Some coding questions
  40. 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
  41. Testing › Analyzing broken code › “Someone wrote this code

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

    2020/21/1 2020/21/2 Students Survey responses
  44. Favourites › Showing everything through examples › Homework assignment ›

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

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

    GitHub repo materials › Functional programming › Coroutines › Looking at Java bytecode › Nyan progress bar
  47. Feedback “Never seen live coding like this in a course

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

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

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

    recordings › Written material › Projects to follow along with
  55. › 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
  56. › 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
  57. Everything’s a remix › Android-based Software Development (VIAUAV21) › C11

    and C++11 Programming (VIEEAV01) › Server Side JavaScript (VITMAV42)
  58. 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
  59. 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