Hacker News new | ask | show | jobs
by paxys 381 days ago
Even 20 years ago back when I was in college you had a sizable portion of kids who came in to study computer science thinking it would be fun and games. They were then made to study formal logic in their first semester and debug segfaults in gdb in the next, and by the end of the first year pretty much all of them had switched majors.

Anecdotally I've heard that very few CS programs even use C++ anymore, and schools now favor Python because students find it more accessible.

5 comments

There's definitely this disconnect between programming and computer science. For better or worse, a lot of top schools don't even really teach programming in their computer science programs. It's something you just pick up on your own.

But not sure that using Python as the specific tool is so bad--based on the MOOC that's what MIT uses in Intro to Algorithms. May be better than spending a lot of time on the vagaries of C++ which are certainly relevant to system programming (though that's probably slowly switching to Rust) if your focus is on algorithms and other design details.

> […] a lot of top schools don't even really teach programming in their computer science programs. It's something you just pick up on your own.

"Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes. Science is not about tools. It is about how we use them, and what we find out when we do."

* https://quoteinvestigator.com/2021/04/02/computer-science/

* https://en.wikiquote.org/wiki/Computer_science#Disputed

Perhaps a trade school would be better if someone wants to focus on 'just' programming.

I think completely separating it like that goes too far in the other direction. The absolute best undergrad classes I had were the two where the lectures were entirely on the theory side, then the projects were practical implementations of the theory.
Totally. One consequence which I'm somewhat ambivalent about is that people with interest in engineering fields other than computer science may not be expected to have the degree of familiarity with the tools of the trade that budding computer scientists do. But, given the popularity of computer science as a major, it's probably inevitable to expect that freshmen at least in top schools have done at least some programming.
Being able to understand computer science and apply it is called software ENGINEERING for a reason, and it's a lot more complicated than 'just programming'.

You sound like a physicist who thinks mechanical engineers are unnecessary because we have physicists and car mechanics.

> You sound like a physicist who thinks mechanical engineers are unnecessary because we have physicists and car mechanics.

Or I sound like someone who recognizes that physics and computer science, and mechanical engineering and computer engineering / programming, are different areas of activity.

Well, essentially you have the language used in the class match the subject being taught.

Python gets language difficulty out of the way of learning a given algorithm. Bonus points for exacerbating the time issue when trying to introduce Big O timing notation. The kids can actually "feel it" in an in your face kind of way.

Systems, it's different, as you say.

Compilers. Different AI courses. And on and on. Each you may have legit reasons for using different languages.

The concern starts to grow when Python is being used across many courses to the exclusion of any other language or technology. That's the issue that's growing across CS departments right now. Couple that with kids who have no interest in learning the other languages on their own and voilá! You have an issue with uninterested kids graduating, but now they're also unprepared.

No argument. 6.001 I think it is goes into sort algorithms, Big O, etc. And Python seems a pretty good match especially as an ostensibly into course. Rust (or C++) is clearly a better match for other purposes and would probably deserve some sort of class for some of the associated concepts even if the student sort of knew how to "program."
While C++ is unquestionably still widely used, outside of legacy and some niches (like embedded) it's not in the top 3 "best" choices. Why teach a more complicated language with a poorer ecosystem and toolchain than is actually needed?

I think there's still value in starting with C and C++, to see where it's coming from and see how much tooling and DX has improved, but I can't really blame courses jumping directly to the more useful things.

Maybe it's selection bias because I'm an above average C++ programmer but all three large tech companies I've worked at used C++ very heavily.
The first real language I learned was C++ and I was decent at it (best in class but mostly stuck with console based programs, nothing advanced like GUIs that year). I have never used it at work. If you look at job boards, it's overwhelmingly stuff like Java, JS/TS frameworks, etc. Why teach it when it seems like less than 10% of postings are looking for it? Might as well teach other languages and just learn it if you need it.
Frameworks are the opposite of what universities should be teaching. I had this argument with another classmate when I was there who said they should be doing that. The point of a university is to give students the skills to communicate the ideas needed to use and develop frameworks effectively, not to teach you particular frameworks.
Especially considering that the hot framework you are studying will probably be out of fashion by the time you graduate. If I was paying American college tuition rates and sat in class studying Next.js I'd demand a refund.
Why teach it when it seems like less than 10% of postings are looking for it?

And we're back to the discussion of what is the point of a University CS education. I would argue that learning something like C++ is important for the same reason something like Lisp or Haskell is important. Not because it will necessarily help you get a job, but because it introduces you to new concepts and a new way of thinking about programming and computation that will be useful no matter what language you end up programming in for a living.

I don't think there are any main concepts that I learned in C++ that weren't also covered in other courses, such as Java, assembly, and COBOL. If we're going to teach different types of languages then they should be truly different, such as the ones just mentioned.
Of course you can teach most concepts in most languages, but when it comes to understanding concepts like stack vs heap, pointers to a value vs the value itself, move vs copy semantics, pass by reference vs pass by value, explicit vs implicit memory allocation and deallocation, and so on, I found C++ pretty useful.
University isn't there to teach any languages. But it is there to provide the foundation and theory. If somebody wants practical C++ then go to a further education college.
I tried to study IT(lighter version of CS) without any prior programming experience and our first programming language was Java because apparently with Java you "Write once, run anywhere". But when I saw Java's syntax, I was like....this is not happening. That was the golden age of mobile apps and our focus was on the mobile development since Web was not sexy anymore. I'm actually happy that I quit because all I heard were horror stories of Java's mobile development on Android. My interest is actually Web development and if I had to choose all over again I would rather learn JavaScript. I can only imagine and speculate how hard it is for someone with no prior CS and programming experience to learn computer architecture, assembly, C and C++ for the first time.
I took the MIT MOOC CS Intro a few years back for a combination of refresher (though I wasn't actually a CS major) and just to kick the tires. Good Lord, that would have kicked my butt back when I was a freshman absent prior programming experience, admittedly when computer programming was much less a norm than it is today.

I had a high school BASIC class but that was about it.

> But when I saw Java's syntax, I was like....this is not happening.

No, you're good, this is the natural reaction of basically all programmers except for those strange beasts known as Java programmers who believe verbosity and needlessly complex yet organized in a twisted sense is nirvana, in the same way the accountant sees the tax return as nirvana. Many other language enthusiasts such as C, python, or LISP, will also get a bad taste for Java. Of course there are other gnarly languages such as APL or SAS.

I think that's what the professor meant when s/he said that schools are "dumbing down" curricula. The amount of Python being taught is a bit concerning even from the perspective of personal economics. If I was paying all that money every term in tuition, I'd want them to teach me the hard stuff. Not the language I can learn in a weekend while I'm shirtless on the couch watching GameDay. It's like no one ever stops for a moment and says, "Wait? Why am I paying this much money to learn a language that's so easy my English Lit friend knows it inside out already?"

If I were at a school where they are teaching JavaScript or Python, you kind of already know that program is more "money grab" than "study of computing technologies".

I don’t think I could disagree more strongly.

College should not be about teaching a specific language. It should be teaching the programming skills needed to pick up any language. Python is just as good as C++ in this regard. In fact, if python is an easier on ramp and get people excited about programming and show shows them what’s possible before crushing their soul with C/C++ then I say go for it.

In college, I regularly wrote my programs in PHP language I had taught myself prior to college and then converted them to see to submit my homework/test. While PHP was obviously much slower to run, it let me iterate and develop faster than my peers.

In fact, I find it borderline fraudulent that so many colleges waste time on a language that most graduates will never use. Python knowledge is way more useful than C++ knowledge in my opinion, especially for a new grad.

Then again, I have a very dim view on college CS programs as a whole. They aren’t just fighting the “last war”, they are fighting a war from decades ago. Almost everything that I used in my first job were things that I taught myself, not things that I learned in college. That was one big reason why I dropped out of college my junior year I wasn’t learning anything that was useful for my field. The professors were pedantic and cared about silly things like making sure I put a semicolon at the end of each of SQL queries that I wrote for an exam.

I would argue that Python, being a simple, easy to learn language, allows you to focus on other aspects of CS e:g complex algorithms. Rather than faffing about with memory management etc you can really study algorithms without the language getting in the way. Of course, this depends upon the professors actually teaching this "hard stuff" :)
There seem to be relatively few C/C++ jobs, so they went with what the market wanted (Java). They still exposed you to other other types of languages such as assembly, JS, and even COBOL. I really don't think going with python except for an into/cross-major class is a good idea since it's so simple and there aren't that many jobs with it.
>I really don't think going with python except for an into/cross-major class is a good idea since it's so simple and there aren't that many jobs with it.

Python's ecosystem is massive and there are lots of use cases[0], basically data analysis, machine learning, deep learning and all the rest of AI run on Python.

[0] https://lh3.googleusercontent.com/keep-bbsk/AFgXFlJPnxraSopK...

Image that I shared was from my Google Keep account and apparently it was set private afterwards by Google so don't click the link....here is the alternative link: https://media.springernature.com/full/springer-static/image/...
The ecosystem is massive, but most CS jobs when looking at job boards either don't use it or use it just as a secondary (similar to SQL).

If you're saying that all of AI runs on python, then what's the problem here? Implicitly students will need to learn python as part of their AI class.

I recently heard someone say "I've never had a job that didn't involve at least some Python". I think that's true of almost all computer science jobs in the current market.

Python is the primary language for scientific computing and the secondary language for a good number of other tasks.

Yeah, but I'd work that in the same way it's actually used - as a secondary language in one of the data related classes, such as a database course where you learn SQL, then have the students do calculations on in python. Or do it in one of the course that is used for introduction or non-CS students minoring in CS (like business majors). The real thing is that if you learn other stuff like Java, Python is super easy to pick up and doesn't need to be formally taught.
I work at a fintech company doing Spring Boot, and the only python I've seen here is in some CI scripts (which I can see but do not have access to edit, we have a team that maintains CI). Everything else is Java, Kotlin, or JS for some websites, that's about it. I've heard the AI teams use python, but while pretty much all the devs in my team know python, we don't use it at all.
Similar here. One exception is that we had some Lambdas written in Python. Now there is a push to replace them with Go because of the potential money savings from faster execution times.
>I recently heard someone say "I've never had a job that didn't involve at least some Python".

Tell me you've been in the field for less than 10 years without telling me.

Python is a joke language with a joke name. The only reason it ever caught on for AI is that someone wrote a few good math libraries for it in the 2000s, and its' rise is entirely incidental to that.

I was taught Python in class twenty years ago. I use/used it for systems roles. I don't use it as much anymore but your comment is complete nonsense.
Are you trying to get banned from hackernews? You can't go around calling peoples comments complete nonsense, you called me full of shit last week. Do you even like this community? We try really hard to be civil to each other in this place. https://news.ycombinator.com/newsguidelines.html