I completely agree. IDEs obscure the behavior of tools and languages. It's the last thing a student needs. I've been talking for a while about writing a course that teaches programming in 2 or 3 languages side by side to basically so the opposite of this. The specific quirks of languages or the things they obscure with magic melt away when you look at languages side by side. I wish university would teach in this way.
Thats a different argument, and a much stronger one.
"Universities should offer a class on comparative programming languages and language tooling." is much different than "Intro-to-programming classes should not have a strongly-recommended IDE"
I was referring to the second part of his post. Also this class is not introduction to programming it is upper division and considered one of tougher classes in terms of workload.
The assignments aren't trivial. Take look at them:
I agree. The intro class should use whatever IDE & config will most enable them to teach the fundamentals.
Understanding the details of packages and javac and other things should be left for a later class which can put them in the context of other languages.
Oh I had a very interesting class in eng. school about programming languages paradigms. About subtle differences between different implementations of the same concept. Ada, C++, Java, C# (could've gone to functional languages but the lesson was painful enough with these 4). Type-erasure, explicit/implicit/partial template instantiation, visibility rules. And then design patterns, in all those languages. How a singleton makes no sense in a language that's not 'full' object and has 'packages' (not the java ones), how GC/RAII/controlled-types change the patterns. It was both a course on 'using language concepts correctly, picking them carefully for a specific need and not 'to avoid writing 3 more lines of code' and also a lesson in 'how can you paint yourself in a corner and prevent yourself from handling the simplest of requirements change'...
Very interesting to see how our mind is shaped by the tools we use.
My small liberal arts school has this as well. It's a great idea but, at least for me, it was hamstrung by the professors being too reliant on their IDEs.
I can see the merit of this, but as an anecdotal counterpoint my first programming class was Fortran 77 using gedit (in the late 2000s). The delayed feedback of whitespace and syntax errors at compile time was painful, slowed down my learning process and distracted from the principles we should have been learning.
I carry this thought process over into my current life. When I start with a new technology/language/etc. I try to start barebones command line, text editor.
I transition quickly into more visual / abstracting tools, but that first foray into the guts really helps ground me with a better understanding of what's actually happening.
As someone who started with C and then made a really hard effort to become an expert C programmer, when later in life I was introduced to Smalltalk and Lisp, I was angry that C had warped my brain and I could only think of programming in the context of a physical machine. I feel it would have been much better to go in the opposite direction.
That sounds wonderful! A real overview of the programming landscape, and definitely a good start assuming they follow my other points as well. I'd love to take that course.
University programs exist to prepare workers for the industry, as a general goal. A subset of students are either already hardcore or will become hardcore developers, cum computer scientists. How should a university 'optimize' their pedagogical approach so that all students are maximally rewarded by their education?
There is no question in my mind that you are correct, in principle. But I wonder if what you propose would in fact result in higher attrition rates. With the current approach, the majority benefit from an IDE that reduces the 'cognitive surface' of the "programming environment", and for those who prefer or gravitate towards the underlying layers, no one will prevent them from firing up e.g. Vim and maven.
That said, yes, don't make students use Eclipse. Make them use IDEA or VS something. /g
It is in my country. We routinely attend jobs fairs put on by their CS departments alongside every other software dev firm, we take on interns in their 2nd CS year, etc. etc.
Hell, they're even learning version control (mainly Git, some SVN) in CS degrees now, which was a nice change to see start coming through in the grads we interview.
Although we're seeing universities now start offering Engineering degrees in software with a far more "real-world" requirement including mandatory internships and an industry sponsored research project.
University programs as I know them prepare the enrolled for a career in science and are typically far removed from concerns of practicability or applicability.
Not hugely, although the current Labour led coalition is trying to make them more widely used. They used to be common place, I'm not really sure what happened.
And even then, we only have them for the trades - plumbers, sparkies, joiners etc.