4 ms·
No one is suggesting that CS students shouldn't learn about low-level machine architecture - what would they do for the last 3 years? C++ is just not made to be
by mastax 9y ago
No one is suggesting that CS students shouldn't learn about low-level machine architecture - what would they do for the last 3 years? C++ is just not made to be a first programming language.
Aside: I'm not convinced that Python is a perfect first language either - its error messages are very unhelpful when you're learning. Also I think a "NAND to Tetris"-style curriculum could work, but C++ would still not be the first step for this.
Also, look at the second half of that sentence. This is not about "developers". If you're a business or physics student who's taking one elective programming course over a bachelor's degree would you be better served if that one course was in Python? Yes, absolutely.
- jakear 9y agoI think there is something to be said for Scheme as an intro language. Knowing the "full stack" of computation doesn't need to end at NAND gates, it could just as easily end at the lambda calculus. In fact, I personally would prefer it that way.
- techman9 9y agoI'd be really curious to see a study of the performance of CS majors in later classes by paradigm of the language taught in CS1 (i.e. imperative/OOP vs functional). I've been trying to keep my eye out for a while, but haven't really found anything that answers this specifically.
- NiceGuy_Ty 9y agoMaybe course withdrawal rates could be used, but getting access to the necessary statistics seems like it'd be a chore. I just checked with my university and the only statistics I can find are centered around graduation rates. One would likely have to contact all the registrars among a sample of universities individually, as I haven't found a university offering these statistics yet.
- techman9 9y agoCS Educators do this research all the time, but it's pretty challenging to design a CS1 class that's effective but also so radically different from the typical paradigm. There's also a risk you'll set students back if it's not effective so there are definitely ethical concerns and it requires interrupting a professor's load for the quarter. That said, CS educators conduct research like this all the time and there's probably a lot of value in studying this kind of change.
- farresito 9y agoWhat's so bad about using C++ as a first language? My college uses C++, and I'm very happy that they did so. Transitioning into higher-level languages is very easy, and at no point while I was learning the language did I think "Damn, I wish we used Java/Python". I really have no complains.
- techman9 9y agoC++ has all this "language-specific" overhead that you kind of have to wade through before you can get to doing anything really productive. Python is easy to use and be productive with out of the box, has a complete feature set, doesn't require manual memory management and has far more expressive errors. It really depends on the emphasis of an intro programming course. If the goal is to cover the basic control structures of a higher level language (conditionals, loops, switch statements, functions) and the fundamentals of object oriented programming, and get into some basic algorithms and data structures, then Python probably has less baggage and is more terse and expressive than something like C++.
- epmaybe 9y agoIt almost feels as if more universities should have two different "introductory" CS courses: one for non-majors, and another for majors. I would however express that in my CS curriculum (only 6 years ago) we did not start using C++ until my junior/senior year, and instead stuck with Java.
- techman9 9y agoI'm not sure about segmenting intro courses by majors, but there is good research that suggests that segmenting CS1 by level of background knowledge has a significant positive impact on future coursework [0]. I suspect that a larger proportion of students who eventually study CS have a higher degree of background knowledge as well, so this probably makes sense. [0] https://dl.acm.org/citation.cfm?id=2445248 https://dl.acm.org/citation.cfm?id=2445248, https://dl.acm.org/citation.cfm?id=2255982 https://dl.acm.org/citation.cfm?id=2255982
- 9y ago