They should not just learn C++ but Assembly, C, C++, C#, Java. Assemply gives them a real sense of what is going on "Under The Hood". C provides them with an understanding of memory management and risks asscociated with improper code that has leaks and is open to Buffer Overflow attacks. C++ gives them the understanding and usefullness of libraries and complex graphics. C# and Java teaches OOP
I think there is value to understanding how the underlying machine works. Never know when it might come in handy. It also gives students a taste of embedded systems. We still need people who do this.
The beauty of a course on 2600 development is the machine itself. Designed in the early 70's, it has only 128 BYTES of memory and no video shifter, so you have to sync with the video hardware in code. It will definitely provide a good lesson in software wedded to the hardware, as well as learning to design for economy.
I am absolutely sick of recent CS graduates (some with a masters)that cannot write code. Outside of academia and perhaps the national labs they have no commercial value as delivered by the university. Yes, it is nice for people to have a good foundation in the "know why" of CS, but they need some "know how" to go along with it.
All their "knowledge" about information theory, data structures, and algorithms is pretty much pointless when making commercial software. They don't have enough math, physics, or chemestry to be useful in developing new methods and without any "know how" they are drain on financial resoruces.
I had the same experience, but <b>you</b> should teach them how to 'develop' good code. Just studied electrical engineering, I had to learn PLM, Petri nets, modular programming and understand company written multi tasking operating systems more then 25 years ago.
Only possibly because I had very good teachers with enough time and patience, no chance to do it by my own with the knowlegde coming from university.