4 ms·
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
by ngngngng 7y ago
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.
- codysc 7y agoI 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.
- takeda 7y agoUCLA has a class that does this, you have 10 weeks to learn 5 languages and write a non trivial assignment in each: http://web.cs.ucla.edu/classes/spring20/cs131/syllabus.html http://web.cs.ucla.edu/classes/spring20/cs131/syllabus.html http://web.cs.ucla.edu/classes/spring20/cs131/homework.html http://web.cs.ucla.edu/classes/spring20/cs131/homework.html The languages change over the years, but the goal is to have them touch different programming paradigms.
- afarrell 7y agoThats 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"
- takeda 7y agoI 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: http://web.cs.ucla.edu/classes/spring20/cs131/homework.html http://web.cs.ucla.edu/classes/spring20/cs131/homework.html
- NoraCodes 7y agoI actually think that would mostly confuse a lot of new undergrads. Fundamentals first, variety later (but it's definitely important!)
- afarrell 7y agoI 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.
- touisteur 7y agoOh 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.
- NoraCodes 7y agoMy 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.
- gundmc 7y agoI 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.
- NoraCodes 7y agoPerhaps the problem is that Fortran 77 is, like Java, not the best introductory programming language?
- eternalban 7y agoUniversity 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
- dragonwriter 7y ago> University programs exist to prepare workers for the industry, as a general goal. I don't think that it's true that the general goal of University of CS programs is to prepare students for the software dev industry.
- EdwardDiego 7y agoIt 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.
- bmn__ 7y agoDon't you have apprenticeships in your country? 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.
- mettamage 7y agoCS50 looks quite like what you're describing. One learns: - C - Python (+ Flask) - JavaScript - SQL I think this was the order. They learn C the most.
- NoraCodes 7y agoThat 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.
- scns 7y agoYou can do that on edx.org
- JackFr 7y agoAs 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.