Alternatively many CS grads never end up working in/near the web stack and that requirement in no way better prepares them for their profession.
If you wanted to suggest that they be required to have a significant capstone project (a full stack system, a compiler or VM, an operating system (rudimentary or not), firmware/BIOS, HPC application, etc.) then I would agree but to say that all CS grads should be good web devs is rather narrow minded when looking at the value of a computer science curriculum.
Why not have a curriculum that focuses on the full stack?
The full stack consisting of assembly, compiler design, C, networking, operating systems, embedded development, data structures and algorithms, databases development and design (including an understanding of the algorithms/optimizations used).
At least one class in functional programming and at least one in
and OOP language.
And for all that is holy please teach classes where they have to do presentations and learn interpersonal skills and a few business classes. I am so sick of working with people who argue about technology but can’t come up with a business case for thier idea.
And then let them choose a “track” based on thier interests - after having for lack of a better term “career day” where people from the industry come in and give talks about what they do and the requirements to get a job there.
If that curricula means cutting out some core classes - so be it.
> The full stack consisting of assembly, compiler design, C, networking, operating systems, embedded development, data structures and algorithms, databases development and design (including an understanding of the algorithms/optimizations used).
> At least one class in functional programming and at least one in and OOP language.
I think it's pretty common for CS degrees to have all/most of this in scope already? At least I had all of it, with the exception of embededded development.
Yeah... maybe I'm out of touch (started undergrad in 2002) but... that sounds like a CS degree to me! Mine didn't cover embedded at all, but if you took the Advanced OS course, you ended up writing an x86 bootloader in asm at the start, which could eventually jump to main() for your scratch-built OS.
You are essentially describing the computer engineering curriculum that we have at Virginia Tech and I imagine a number of other schools have as well. Modern Computer Engineering curricula are more or less old school CS programs in that they focus on everything from user space and below.
At least from looking at Georgia Tech, there is a difference between the Computer Science curriculum and the Computer Engineering curriculum. The Computer Engineering curriculum seems more practical.
It’s often argued here that the purpose of a CS degree is “not to get you a job” but to “become a better citizen of the world” and if you just wanted to learn something to get a job “you should go to a trade school”.
> It’s often argued here that the purpose of a CS degree is “not to get you a job” but to “become a better citizen of the world”.
I can't recall ever hearing that argument advanced for CS degrees on HN (and I read a _lot_ of HN postings). Perhaps you're thinking of liberal arts degrees?
The usual rationale for CS degrees is that one learns the underlying theory behind the systems and tech stacks that they use, making them a more capable developer.
What's the point of a chemical engineering degree? It's to learn to be a chemical engineer, but it's not a trade school degree. Far from it.
And there's degrees in chemistry, for those whose goal is to study the way atoms interact with each other. That's different from chemical engineering, where the goal is to efficiently produce the desired molecules at scale, without blowing up the factory. Two different degrees, with two different focuses, in the same general area.
In the same way, I think that computer science needs to be a separate, different degree from software engineering. At the moment, CS is trying to be just one area, but I suspect that it's often inadequately preparing those who are going to go on to be software engineers - who are in fact the large majority of CS grads. (They may also be inadequately preparing those who intend to stay in theoretical computer science, but I have even less information about that.)
Getting a CS degree to get vocational training to be a developer is a pretty terrible idea in my view (and I have a CS degree) - having a physics or mechanical engineering degree is particularly relevant to being a plumber so would you expect a CS degree to help being a developer?
Some schools have pitiful results for what they say is a degree.