I am a UK based academic also teaching programming. Currently I’m teaching a second year module that has been spiced up and given context by getting students to do android development. Since learning Kotlin I’ve thought about its use for teaching. I’m not decided any way, and in my case there is a distinct advantage to using whatever is tought the earlier year (I don’t want students to spend too much time learning another syntax).
Overall, from a teaching perspective I have the following observations:
- Freestanding functions can keep students away from OO before they are ready and reduce the overall level of “magic incantations”
- Support is good, but not quite at Java levels (and still a bit rough around the edges - students can trip up on the slightest hic-up, they are poorly motivated and any issue will cause escalation)
- There are some parts of Kotlin where Java leaks through. I’m not sure how often students would actually hit it, but it could be an issue (distracting from useful learning fighting with tools instead).
- Lambda support in Kotlin is very good and concise without being opaque
- Some industrial skills can be good, but it should not be the primary driver (will they learn better from Kotlin)
- Java has way too many weak design points and other bits that for students become “magic incantations”. (bits of code they learn by rote, not gaining an understanding as to what the code actually does)
- Data classes and final by default classes should help students learn more about structured data types without having to confuse it too much with polymorphism etc. Hopefully it disabuses students of the idea that all functions belong naturally inside objects (and you need to create an object if you don’t have one - the DoSomethinger idea).
- I share your worries about the textbook issue.
- If you are not teaching the module alone, you need to be very careful that your support will be able to handle the language. I had a lab demonstrator last year that was struggling with technical issues and it did not help student attitudes.
- Frequent language changes may be problematic. From a teaching perspective you want the same language at the end of the teaching as at the beginning. When that update your version prompt comes, many students will however hapilly click yes (even just before the major coursework deadline). You need to be careful and reflect on how much you can tie down the student work environment although I think the changes between 1.0 and 1.1 are acceptable.