For years now, we have been teaching a software development course at our university in the 3rd year. It is a "theoretical" software development course, in which we cover:
- Exception handling
- Networking (socket communication)
- Design patterns
- GUIs (JavaFX)
- Reflection & introspection
- EDIT: also a bit on unit testing and JUnit
As you could have guessed, we use Java as our main programming language to introduce all these concepts. The students already know Python and C(++) and are generally quickly up to speed with Java. In the lab sessions, the students need to create a small software application from scratch and without any external libraries (apart from JavaFX). In this application, the student make a framework to chat and to play a game across the internet with an opponent.
Next year, we want to "pimp" our course a bit, but since we are all just university employees, we have little knowledge about real-world software development. It is *not* our goal to teach the students all kinds of modern frameworks that are currently used in industry. Like I said, it is *not* a practical course, but rather a theoretical one. We really want the student to create their little program from scratch, so that they have to program all eventing, multithreading, networking, etc. themselves. But we *do* want to follow general/large trends in industry. If Java is becoming less and less used to create desktop software applications, we are happy to switch to another language, for example.
What would your advise be for us? Are we still OK with teaching Java/JavaFX to introduce all these topics? Is desktop application development still the way to go, or should we shift focus to web-based applications? Or mobile development?
Looking forward to hear your opinions! Thanks!