When I was in high school C++ was taught as an intermediate language to sophomores. Most everyone in the class had no issues learning the language. We were all making our own versions of frogger in the terminal. There was plenty of focus on problem solving and developing interesting programs. The language didn't get in the way at all. One thing we had that seems lost today is the nice, simple programming environment…
UCLA introductory programming classes should focus more on Python, not C++
71–80 of 92 posts
Re: UCLA introductory programming classes should focus more on Python, not C++
#72on lower-level implementation details related to how machines interpret code – knowledge that non-computer science students are unlikely to use after they graduate. Yeah, the world really needs a load more developers with no idea how computers work. We don't see any of those in interviews already.
Did you read your own quote? These aren't developers, they're "non-computer science students" who don't need to know underlying memory details, but they're being required to because this class is a prerequisite for a bunch of computing-related classes in other majors.
That said, there is definitely something to be said for learning a lower-level language fairly early on I think. It's much easier to go from worrying about pointers vs values, manual memory management etc to not having to think about them than it is the other way round.
Re: UCLA introductory programming classes should focus more on Python, not C++
#73Earlier quoted context omitted.
What'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.
C++ 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 struct…
Re: UCLA introductory programming classes should focus more on Python, not C++
#74Earlier quoted context omitted.
We definitely need more developers who can't leverage more than 10% of the CPU's actual power. Its literally impossible to have any clue about performance without understanding the hardware. Sure you can profile and gain 5-10% after micro-optimizing what the profiler tells you. But you will never, ever get the 200-1000% performance gains you can only get by accounting for the hardware at the very architecture level,…
>What even is the point of having programming classes if alls they do is teach what you can learn yourself with an online tutorial? Well, you can learn everything covered by even the most exhaustive CS degree by yourself using open resources. Low level knowledge is not locked away in some ivory tower. You certainly don't have to join a modern priesthood to gain access to high quality learning material, no matter how…
I've been reading that book, too, and agree with the sentiment
Re: UCLA introductory programming classes should focus more on Python, not C++
#75I really like Lisp-based and multi-paradigm languages for teaching because you both want to span as much of CS as possible in a single language, and you eventually want to implement languages and compilers as part of the curriculum. The former requires multi-paradigm, the latter requires good metaprogramming and homoiconicity. You also want the ability to get low-level to talk about the assembly code (or LLVM IR), fu…
It starts with Lua(Jit) -which is a very simple, powerful, Schemy language. Lua is used both as a runtime and as a metaprogramming layer for a Lua-ish interface to LLVM IR (including SIMD) that requires static typing and manual memory management. It is intended to be the implementation layer of compilers and JITs and it is created by and for the HPC community.
All it really needs is more attention, documentation and tutorials.
Re: UCLA introductory programming classes should focus more on Python, not C++
#76I don't think Python is a bad first language to learn, but I think that it's important to consider the audience of these introductory CS classes. These classes aren't really designed JUST to teach you programming (I say this as a person who never coded before CS31). This is why the UCLA Computer Science faculty recently introduced CS97, which is actually an introductory programming course taught in Python for absolute beginners. That way those who are already comfortable with coding can ease themselves into learning about lower-level implementation they may not have been exposed to before, and absolute beginners can supplement their introductory _Computer Science_ class with an introductory programing class as well.
Re: UCLA introductory programming classes should focus more on Python, not C++
#77Re: UCLA introductory programming classes should focus more on Python, not C++
#78https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-th...
Re: UCLA introductory programming classes should focus more on Python, not C++
#79Earlier quoted context omitted.
I 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.
I'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.
Re: UCLA introductory programming classes should focus more on Python, not C++
#80on lower-level implementation details related to how machines interpret code – knowledge that non-computer science students are unlikely to use after they graduate. Yeah, the world really needs a load more developers with no idea how computers work. We don't see any of those in interviews already.
It's an _introductory_ course for a reason. Not all of these students are going to be developers. Those that do, will take advanced classes, rather than trying to interview on the basis of an introductory course.