HACKER Q&A
📣 andrewstuart

What do you think should be taught in a great Computer Science degree?


For context, I took my son to university over the weekend to help him choose.

And I discovered that Computer Science degrees don't seem to teach quite what I would have expected.

What do you think should be in a great computer science degree?


  👤 b20000 Accepted Answer ✓
What did you expect?

I think the disconnect between what CS programs teach and how the real world operates is growing. Look at how the hiring process is broken. Anyone with a good CS degree should pass through that process. However, even if you are a really good engineer and graduated in a good CS program, there is no guarantee you will pass the interviews (primarily talking about the US market and in particular big tech). On top of that you have endless frameworks and tools for which the relevancy is a few years.

The question to ask is, do you REALLY want to study CS or are you just doing it for the money? When I studied CS I thought I would have "social standing" and would have a great career paying top dollar. Later on I realized there are lots of positions where people do not work as hard as engineers and where they make good money as well if not more than in a CS career. The exception might be if you have equity that suddenly becomes very valuable. But how many times does that really happen? Most startups go nowhere.

I thought having studied CS I would not just have to be an engineer. I think the reality is that that is what most people end up doing for the rest of their careers. And you might realize later on you don't actually like doing that every single day.


👤 enasterosophes
A strong computer science department would have enough different types of academics to support multiple undergraduate specializations. I think that means that a great computer science degree can't actually be pinned down to a single syllabus, because a single syllabus implies a lack of breadth and flexibility in the academic environment.

For the first two years, before specialization is locked in, I think the usual staples of at least two programming languages, and some mathematics and statistics leading into algorithms & data structures and machine learning (respectively) is sufficient.

Prescribe more than that and you close off flexibility. Some people going into CS will want to take a more theoretical route and will pick up more pure mathematics on the side, some more AI and machine learning, some more hardware-focused (maybe taking CS as an aside to a mechatronic engineering double-degree), and so on.

Can you explain more about what you expected and how it didn't match up?


👤 Ologn
I was a Unix systems administrator for many years, then went back to school to get a bachelors - a CS degree.

What they taught was good - theory of computation, graph theory, data structures and algorithms, (DBMS) databases, computer architecture etc. I took an AI class, not all that many years ago, but the field has progressed so fast, most of what I learned is no longer in vogue - we certainly weren't programming neural networks with weights and biases that used backpropagation.

It did strike me that some of the brighter seniors had no idea what git was, or even software version control. Applying early for summer internships is a must, or at least learning this type of thing after school.

As is often said, probably the least important thing to learn is whatever the current fad hottest computer language is. College is not a vocational school.


👤 leros
There are two philosopies for how to teach a computer science program: theory and job preparation.

I've found the more academic universities focus on teaching you the theory of computer science. They're not preparing you for the job market or even teaching you how to code well. You can technically learn computer science without ever coding. So in those programs, you need to use the assignments as excuses to learn how to program well and then get more experience through side projects and internships.

Other universities will focus more on job training. They'll teach you how to code and how to code well. They'll give you assignments that more mimic what you might do in actual development job.


👤 eimrine
CS content of Youtube minus rest of Youtube. I mean it is kinky to go to university just to learn some Javascript or whatever.

To answer your question more precisely, I consider the SICP as one of the most important book in my life and if you are asking about great course on the forum of Lisp lovers this answer got to be among others.


👤 cinntaile
Networking, Computer Architecture, Algorithms, Operating Systems, Concurrency, Databases, Real Analysis, Numerical Analysis, Discrete Math, Bayesian Statistics, Functional Programming, Machine Learning, Intro to programming, Computer Security

That about covers it for the first 2 years. There needs to be some room for electives as well!


👤 FerretFred
"Is what you think the end-user wants /actually/ what end-user really wants?"