Live data from Hacker News

UCLA introductory programming classes should focus more on Python, not C++

dailybruin.com

31–40 of 92 posts

Re: UCLA introductory programming classes should focus more on Python, not C++

#31
post #17

on 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.

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.

Re: UCLA introductory programming classes should focus more on Python, not C++

#32
post #27
post #17

on 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.

And how does a CS student vs an EE student know how computers "work". CS as I understand it is just the math not the underlying technology.

Re: UCLA introductory programming classes should focus more on Python, not C++

#33
post #17

on 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.

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, something you can't fix by just profiling later on.

What even is the point of having programming classes if alls they do is teach what you can learn yourself with an online tutorial?

Re: UCLA introductory programming classes should focus more on Python, not C++

#34

CS50, the intro CS course at Harvard, which is notably a large and successful MOOC in addition, is taught in C. It's a really bizarre choice, and only serves to add complexity to a topic that already has a fairly high cognitive barrier to entry.

As opposed to jumping into C++ in all its OO glory?

Re: UCLA introductory programming classes should focus more on Python, not C++

#35
post #31
post #17

on 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.

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 fir…

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.

Re: UCLA introductory programming classes should focus more on Python, not C++

#36

I think fundamentals of programming should be more emphasized not the language itself.

This is all that CS has ever been, and is the reason they're teaching in C++ in the first place (it's a low-level language good for learning fundamentals), which is fine. But a huge part of CS students graduate without knowing how to code in languages that are reflected in the jobs they are trying to get, which are mostly python, javascript, and java. If you think the industry is fine, great, but if you agree with th…

well that is not a Universities Job is it

Re: UCLA introductory programming classes should focus more on Python, not C++

#37
post #25
post #17

on 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.

What's with the false dichotomy? I personally agree with you that knowing lower level things is incredibly helpful to every single good developer, even those who don't touch anything lower than Javascript on daily basis. However, I totally disagree that those computing concepts should be taught in an intro class, when the student not only has to struggle with learning basic computing concepts, but also with memory ma…

The reason is that not teaching those lower-level concepts continues to allow them to be magical. No one expects to get into Reference Counting vs. Tracing Garbage Collectors, but understanding that lower-level construct exists partially removes the mystery of the underlying mechanics. An analogous example would be Cars: you press the accelerator and gas gets sucked in from the gas tank to the engine. Most people don't care to understand if it is EFI or Carburetor.

Re: UCLA introductory programming classes should focus more on Python, not C++

#38
post #17

on 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.

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,…

I don't see what any of this has to do with C++, especially modern C++.

The only "low-level" detail from lower level systems course I find that is still relevant on a daily basis is cache-alignment - which I doubt they would cover in a 101 course anyways. Almost everything else either 1. the compiler does better or 2. you'd have to know how to fight the compiler to achieve.

Anything that would let you achieve 200-1000% performance gains in Python vs C++ (besides, again cache alignment) is likely not something you would cover in a intro level course. (I know C++ is faster Python, but that has nothing to do with "accounting for the hardware at the very architecture level")

Re: UCLA introductory programming classes should focus more on Python, not C++

#39
post #17

on 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.

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 much the priests tell you otherwise :)

Re: UCLA introductory programming classes should focus more on Python, not C++

#40
post #17

on 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.

C++ should be an advanced class, not an introductory class. That's the best way to put off someone from programming otherwise.
Post reply on HN