3 ms·
Okay, so let me reach back to when I graduated many moons ago. I think I had one course on "parallel"(concurrent) programming. I had exactly zero courses on SQ
by cloudsec9 4y ago
Okay, so let me reach back to when I graduated many moons ago.
I think I had one course on "parallel"(concurrent) programming. I had exactly zero courses on SQL or relational algebra, although we did write a basic database. I had one course that MIGHT have touched on a bit of network programming.
So, academically, I would have had little or none of what you are considering is "foundational" CS knowledge.
I actually did learn SQL during a job I did during school, and I was fascinated with race conditions and mutexes so knew a fair bit about the theory of concurrency. And I loved learning about all kinds of protocols, like SMTP and Telnet and FTP, so I knew quite a bit about networking.
I think the disconnect here isn't that "students don't learn the fundamentals", it's that you think the fundamentals are what they need to "do work" on day 1. Back in the day, University was supposed to train you to THINK in your field, and so things like data structures and algorithms, yes.
And, I have to say, it has done well for me. I started as a C/C++ programmer, then moved to Java, worked in PHP and have now been writing a lot of Python. I've helped with C#, Visual Basic and a number of other languages.
And if tomorrow I need to use Go, or Rust, or $whateverLanguageOfTheWeek it is, I'll be able to. I understand what can make a program run fast or like a dog.
If someone can do all of the work through 3/4 years of university, they should be able to learn and do a large variety of tasks.
Nowadays, it might be that a CS program requires some or even all of the courses you mention in their study. But do you expect someone who took this for 1 of perhaps 20 courses to be an expert at them?