Hacker News new | ask | show | jobs
by cs_throwaway 381 days ago
CS professor with 15 years experience.

The massive boom in computer science enrollment over the last 20 years has been driven mostly by people chasing tech salaries, not by any real interest in computing itself. These students often show up completely unprepared for how difficult CS actually is, and universities have responded by dumbing down their programs to keep everyone happy and enrolled.

If this weeds out the people who are just there for the paychecks, it might actually be a relief to get back to teaching students who genuinely want to learn about computing.

12 comments

I think CS departments are at least partially responsible for this development. They know that most of the students applying care nothing about Computer Science, have no interest in Computer Science and will never learn Computer Science, yet they keep accepting (and graduating) them. If CS departments actually wanted to teach CS, then they would advocate for setting up a new series of departments/degrees with names like Software Development and Engineering or Application Design and UX, and send most of the students there. Then those who want to learn/teach Computer Science can learn/teach Computer Science without having to deal with a classroom full of people who really don't want to be there.
When education becomes a business students become your customers. And the last thing you want to do is piss off your customers by failing them.
But if you can sell those customers a better product at the same price, then perhaps everybody will be happier. As it is now no one is happy. CS staff are annoyed that the students don't want to learn CS, and the students are annoyed since most of the CS they are forced to learning isn't relevant for the web developer job they want to apply after graduation.
There's an argument that a huge amount of the specific engineering theory that students learn never gets applied in a lot of jobs. I used some for a few years in mechanical engineering but not really a whole lot. A lot more was sense in managing projects. And, while I took a programming course (wouldn't call is CS), it probably didn't really help me in my job a lot more than the limited programming I took in high school did.
Well according to the linked data 94%+ of CS graduates have well paying jobs in the industry, so not sure if "no one is happy" is accurate.
University departments do not always have the kind of autonomy your post implies. It is common for the university’s central administration to dictate how many students they must let it, how much money they get per student, and hence how many they can fail without going into the red.
What could possibly go wrong making education a for-profit business? /s
None of this has to be for-profit. It just requires the university administration to put its wants, priorities, and head count (!) above the interests of the individual departments and of the students.

Making the whole thing a non-profit or a charity won’t solve this.

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.

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.
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
Having interviewed a number of graduates from code camps, they're definitely just chasing the salary.

Most of them have no actual passion for computing, their scope of knowledge is superficial, and they're asking for six-figure salaries out of the gate.

I had a relatively simple coding assignment (shouldn't take more than 15 minutes) that I would use to weed out those that were just copying and pasting sample code. It required a very large number of values and added an additional profiling step to it. The sample code wasn't performant with a very large number of values, and was painfully slow to use unless you made minor adjustments to a few things.

Back when we used to interview in person, we used to have a computer and screen in the office running Linux. The number of people who couldn't handle a terminal even to type "ls" was either remarkable or shocking depending on your point of view. We're talking about people who claimed years of Linux experience, applying for Linux programming and administration jobs.
Thank you for saying this because it feels like these people entering the industry in such numbers over the 2010s completely killed what made this job fun in the first place. I call them "ticket completers". Sure they can mechanically perform the minimum requirements of the job, but there is zero interest at all in what is actually being done; just following PM directions to the letter with no further thought. The whole spirit of innovation and curiosity and discovery has been lost, replaced by lifestyle seekers who look at you like an insane person when trying to talk about software in the abstract (ha!).

The hackers and nerds will be just fine. They are like gold when we find them now. But if this makes CS "uncool" again, I am all for it.

"The hackers and nerds will be just fine. They are like gold when we find them now."

This is not at all my experience. One of the problems I face is many of those PMs and companies in general want mindless ticket completers. My current job just wants us to grind through the Jira backlog. They have no interest in anything else and crush it from your will too.

> The hackers and nerds will be just fine. They are like gold when we find them now. But if this makes CS "uncool" again, I am all for it.

Think about how AI can help students cheat nowadays. You could still cheat previously, but now a CS-degree seeker can have an AI do the entirety of school work for them (with exception of say pen-and-paper tests). Imagine how the quality of new graduates drops with regard to the understanding and abilities you highlight as crucial to being effective in software, and how those that do understand are even more valuable relatively, but perhaps harder to find in the noise.

When most jobs just want you to be a ticket completer, the cheaters will do just fine if they can do it faster. The rest of use will be considered slow and discarded. It's happening to me.
Yes, they can be ticket punchers more easily, kind of trained to do that. But there are certainly levels of achievement that are not as possible with such a foundation that lacks grounding and true understanding.

Do you mind elaborating here on what is happening to you? It seems worthwhile information to add to the discussions ongoing for this post.

The short of it is that the team just wants high throughput but doesn't care about improving the system health or process efficiency. I tend to consider multiple aspects of the work including those areas. But if you just want someone to turn out tickets, I tend to be slower unless the task is simple or repetitive. I have a disability and graying hair, so my options are limited. I'm going to fail my PIP later this month and I'll probably end up working at Walmart.
Hm, I see. Do you use a coding assistant? Do you see value in keeping up or your morale is diminishing? Can you change teams or positions or focus?
Hackers could like hacking outside their job for hobby but find job itself soul crushing. More like hackers and nerds that can withstand the corporate demand to grind will be left, rest get filtered. Plenty of talented people can be left outside the cog machine but cook up apps nobody but they care about
"If this weeds out the people who are just there for the paychecks, it might actually be a relief to get back to teaching students who genuinely want to learn about computing."

It's not going to work that way. I was genuinely interested and took many high level electives. I felt the program was very good 15 years ago at the school I attended. I also got an MSIS at a different school, but feel that one was not any more advanced than BS, just a faster pace and weirdly less coding. I did well for years at my job. Now it looks like I might lose my job and probably won't get another IT one. I will probably end up working at Walmart or something.

This is how I've been feeling through the whole situation. I got my current job at the bottom of the last slump the other year so it doesn't seem to be affecting me.

Still I've been careful to set my life up so I could go many years without employment if I had to. It's hard to trust the rest of the economy in general.

About 15 years ago when I started my degree there were both the “I want a good job” people and another crowd that I’d describe as having followed a thought process of “I like video games; I want to make video games; I should study comp sci”. At that time at least I think the video game crowd was even less equipped than the job crowd. Not to disparage video games, they are a majority of my free time, but those who were joining the field to _have fun_ are going to have an even harder time than those looking for work.
Lots of discussion about choice of programming language in the comments below.

- In principle, it should not matter at all, but there are practical reasons why one PL may be better than another in a particular school or context.

- But, all this "choice of PL" discussion is really a discussion about CS1. A CS degree has at least seven other courses -- assuming 1 CS course per semester -- and in practice many more than that. So, if you're going to ask questions about CS1, the question to ask is, "Does CS1 setup students to succeed in the advanced courses?" Classically, these were courses in compilers, operating systems, networking, and so on. These days, you can add distributed computing, machine learning, etc. (but don't subtract the classics).

There really is too much hand holding of university students nowadays. I don't think degrees are really equivalent to what they were thirty years ago. Back then the university was about weeding out the wasters and lazy folk who didn't study. College courses are meant to be hard for a reason. Don't get me started with that extra credit crap.
Thanks for sharing. Is this similar to what was attracting students to medicine/doctor (guaranteed position with high salary)? But the med-school-to-full-time-physician pipeline is long and can weed out. CS is a difficult subject, certain ways of thinking are difficult but certainly can be learned, like recursive thinking.

Did colleges expand their computer science departments or even just create them to meet the demand for the degree? The pipeline to possible employment with a CS degree is quite short, doesn't require residency and board-certification so it's a quicker route to employment, but then you are competing with peers with stronger backgrounds and educations and seasoned professionals for the same positions.

Salary isn't traditionally what motivates people to study medicine. It's prestige. The difficulty is part of the prestige, which is probably why they still do things like memorize long lists of cranial nerve names. I haven't heard that they have a problem with dropout rates.

A good CS education only gives you prestige with fellow nerds.

I actually think prestige is a contributing factor for CS as well. People assume you must be smart to be a software engineer, and FAANG companies are prestigious to normal people because they have name recognition. Definitely not on the same level as a Doctor/Surgeon/Lawyer or whatever but certainly could be more than a typical 4-year degree will get you. And I suppose there's also the fact that those companies were viewed very differently 10-15 years ago and now there is a lot more cynicism about big tech in general.
Absolutely, and the _prestige_ of being a CS person that has a high salary. Society admires those with wealth.
Yes, prestige, perception of self by others, but certainly salary and job guarantee are attractors to medicine. First hand anecdata from educators and doctors alike supports this.
I started my degree in 1999, and already then this was already a factor. I hope more articles like this are published, and people who aren't really interested in computing stop choosing this path.
I'd argue it is actually more of a broad trend i.e. the boom in computer science enrollment over the last 20 years has been driven mostly by people chasing a better return on investment in the increasing cost of the average four-year degree, and software pays better than the average four-year degree. I do think that college being cheaper on average would help at least somewhat with CS being such a popular major.