News for hackers. Stuff that matters.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @02:04AM (#35227840)
CS is about Computer Science, not programming. The foundational courses should be in math, physics, statistics, calculus, proofs, algorithms, complexity, type systems, theorems, computability, etc.

Learning how to use SQL is more of a trade school course.

I have a BS, Bachelor of Science. The foundational classes were math, math, math, math, and more math. There were no classes in how to operate a machine tool. I befriended the guy who ran the machine shop that built apparatus for the scientists, and he taught me how to run the machines. But that wasn't a class, it was just something I did on my own initiative.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by bruce511 on Monday March 20, 2023 @02:14AM (#35227910)
>> Learning how to use SQL is more of a trade school course.

While SQL the language is more "trade school", the original poster mentioned;

>> Database Systems (relational algebra, SQL)

Certainly I would expect a CS course to cover databases, in the sense of 3rd-normal-form etc, sorting, searching, indexing and so on. I wouldn't expect them to necessarily be proficient in any one database product, but I would expect them to understand different ways of storing data, and how to design a "data layout" based on good practices (again 3rd normal form etc).

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @02:29AM (#35227988)
I learned the nuts and bolts of engineering on the job, and from reading the (absolutely delightful) Boeing design manuals, where they distilled the lore of how to design airliners in a series of manuals.

But in my long career, I've never encountered anyone who learned math on the job.

Math was my superpower at work.

But since I was not a CS major, I never properly learned the academic side of CS. I run into this deficit now and then, and I'm not proud of it. Andrei Alexandrescu joined me on the D project, and had the academic chops, which was greatly appreciated by me.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by tzs on Monday March 20, 2023 @02:50AM (#35228114)
> But since I was not a CS major, I never properly learned the academic side of CS.

Would you have been a CS major if that had been an option at Caltech?

For everyone wondering why CS would not have been an option, at the time Walter was at Caltech they didn't offer CS as an undergraduate major. They did have a CS department which did offer some undergraduate CS classes but it only offered graduate degrees. Undergraduates interested in CS typically majored in math or physics or engineering and took the undergraduate CS courses in addition to the coursework of their major.

I don't remember when they started offering an undergraduate CS degree. I think it was not too long after I graduated (class of '82), which was a couple years or so behind Walter.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:14AM (#35228245)
> Would you have been a CS major if that had been an option at Caltech?

No. I wanted to design airplanes, jet engines, rockets, etc. I had a secondary interest in electronics, and a tertiary one in programming. I wasn't that interested in the academic side of computing.

P.S. nice to see other techers here!

Re:Ask HN: Why do many CS graduates lack foundational knowle... by ghaff on Monday March 20, 2023 @09:21AM (#35231093)
By way of context, at MIT (which I'm much more familiar with), there was effectively a CS major out of the School of Electrical Engineering and Computer Science, but there weren't PCs and computing was pretty much limited to Multics in the AI lab. (There was a mainframe with punch cards that you could get a limited account for using with the other branches of engineering. I took a Fortran course then I don't think I touched a computer for the rest of my time as an undergrad.)

There wasn't widespread access to computers at MIT until Project Athena. So CS was historically mostly not hands on. And that's somewhere where CS was in the engineering school. At many schools, it was part of the math department.

So, there's a strong academic tradition of CS being more about math than programming. Even the current CS intro course at MIT is mostly about algorithms and you're pretty much expected to pick up Python on your own.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by vidanay on Monday March 20, 2023 @07:55AM (#35230251)
> reading the (absolutely delightful) Boeing design manuals

Authored by Dr. Jan Roskam perhaps?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by newswasboring on Monday March 20, 2023 @10:10AM (#35231742)
Are these available anywhere public?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by vidanay on Monday March 20, 2023 @06:17PM (#35239579)
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:12PM (#35237034)
I didn't see an author. But the different sections were clearly done by different people.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Tuesday March 21, 2023 @03:18PM (#35251137)
Roskam's books are decades newer!
Re:Ask HN: Why do many CS graduates lack foundational knowle... by platzhirsch on Monday March 20, 2023 @02:22AM (#35227948)
Thank you, this is indeed what I meant and was covered by our curriculum in the third year. SQL was merely a practical example.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by ilikehurdles on Monday March 20, 2023 @09:58AM (#35231569)
SQL was probably only one semester’s course over a 4+ year college career. They probably continued to interact with SQL here and there in some other classes, but would rarely encounter needing more than cursory, googleable knowledge to get the job done.

On top of all that, it’s likely their first (or close to first) time in an interview setting. Nerves have a way of making you forget a lot of things.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by peyton on Monday March 20, 2023 @02:19AM (#35227933)
I don’t think top CS programs teach that. Maybe they’ll have a course on implementing databases.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by shusaku on Monday March 20, 2023 @03:36AM (#35228404)
In the spirit of the above poster, I have to say as an undergrad we spent a lot of time on relational algebra rather than SQL, even though the latter is surely more practical.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by bobthepanda on Monday March 20, 2023 @04:36AM (#35228777)
Honestly, a lot of university curricula are, at best, out of date, since often academics are not necessarily incentivized to learn the latest and greatest of programming.

I remember entering a Java course, where the professor specifically said to write Java 6, even though it was EOL and Java 8 had been out for a while, and you would get points knocked off if you used any "fancy" Java 8 stuff they didn't know.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by bawolff on Monday March 20, 2023 @04:58AM (#35228925)
Programming really hasn't changed much fundamentally in the last 20 years. I think its a good thing university doesn't chase the current trend. The knowledge would be quickly outdated. They should teach the stuff that isn't flavour of the week but common to everything.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alpaca128 on Monday March 20, 2023 @05:36AM (#35229198)
Some things do change, though, and courses which involve specific technologies should at least be up to date to a point where people aren't required to use Windows XP when every laptop runs Windows 10.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by zerkten on Monday March 20, 2023 @11:49AM (#35233355)
I kind of get what you mean, but you don't provide a good example. The first question is what are the specific technologies and why are they involved? If you take some outdated version of Java, this could be interpreted as teaching you to be a Swing developer, or how to apply Java for user interfaces and learning some fundamental design patterns.

Whether it is the former or latter matters a lot. Oftentimes the people taking the course don't appreciate which it either which is problematic. In your example, someone could be given a really good desktop programming class on Win32 whether they used Windows XP or Windows 10. The success of this is orthogonal to the tools at hand really. It is what the professor and/or students make of it.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by bobthepanda on Monday March 20, 2023 @08:51PM (#35241098)
In general, I find that many fresh college folks (new hires and interns alike) struggle with Java streams. Streams and stream adjacent things like Optional remove a lot of tedium and footguns from older Java code styles, and unfortunately learning them tends to be a speed bump for anyone onboarding to the code base from college, because it’s just not covered, even in a Java algos course where I believe they’d be fairly relevant.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by zelphirkalt on Monday March 20, 2023 @05:09AM (#35229003)
Had a similar thing with a guy who taught Android programming and was stuck on Android 2, while Android 5 or so was out. He did not know about specifying button handlers in the XML of the view and all kinds of stuff. They did not manage to set up the IDE properly for the exam, so that logging and installing the written app on a phone did not work either. Got out of it with a bad grade, because he did not see his Android 2 shit in my solution.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by nikau on Monday March 20, 2023 @07:47AM (#35230175)
This is why courses should focus on fundamentals not flavour of the month stuff.

Learn assembly, then learn C, then code up a small OS and learn semaphores and stacks and how a computer actually works.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @05:15AM (#35229043)
> even though it was EOL and Java 8 had been out for a while,

What's wrong with that?

You're supposed to cover the basics in intro to programming courses, and typically Java is not outright taught in college, and instead it's object-oriented programming using a random OO language, which more often than not is Java. Do you need to use Java20 to learn inheritance?

Also, unless you expect to work exclusively on greenfield projects, the bulk of any developer work is maintaining legacy applications. I still see an awful lot of projects in java 8 and only a few in java 11. Insisting on the latest and greatest java release makes as much sense as pressing to cover Lombok or Kotlin.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by bobthepanda on Monday March 20, 2023 @05:32AM (#35229167)
I mean, Java 8 had the lambdas and FP which I would argue are pretty important in modern Java.

But like, that’s the rule. I took a web class in college and the professor was teaching how to use <i> and <b> tags, which are no longer supported as part of the standard. (Not to mention that these days it’s not really helpful.)

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @07:19AM (#35229959)
> I mean, Java 8 had the lambdas and FP which I would argue are pretty important in modern Java.

What role do you believe lambdas and support for functional programming play in object-oriented programming courses?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @07:43AM (#35230147)
To prove two points: First that forcing objects everywhere makes things really complicated compared to FP, second that under the hood everything can be shoehorned to object model.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @07:49AM (#35230186)
> First that forcing objects everywhere makes things really complicated compared to FP

Pointless. They are OO courses, not FP courses. You have FP courses already covering that.

> second that under the hood everything can be shoehorned to object model.

You do not need lambdas or FP for that.

So, what's the point of lambdas and FP in a OO course?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by jen20 on Monday March 20, 2023 @09:11AM (#35230972)
Frankly if you want to teach object oriented languages, you should be teaching Smalltalk or Objective C, not things derived from C++. Message passing is the defining feature of object orientation.

If the intent is actually to teach polymorphism and encapsulation, both of those can be done in raw C.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @10:18AM (#35231841)
The question is then, why should object oriented languages be taught? It seems to me that for last 25 years or so the true object orientation has been a historical curiosity that inspired polymorphism and encapsulation and only interest for people who want to argue that this and that language aren't true object oriented languages.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by jen20 on Monday March 20, 2023 @11:22AM (#35232857)
Indeed: I wouldn’t bother. Teach procedural and functional programming to undergrads as primary focuses.

However, polymorphism and encapsulation have existed for much longer than “OO” languages. What is stdout? Seems pretty polymorphic to me. How does one gain access[1] to a variable declared in a .c file that is not exposed via the header. That’s encapsulation…

[1]: there are of course ways, but they are often also true of private members of class instances too.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @12:00PM (#35233545)
Good point. I was thinking about the C++/Java meaning of the words because that way of doing things has proved to be useful but they're not the only way indeed.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by jen20 on Monday March 20, 2023 @09:08AM (#35230934)
Aren’t lambdas implemented as objects with common interfaces in Java?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by bobthepanda on Monday March 20, 2023 @08:53PM (#35241115)
I don’t just see this behavior in OOP style courses.

Most algos classes would probably benefit from streams, and there are many of them being taught in Java for reasons unrelated to OOP. Universities often stick to one language for much of the programming curriculum.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by DrewADesign on Monday March 20, 2023 @08:47AM (#35230713)
As an aside, they are once again part of the standard.

https://webmasters.stackexchange.com/questions/27693/should-...

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alpaca128 on Monday March 20, 2023 @05:52AM (#35229317)
> Do you need to use Java20 to learn inheritance?

Do you need to prohibit Java 20 to teach inheritance? Working with an outdated version as basis is fine, not accepting newer versions for no reason is something different imho.

> I still see an awful lot of projects in java 8 and only a few in java 11.

Sure, but that doesn't mean knowledge of newer features should be discouraged.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @07:17AM (#35229947)
> Do you need to prohibit Java 20 to teach inheritance?

Java20 did not introduced inheritance, nor did it introduced any OO concept. Java20 adds no value to those learning OO. If you're writing java code but are not using any Java20 feature, you are not writing Java20 code.

> Working with an outdated version (...)

It is not outdated. You are not using any feature. You're just succumbing to the misplaced belief that new means more value. It doesn't, specially when the only thing that you get is more complexity.

> Sure, but that doesn't mean knowledge of newer features (...)

Repeat after me: Java20 adds no OO feature. You do not have to use Java20 to learn OO. OO courses are not java courses. Do you understand this?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alpaca128 on Monday March 20, 2023 @09:14AM (#35230998)
> It is not outdated. [...] You're just succumbing to the misplaced belief that new means more value

Sure, technically you can still teach HTML in Internet Explorer 6 and OOP in Java 7 or something, but that has no added benefit and is actually more difficult to set up nowadays. And you can't deny that old versions are outdated when they don't even receive security updates anymore.

> the only thing that you get is more complexity.

What part of OOP basics got more complex in Java? And why teach Java at all if simpler OOP languages exist? Not to mention that avoiding complexity can actually be counterproductive for teaching. As an example, I got more than 5 years of Java-focused programming education and afterwards I still didn't know what a classpath is and couldn't write a single line outside an IDE because nobody wanted to expose complicated stuff to the students. Instead of forbidding students from using a newer Java version one should focus on the actually important part.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by layer8 on Monday March 20, 2023 @01:27PM (#35235207)
The reason is it creates extra work for the teachers (having to keep up with newer features, bigger diversity of solutions they receive) without much benefit regarding the substance of what they need to teach.

Some universities choose a more “exotic” but more stable programming language for that reason (like SML or Scheme or Smalltalk), but then also get criticized because it’s not a major industry standard.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by daveslash on Monday March 20, 2023 @11:24AM (#35232897)
My CS curriculum (15+ years ago) offered Databases as an upper-level elective. Another upper level elective was Compilers. Another was AI. There were other upper-level electives, and any student in the program had to take a few but not all of them. Any student in the program had the option to take the Database class, but not all did.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by zerkten on Monday March 20, 2023 @11:40AM (#35233221)
My CS undergrad in the UK circa 2001 covered the items you mentioned in the first course. The second course was similar to http://www.inf.unibz.it/~artale/DB2/db2-course.htm. With UK degrees there is limited ability for students to pick their own adventure and miss these when they choose a CS degree at a reasonable university.

I personally don't agree with the purist approach that CS degrees should just be maths. There needs to be some minimal application at the very least and different universities will have different maths-CS-engineering boundaries based on how they've evolved.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:17PM (#35237109)
There is some overlap between programming and CS, sure. But Computer Science is more a branch of mathematics than programming.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by srcreigh on Monday March 20, 2023 @12:48PM (#35234474)
In UWaterloo CS there's at least two database courses. One covering SQL/querying/normal forms, another looking at how DBs are implemented.

They are not required courses. I agree with GP that DBs are not fundamental to CS in any way. It's trivial with other building blocks of CS though: predicate logic, algorithms, data structures. Set theory. Discrete math basics (also fundamental CS) gives lots of examples of normal forms (prime decomposition, mod p arithmetic, etc).

Re:Ask HN: Why do many CS graduates lack foundational knowle... by SkyBelow on Monday March 20, 2023 @02:30PM (#35236321)
I think this is an important point. Knowing how to specifically create a table in X flavor of SQL is something that a new grad can easily look up. Knowing when to consider normalizing data, why one would want to normalize, and why one wouldn't want to normalize, is more of what I would expect someone to learn in college. It isn't something that can be looked up using a quick google unless one already knows it and just forgotten the details.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by herewulf on Monday March 20, 2023 @02:30AM (#35228001)
It needs to be more like a trade school. The vast majority of jobs call for workers who can create and maintain programs that actually do things, not just theory.

I've encountered far too many CS interns and grads who couldn't actually write reliable, non-spaghetti code. They also typically write commit messages that consist entirely of "Updated $THING" (no shit, I can see that from your diff), nothing about the why.

My perspective may be slightly skewed from being called in as a consultant to fix the software these "computer scientists" have been hacking on, but I encountered a lot of these people when I was a undergrad student also.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @02:32AM (#35228018)
When hiring a newly minted undergrad, you should expect to need to do some mentoring on the nuts and bolts of programming. CS is not about lucid commit messages.

If you want a trade school grad, hire one from a trade school. There's nothing wrong with that.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by TheSpiceIsLife on Monday March 20, 2023 @03:19AM (#35228279)
Where are the computer programming trade schools?

TasTAFE offers a Cert III in Information and Communications Technology. This looks to be one third tech support, one third networking and server operations, and one third python / web / CSS. So not really much programming.

A programming trade school to Mr would look like: four years on the job as an apprentice, full time, at some discounted pay rate.

Two weeks four times a year at a training institution, away from the demands of the job, where theory and practice are taught.

My trade certificate (metal fabrication) is a Cert III, my trade school included a fairly wide variety of subjects, both theory and practical.

The employer would be required to give progressively more difficult tasks, and doing apprentice swaps with other businesses to cover industry experience if in-house doesn't provide opportunities for key requirements.

Is anyone, anywhere doing that?

I help train two apprentices every year here in metal fabrication. It's not that difficult, but few developing foetuses are borth wielding a welder. I mean the trade is not difficult, training people is hard.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by xorfish on Monday March 20, 2023 @03:29AM (#35228360)
> Is anyone, anywhere doing that?

You can do it in Switzerland:

https://www.berufsberatung.ch/dyn/show/1900?id=7671

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:25AM (#35228328)
I'm sorry, I have no knowledge of current programming trade schools, other than the occasional blurb about "coding boot camps".
Re:Ask HN: Why do many CS graduates lack foundational knowle... by chris_wot on Monday March 20, 2023 @04:22AM (#35228671)
If this is the Australian TAFE, it’s great but governments undervalue it and don’t fund it properly.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by exnihilo21 on Monday March 20, 2023 @08:35AM (#35230598)
Most Universities of Applied Sciences in the Netherlands, where you need to take 2 6 month apprenticeships before being allowed to graduate from a 4-year bachelor degree, and most courses are programming related.

When finished you can continue for a master degree at a university, but have to take 1 year to get caught up on the theory you missed by not doing a bachelor degree on a university level.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by 908B64B197 on Monday March 20, 2023 @01:27PM (#35235206)
> If you want a trade school grad, hire one from a trade school. There's nothing wrong with that.

If someone wants a person with good CS fundamentals and an idea of how to write code in a non-trivial codebase (so commit messages and an idea of concrete SQL and not just "I've proven this expression is correct but never ran it") they should look at Computer/Software Engineering programs, or at least select CS candidates from schools where the program incorporate real software development.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by fsckboy on Monday March 20, 2023 @03:06AM (#35228201)
did you study CS? not sure if you are criticizing CS students cuz "back in our day, we did CS in the snow, barefoot", of if you're criticizing the CS curriculum because you don't think it's necessary because you haven't needed it and they don't know what you know.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by csomar on Monday March 20, 2023 @03:19AM (#35228284)
> It needs to be more like a trade school. The vast majority of jobs call for workers who can create and maintain programs that actually do things, not just theory.

These usually are the worst "programmers", in my experience. And I was one as I didn't go to CS school and was mostly self-taught. Lacking the basics of CS, you are just a code monkey.

> I've encountered far too many CS interns and grads who couldn't actually write reliable, non-spaghetti code.

An intern is an intern, I guess.

> They also typically write commit messages that consist entirely of "Updated $THING" (no shit, I can see that from your diff), nothing about the why.

You should have a an employee handbook and a coding style. Lazy people are everywhere, however.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by wankle on Monday March 20, 2023 @11:56AM (#35233485)
> These usually are the worst "programmers", in my experience. And I was one as I didn't go to CS school and was mostly self-taught. Lacking the basics of CS, you are just a code monkey.

That's the type of condescending, discriminatory bias that having a degree affords, I guess.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by layer8 on Monday March 20, 2023 @01:37PM (#35235377)
The GP just said he doesn’t have a degree.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by wankle on Monday March 20, 2023 @01:57PM (#35235735)
They used was several times, past tense, indicating they potentially do have a degree now; if not, their prose sounded snobbish to me either way, hence my comment.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by vkk8 on Monday March 20, 2023 @03:27AM (#35228345)
Assuming the only purpose of universities is to serve the job market. I'd argue that the primary function of the university system is to transfer the collective human knowledge forward. The fact that some of it is sometimes needed in jobs is a secondary effect.

But you're right that there should be schools that teach the practical programming skills. But it's the the trade schools that should be developed towards this goal, not universities.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by re-thc on Monday March 20, 2023 @03:52AM (#35228504)
University aim to serve the education market i.e. people that want to learn or assume they can get a job afterwards. They don't serve the employers or those that are looking to hire.

Lots of degrees have no pathway to a job or career.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by reillyse on Monday March 20, 2023 @04:11AM (#35228607)
There is a huge divide between Europe and the US on this front. Because degrees are so expensive in the US the expectation is that you are going to pay for that with the shiny job you get as a result of the degree.

In Europe where third level is far cheaper, it's more looked upon as continuing education. The way in the US people look at high school. Sure you'd like to get a job after, but it's really just a stepping stone to your career and not a huge financial investment that needs to be repayed.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by re-thc on Monday March 20, 2023 @04:57AM (#35228919)
Either way that doesn't mean it's made for "the job market". All it entails is you were sold a false premise just like how bootcamps promise of 6 figure salaries after a week of training...

It's still made for those that want to be educated.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by exnihilo21 on Monday March 20, 2023 @08:41AM (#35230652)
>Either way that doesn't mean it's made for "the job market".

In the Netherlands the have, for example, the Hoger Beroep Onderwijs (HBO), which translates to Higher Professional Education. It is exactly tailored for the job market.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by re-thc on Monday March 20, 2023 @09:28AM (#35231198)
> HBO

HBO sounds more like a vocational system that provides diplomas vs a bachelor degree in reference to universities in this discussion.

This type of system definitely exists in many places but I just assume it's out of scope as we're talking about in reference to CS graduates i.e. bachelor courses.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by lmarcos on Monday March 20, 2023 @03:34AM (#35228388)
> It needs to be more like a trade school. The vast majority of jobs call for workers who can create and maintain programs that actually do things, not just theory.

Sure, but those things can be learned on the actual job. So after a few years, the CS student knows both the theory (because of uni) and the practice (because of work)... Whereas someone who only learnt the practical stuff, well, usually lacks the theoretical foundations.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by hdhdhend on Monday March 20, 2023 @03:42AM (#35228446)
> Sure, but those things can be learned on the actual job. So after a few years, the CS student knows both the theory

So a CS degree is useless in industry. By the time you learn how to build things that work, you know how things work.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by JCharante on Monday March 20, 2023 @03:44AM (#35228453)
I disagree. Theory is harder to self learn whereas anybody can learn about putting together a CRUD app w/ React & Postgress. The students lack experience with the practical/applied side of CS because they lack the interest in it. Anyone else would have done side projects where they could have applied what they learned (my code got substantually better after I went to college).
Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @04:55AM (#35228905)
> It needs to be more like a trade school. The vast majority of jobs call for workers who can create and maintain programs that actually do things, not just theory.

This bears repeating.

It's important to learn how to deal with asynchronous and concurrent and parallel programming, but it's more important to have a firm grasp of message-passing and event-driven architectures.

Rote learning the computational complexity of obscure algorithms no one uses does not hold a candle to knowing how to write clean and testable code, and design a component to accommodate changes.

This computer science bullshit starts to feel a lot more like an exercise in ladder-pulling than actually prepare and assess an individual's ability to do meaningful work.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by jart on Monday March 20, 2023 @05:19AM (#35229071)
GPT4 can write clean and testable code. What it can't do are things like this:

    // rewrite this function so it's portable and doesn't use uint128_t
    uint64_t lemur64(void) {
      static uint128_t s = 2131259787901769494;
      return (s *= 15750249268501108917ull) >> 64;
    }
In order to do that, you have to have a little computer scientist in you. Stuff like "asynchronous vs. concurrent vs. parallel programming" is the programming equivalent of a liberal arts degree. Who here will rise to meet my challenge? It's only doing a multiply and shift.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @05:39AM (#35229215)
> GPT4 can write clean and testable code.

Software developers aren't paid to write code. They are paid to deliver value.

Your code delivers no value whatsoever. Many masters and PhD thesis are boiled down to a shareable library or even function call. You might feel clever for coming up with it or by knowing some trivia behind it, but ChatGPT can easily spit it out negating all the value you believe you were able to create.

There is no value in something being hard. There is value in delivering value.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by jart on Monday March 20, 2023 @06:02AM (#35229393)
And who identifies value? Is it the software developers? And why would the identifiers of value trust people who can't multiply and shift to be the ones responsible for delivering that value? That would be like Google hiring engineers who only got good because they're good at using Google. It would have been a better look if you had solved my challenge before using it as a platform.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by KronisLV on Monday March 20, 2023 @06:44AM (#35229700)
> And who identifies value?

I'm fairly sure it's the people that pay our salaries and choose to keep us employed while we do whatever they need to, based on their perception of our output and how the needs of the customers/users are met.

Will ChatGPT and other solutions like that be helpful with the complex, low level stuff? Perhaps, sometimes - depending on how explicit you'll be with your prompts, but more knowledge about what and how to ask will be necessary and even then good results aren't guaranteed per se.

But will they help out a lot of developers with common, well known tasks and problems, for the majority of developers whose job consists of creating a few RESTful endpoints, maybe a database migration and hooking it up to React? I'm inclined to say yes a bit more confidently.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @07:40AM (#35230121)
> And who identifies value?

For starters, if you can't argue what is the value then none can fill in the void in your reasoning.

Secondly, software developers have as part of their job description the task of finding solutions to problems. If they find solutions to problems that don't involve or require whatever trick you have in mind, that tells you what is it's value.

Thirdly, did you ever saw any job advert explicitly requiring prior knowledge of any trick you have in mind? Or do you see ads for the ability to solve problems with a pre established software stack?

> who can't multiply and shift t

Tell me, how many open positions have you ever saw whose main ask was "can multiply and shift"? Zero.

> That would be like Google hiring engineers who only got good because they're good at using Google.

No, it would be like Google hiring people without any CS or IT degree who were good at software development but rejecting PhDs who had nothing to offer other than their little trivia on stuff no one cares about.

You know, reality.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:22PM (#35237200)
> And who identifies value?

The person paying for it with their own money.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by barnabee on Friday March 31, 2023 @07:53PM (#35395394)
To paraphrase: hackers write code.

We don’t do it because we’re paid for it[0]. If that’s your primary motivation maybe this is the wrong website.

[0] sure, [too] many people are in tech primarily to make money, but it’s a bit sad.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by deanmen on Monday March 20, 2023 @04:04PM (#35237794)

    uint64_t lemur64(void) {
      static uint64_t a = 2131259787901769494ull;
      uint64_t b = 15750249268501108917ull;

      uint64_t a_lo = a & 0x00000000ffffffffull;
      uint64_t a_hi = a >> 32;
      uint64_t b_lo = b & 0x00000000ffffffffull;
      uint64_t b_hi = b >> 32;

      uint64_t a_x_b_hi = a_hi * b_hi;
      uint64_t a_x_b_mid = a_hi * b_lo;
      uint64_t b_x_a_mid = b_hi * a_lo;
      uint64_t a_x_b_lo = a_lo * b_lo;

      uint64_t carry_bit = ((0x00000000ffffffffull & a_x_b_mid) +
                        (0x00000000ffffffffull & b_x_a_mid) + (a_x_b_lo >> 32)) >>
                       32;

      uint64_t multhi =
      a_x_b_hi + (a_x_b_mid >> 32) + (b_x_a_mid >> 32) + carry_bit;

      return a = multhi;
    }
Re:Ask HN: Why do many CS graduates lack foundational knowle... by blacklion on Monday March 20, 2023 @05:55AM (#35229342)
Other way around. Universities should train people who want to work in science/academia. Trade schools should train people who want to work in industry.

Employers MUST NOT require university degree where trade school is sufficient (99% of positions in industry).

Re:Ask HN: Why do many CS graduates lack foundational knowle... by screwturner68 on Monday March 20, 2023 @08:53AM (#35230772)
College does not need to be more like a trade school, that's what trade schools are for. If we need to churn out a gaggle of programmers the boot camp model has worked for years, Accenture used to push hundreds of college grads through their program in the 90's and out popped VB programmers. Now dozens of places provide the same service at a cost and in 12 short weeks you can become a "full stack" programmer. None of these people have a clue what is going on under the curtains but most run of the mill programmers don't need to know what is going on under the curtains. If you are interested in how things work and why they work that way going to a university and studying CS might will that need, but it involves a lot of math and other classes that you will likely never use in a workplace.

This is just a simple misunderstanding of what college is for, expanding one's knowledge for the sake of expanding one's knowledge -being a good programmer is not the intent but it might be a by product.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:21PM (#35237172)
Interestingly, people who are great at CS math are not always very good at programming.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @02:19AM (#35227936)
How is computer science not programming? The vast majority of CS research papers are about programming.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alex_sf on Monday March 20, 2023 @02:37AM (#35228048)
CS research papers are about programming in the same sense that physics papers are about rockets.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @02:41AM (#35228076)
If the only thing you could do with physics was build rockets, then physics would be akin to rocket building. There is no such thing as computers without programming. That CS isn't about programming is such an absurd perspective. Even if you consider that some CS research is mostly focused on hardware, the vast majority of CS research is about software. The vast majority of CS research is about writing programs.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by grumpyprole on Monday March 20, 2023 @03:19AM (#35228282)
> There is no such thing as computers without programming.

"Programming" in industry has a very narrow definition though.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by AYBABTME on Monday March 20, 2023 @02:50AM (#35228111)
Algorithms without computers (in the "plastic box with CPU+memory" sense) are definitely a thing. Computers in the end, as we experience them everyday, are just one particularly manufacturable manifestation of Turing machines. A bunch of stuff in life and nature is amenable to algorithmic treatment. "Algorithms to live by" is one popular example of that aspect of computer science applied to life.

Programming is just a way to write down a mechanism. A mechanical computer would be "programmed" quite differently than by writing code in a text editor.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @03:25AM (#35228326)
Algorithms are programs. Computing is running an algorithm, the program. Computing is programming! The Turing machine was a theoretical concept created to prove things about whether we could program a machine to solve a certain class of problems.

It was stated above that 'a function is effectively calculable if its values can be found by some purely mechanical process'. We may take this statement literally, understanding by a purely mechanical process one which could be carried out by a machine. It is possible to give a mathematical description, in a certain normal form, of the structures of these machines. The development of these ideas leads to the author's definition of a computable function, and to an identification of computability with effective calculability. It is not difficult, though somewhat laborious, to prove that these three definitions [the 3rd is the λ-calculus] are equivalent.

— Turing (1939) in The Undecidable, p. 160

Computer science is most definitely the science of programming machines (computers). It seems ridiculous to me to say CS is not the study of programming. Does CS involve other disciplines like math and physics? Yes. Of course. But it uses math and physics towards the end of programming a machine to carry out the programs.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @04:49AM (#35228869)
You’re making pretty strong claims and passing them off as fact. It doesn’t feel like a discussion and I think you’re harming the discourse.

Let’s consult Wikipedia:

Computer science is the study of computation, automation, and information.[1][2][3] Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (including the design and implementation of hardware and software).[4][5][6] Computer science is generally considered an academic discipline and distinct from computer programming which is considered to be a technical field.[7]

It directly contradicts the narrative you’re peddling. Please, listen to people trying to explain the nuance to you and actually engage. Don’t just keep repeating the same misconception ad nauseam.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @07:32AM (#35230055)
Sure, let’s consult Wikipedia:

“A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations (computation) automatically”

“Computation is any type of arithmetic or non-arithmetic calculation that follows a well-defined model (e.g., an algorithm)” AKA a program.

So computation is executing a program. And computers are machines which execute programs.

Turing and the Church-Turing thesis define computability as whether something can be expressed as a program (an algorithm).

Computer science involves math, information theory, and other disciplines insofar as they pertain to programs and programming.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by arethuza on Monday March 20, 2023 @07:58AM (#35230279)
Analogue computers can handle certain classes of problems very nicely and they don't follow "sequences of arithmetic or logical operations"?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @08:15AM (#35230416)
Yes, analog computers are very interesting. Though they typically do include arithmetic operations. They were often programmed with patch bays and the program is the patch bay configuration. So the programming was still discrete.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @12:08PM (#35233681)
Wikipedia is literally telling you there’s a difference between the abstract study of the logic that underpins how we approach designing and programming computers, and the actual tools and processes used to do so, and you’re just ignoring it. IDK how else to help you.

Nobody is arguing that computers don't compute. Why are you stuck on that minutia?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by Koshkin on Monday March 20, 2023 @07:48AM (#35230183)
> Algorithms are programs.

This is patently incorrect. An algorithm is an idea, whereas a program contains a concrete representation (implementation) of one or more algorithms executable on a computer.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by tylerchr on Monday March 20, 2023 @02:21AM (#35227944)
Have you read a lot of biology papers? Are they all about operating microscopes?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @02:24AM (#35227968)
We're not talking about biology. There is no such thing as computers without programming.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @02:30AM (#35228003)
Try to prove your type system is sound without the academic math.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @02:32AM (#35228020)
A type system is an aspect of programming. I would hope a CS course covers type systems.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @02:36AM (#35228037)
Proving something about a type system requires zero expertise in programming, debugging, git, Linux, C++, etc. And expertise in programming, debugging, etc., is of zero use in attempting to prove something about the type system.

As has been pointed out to me several times by CS academics, I could stand taking a course in type theory. I have a good intuitive sense about it (likely from my math background), but have no idea how to prove something about it.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by joshuamorton on Monday March 20, 2023 @03:21AM (#35228295)
A type system is an aspect of a logical system. You can have typed boolean algebras, I don't think anyone programs in those though.

A CS courseload certainly doesn't (and certainly not in the required selection of courses) cover soundness of a language. Even my theory-focused classload only covered automata up to proofs of regularity etc. This is, sort of, step 0 in soundness-proving methodologies, but it's only step zero.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @03:40AM (#35228427)
The purpose of a type system is to ensure the correctness of programs. That's what they are, that's why they were invented, that's why they were studied. That CS involves math doesn't change the fact that its about programming.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @04:19AM (#35228658)
You need to learn some history. Or at least cite your claims.

We use type systems to help abstract patterns of data into logical constructs that can be reasoned about. They are logic systems with grammar that describes relationships between axioms and constructs.

Seriously, go read a textbook and then we can pick this discussion up. Wikipedia has a good overview.

https://en.m.wikipedia.org/wiki/Type_theory

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @06:28AM (#35229579)
Ah, yes. Type theory originates before programming. Type theory only has relevance to computers insofar as it’s used to prove things about programs. Type theory in the context of computing is about programming.

We don’t call set theory and category theory “computer science” unless it’s about programming computers.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by joshuamorton on Monday March 20, 2023 @06:50AM (#35229755)
No, I mean that's an application yes, but I'd still call Alonzo Church a computer scientist and his work theoretical computer science.

Much as how people who study computability are computer scientist, even though none of the asymptomatic improvements to matrix multiplication since 1990 are even remotely relevant to any kind of real-life program.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by joshuamorton on Monday March 20, 2023 @06:41AM (#35229680)
That's one use, yes, but it isn't the only use. And it's certainly not why they were invented

Typed lambda calculus was formalized before the first programmable computers, and it's relation to programming wasn't clarified for another 20+ years (and real type systems don't really start to appear in programming languages for another decade after that afaik).

Re:Ask HN: Why do many CS graduates lack foundational knowle... by Koshkin on Monday March 20, 2023 @08:05AM (#35230333)
This is a narrow view on types; for example, types also help the compiler to produce optimized code. In general, they assist reasoning about and understanding the program.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by tayo42 on Monday March 20, 2023 @03:10AM (#35228227)
What is an unsound type system. Why and how is it relevant for programing?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:20AM (#35228293)
I can't give you a mathematical definition of it, but my intuitive one is that an unsound type system is a collection of kludges. It's relevant for programming because the language winds up with all kinds of ugly edge cases where things just don't line up right.

With a sound type system, you can do things like compose a new type out of other types, and it will work consistently (not produce weird edge behaviors).

For example, C's `void` type introduces anomalous behavior. A function returning `void` is not composable, e.g.:

    void foo();
    void v = foo();
would work in a sound type system, but does not work in C. You'll see it in the compiler implementation because it's a special case that appears over and over.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by Koshkin on Monday March 20, 2023 @08:00AM (#35230297)
Isn’t that why some other languages explicitly draw a distinction between a function and a procedure? I think ‘void’ was introduced in C to do the same thing, implicitly (because omitting the return type does not achieve that).
Re:Ask HN: Why do many CS graduates lack foundational knowle... by WalterBright on Monday March 20, 2023 @03:26PM (#35237233)
Yes, but Wirth (Pascal's inventor) was an academic, which is why Pascal has a separate notion of functions and procedures. `void` is a hackish special case in the type system, and not just for function returns. It's unsound.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by fsckboy on Monday March 20, 2023 @03:13AM (#35228239)
> There is no such thing as computers without programming.

not sure what you mean by this, because there's no such thing as programming without computers. (actually, the first computers were invented before programmable computers were invented)

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @03:49AM (#35228479)
Computing is running a program. That's what computing is. An algorithm is a program. A computer is a machine that performs the algorithm, so we don't have to. The Turing machine computes the answer by running the instructions (the program, the algorithm).
Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @04:05AM (#35228569)
On what computer does the algorithm:

    1. take two slices of bread,
    2. apply peanut butter to one side of one slice, 
    3. apply jelly to one side of the other slice, 
    4. place the slices together with the coated sides touching, and
    5. enjoy.
run?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by illiarian on Monday March 20, 2023 @04:17AM (#35228640)
Obligatory PB & Jelly Exact Instructions Challenge video: https://youtu.be/cDA3_5982h8

The answer is: it runs on dad, poorly :)

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @11:19AM (#35232807)
Sure. What would the study of human behavior or algorithms that aren’t computable with computers be called? Surely not “computer science”…
Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @12:12PM (#35233750)
Humans are biological machines that can compute, no?

Or, you really don't think I can design a logical grammar to formally express the creation of a PB&J?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by fsckboy on Monday March 20, 2023 @01:44PM (#35235512)
more to the point, the universe is computational in nature, and humans are, at best, subroutines with a shitty ABI
Re:Ask HN: Why do many CS graduates lack foundational knowle... by nbernard on Monday March 20, 2023 @03:20AM (#35228291)
> There is no such thing as computers without programming.

But there is computer science not applied to computers: Operations research for instance is basically a branch of CS: it is not about programming and it has applications in business, logistics, etc.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by hnick on Monday March 20, 2023 @03:44AM (#35228454)
Do you consider an ASIC a computer? How about a sufficiently large number of NAND gates, arranged a certain way? They can perform computation but are not programmable after the fact.

My computer science degree covered a lot of topics that didn't require a computer, for example relational algebra, discrete mathematics, and introductory formal logic. Of course, the practical usages of these are often best done through a computer and programming, but it's not a requirement.

In reality all computer science degrees I'm familiar with make an attempt to expose students to relevant programming languages, it's simply practical and students demand it, but the details of coding style, how to use git, or similar topics may not be relevant in a computer science degree. That stuff isn't so hard to learn if you have clear guidelines and they have some baseline amount of intelligence which is one thing a degree tries to validate.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by alxmng on Monday March 20, 2023 @03:51AM (#35228498)
An ASIC is a computer which runs a fixed program. Determining what the ASIC is supposed to do, and implementing it, is programming. People who design ASICs are programmers.

A computer is a machine which runs programs (it computes). That's literally the practical and theoretical basis for computing. Instead of running the program in our heads, we have designed machines to do it for us.

We can calculate SHA256 with a paper and pencil. But we created machines (computers) to compute for us, according to the instructions we give them (the program, the algorithm).

Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @04:01AM (#35228547)
Is calculating SHA256 using pencil and paper programming? Or computing?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by dcow on Monday March 20, 2023 @03:59AM (#35228536)
Honestly your comment reads as borderline sealioning. I’m not accusing you of it, just saying that it is so absurd it almost comes off that way.

Computer Science is the study of how we design algorithms to process data. We do computer science using grammars that allow us to describe abstract operations on data. We categorize the different types of algorithmic solutions to problems. We study the limits of efficiency and prove things about the various classes of algorithmic problems and their solutions. We generally work with discrete structures and type systems (like our beloved lambda calculus, origin of the Y combinator).

You can design algorithms without ever compiling a single piece of code just like you can add numbers without ever using a calculator. In computer science we talk about abstract syntax trees, higher order functions, context free and regular grammars, finite state automata, and numbers. You can even get meta and modify your own algorithm’s data as part of the algorithm itself. All this happens independent of a particular instance of a physical machine.

Programming means “issue instructions to a given instance of a machine so that it behaves a certain way”. We take all our theory and apply it to an electrical device that has a physical processor and fixed memory. We program a microchip by writing chains of instructions to its memory. We measure performance in cycles per second. When programming we talk about machine instructions, loadable images, calling conventions and binary interfaces, process state, environment, alignment, and words.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by bell-cot on Monday March 20, 2023 @04:01AM (#35228549)
Re:Ask HN: Why do many CS graduates lack foundational knowle... by Galanwe on Monday March 20, 2023 @03:49AM (#35228482)
> The vast majority of CS research papers are about programming.

Hum, allow me to disagree strongly.

Maybe the vast majority of those you read, but not overall. My experience is that most research papers look like math, or linguistic, etc, while the annexes show example use cases that relate to actual pragmatic applications.

From my friends that did PhDs and regularly write research papers, here is what it looks like:

- One of them works on detecting or bypassing virus signatures. The papers look like high level linguistic theorems to prove that some grammars respect some constraints. It's mainly algebra and language theory.

- An other works on watermarks that can resist compression. These ones are 100% algebra and analysis. The applications on watermarking are only mentioned as possible use cases, and a proof of concept was done in his thesis.

- One work on transactional memories. I don't think she even know herself how to program, her papers are hardcore math in some intricate vector space. She has no idea what transactional memories are used for, she's just interested in the underlying math problems to be solved.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by dgb23 on Monday March 20, 2023 @03:26AM (#35228341)
Relational algebra is math. SQL is a practical application of relational bags.

There’s math and science behind concurrency and parallelism, and the coordination thereof.

Network programming is a practical application of several parts, each of having foundations in math and science. From coding/decoding, to state machines. Wires are all about math and physics too.

There’s more that is often left out. Specifically holistic systems and their research. Lisp, Smalltalk, Self etc. These systems reach into math, HCI, compilers, JITs…

Re:Ask HN: Why do many CS graduates lack foundational knowle... by thrown123098 on Monday March 20, 2023 @04:10AM (#35228597)
>SQL is a practical application of relational bags.

Apart from the fact it isn't; elements have specific order and that order matters.

SQL is SQL, it's not relational algebra or whatever bastardization of it you can think up. In fact when it comes to SQL the only use relational algebra has is to tell that you that anyone talking about it has never used SQL.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by dgb23 on Monday March 20, 2023 @04:37AM (#35228782)
Your computer is also not a Turing Machine. The regex that you use is not really a regular language. Your functions and logic are not referentially transparent, because well, they have to run on a computer.

But it's useful to learn the foundational mathematics of these things as there is a direct relationship between them.

SQL has semantics that can be understood by relational algebra of relational bags. It's of course not a 1:1 translation, but the mathematical underpinnings are explained there. It's useful to learn the simpler, more abstract thinking tool in order to understand the concrete programming tool.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by thrown123098 on Monday March 20, 2023 @05:01AM (#35228949)
My computer is very much a Turing machine since each time it runs out of disk space I can buy more disks. The fact you think a Turing machine has infinite memory rather than finite but arbitrarily large memory tells me all I need to know about the sorry state of your theoretical education.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by dgb23 on Monday March 20, 2023 @05:04AM (#35228966)
How much does an infinite amount of disk space cost?
Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @05:30AM (#35229152)
Nothing, if it's your users who buy it instead of you.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by thrown123098 on Monday March 20, 2023 @05:07AM (#35228986)
Re:Ask HN: Why do many CS graduates lack foundational knowle... by rrobukef on Monday March 20, 2023 @08:34AM (#35230589)
A Turing machine is a mathematical concept. It has, by definition, infinite memory. A computer is just a real machine that can do similar things as a Linear Bounded Automaton, a Turing machine's little brother who'll never do quite the same things.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by thrown123098 on Monday March 20, 2023 @09:31AM (#35231230)
Re:Ask HN: Why do many CS graduates lack foundational knowle... by rrobukef on Monday March 20, 2023 @03:07PM (#35236941)
There is a physical limit to the number of disks you can add to your CPU. There is a physical limit to the memory you can address in your CPU (48-bits). It is not arbitrarily large.

Also wrong for Turing Machines, it really is infinite. That's a big difference to arbitrarily large. The halting problem is undecidable for TM's but not for arbitrarily large (you'll need precise definitions though).

Re:Ask HN: Why do many CS graduates lack foundational knowle... by thrown123098 on Monday March 20, 2023 @06:44PM (#35239906)
It is left as an exercise to the reader to find a natural number which isn't arbitrarily large but calculable.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by rrobukef on Tuesday March 21, 2023 @03:08AM (#35243289)
The tape size needed for a Turing machine is incalculable. Here's a reference to a proof: https://scottaaronson.blog/?p=2725.

The machine with 7918-states, Z, stops (well, Z cannot be proven to run infinitly long) iff. ZFC is consistent. For this it needs a finite amount of space but we cannot calculate how much. If we could calculate an upper bound we've proven ZFC is consistent.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by thrown123098 on Tuesday March 21, 2023 @08:23AM (#35245217)
Yes which is why the size if strictly finite but arbitrarily large.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by bigbillheck on Monday March 20, 2023 @09:49AM (#35231453)
> each time it runs out of disk space I can buy more disks.

There's only so many that you can buy.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by mabbo on Monday March 20, 2023 @08:10AM (#35230365)
The developers who don't understand the relationship between relational algebra and SQL are the ones who end up confused why their query browned out prod.

It's not exactly the same thing, but the underlying lessons and mental model matter.

Of course, the move back towards nonrelational data stores these days may make the point moot.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by wankle on Monday March 20, 2023 @11:41AM (#35233241)
Three decades of programming in various languages and at various companies and today's discussion is the first time (after all those years writing SQL used by those applications) that I've seen the term "relational algebra". My queries run great in production at various companies right now, including many I guarantee are widely recognizable.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by mabbo on Monday March 20, 2023 @02:14PM (#35236052)
Sounds like you're working hard to defend your ego rather than seeing the opportunity to learn and improve yourself.

You must be a delight to work with.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @04:47AM (#35228854)
> Relational algebra is math. SQL is a practical application of relational bags.

How many database programmers do you know who ever did anything involving relational algebra when creating or tuning up a database?

This point is specially pointless with the prevalence of ORM frameworks.

> There’s math and science behind concurrency and parallelism, and the coordination thereof.

Please find me the best example you can come up of what you see as math being put to practice in concurrent programming.

> Network programming is a practical application of several parts (...)

This is too much grasping at straws. Just show what you feel is the absolute best example.

> There’s more that is often left out.

There is nothing. You showed nothing as your best examples, and once you showed nothing you were left with nothing else to show.

Enough with this silly "but it is math" nonsense. You can come up with a math formalization of an egg but that does not mean a degree in math will help you boil one. Enough with this nonsense.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @05:29AM (#35229147)
> How many database programmers do you know who ever did anything involving relational algebra when creating or tuning up a database?

...and this explains why database designs are what they are. It's also why you don't learn SQL and if you do you never admit it: It condemns you to a lifetime of maintaining CRUDs written by people who don't understand relational algebra.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @05:42AM (#35229241)
> ...and this explains why database designs are what they are.

You mean good enough?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @07:35AM (#35230089)
Good enough as in constant burden but not bad enough to fail the whole project.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @08:11AM (#35230379)
> Good enough as in constant burden

Are they, though? Or are you just trying to put up a strawman?

Because I assure you plenty of highly reliable infrastructure is running 24-7 without the faintest concern over normalization.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by oriolid on Monday March 20, 2023 @10:02AM (#35231629)
> Or are you just trying to put up a strawman?

Writing from personal experience. I can also assure you that a lot of this highly reliable infrastructure works only because a lot of tears and cursing that could have avoided if the designers had any idea what they were doing.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by roenxi on Monday March 20, 2023 @06:50AM (#35229742)
> Enough with this silly "but it is math" nonsense. You can come up with a math formalization of an egg but that does not mean a degree in math will help you boil one. Enough with this nonsense.

Formalising 3rd normal form and giving it a rigorous definition so that we can test if data is properly normalised is a big deal. Ditto having algorithms in concurrent systems that we can guarantee don't have logic bugs in them.

If those things aren't math to you, then what are you willing to accept? Do you mean programmers have to sit down and draw an integral sign or it doesn't count? You're correct that doesn't happen, and you're probably setting yourself up to be steamrollered by someone who sees a well known pattern that the academics have been researching for years.

The typical corporate database has big tracts that have been "designed" by someone doesn't appear to have thought very much about how to store data in an organised fashion. It raises the question of what fuzzy thoughts go through their brain since they are only interacting with a database because they have a need to store data in an organised fashion. Hopefully their thoughtlessness doesn't matter, but doing better than that is a low bar.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by simplotek on Monday March 20, 2023 @08:00AM (#35230296)
> Formalising 3rd normal form and giving it a rigorous definition so that we can test if data is properly normalised is a big deal.

It isn't. Half the world already relies on ORM frameworks that barely require any input from the developer to setup relational databases, let alone knowledge on how to normalize them.

On the rare occurrences a project feels that specialization on relational database design is relevant, more often than not it's far more useful to require expertise on specific RDBMS than trivia tricks.

> If those things aren't math to you (...)

You're missing the whole point. No one is arguing that you have math formalisms. The whole point is that those formalisms do not add any value at all. Don't you understand that?

I mean, I can whip out a web app with multiple services running in the backend and with datastore using both DynamoDB and S3, and build a business around it. We can do this without ever knowing who Jack or Joe or Jim or Jose Cobb was, let alone what he wrote. What does it tell you?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by roenxi on Monday March 20, 2023 @08:28AM (#35230540)
> The whole point is that those formalisms do not add any value at all. Don't you understand that?

I'm going to go a bit further than just not understanding, I'm actively disagreeing with you. Based on your arguments here, in a workplace I would advocate not letting you make any decisions about database schema.

Sounds like the feeling might be mutual there though. Not saying you're bad at whatever it is you do; just I want to have to have schema designed by someone who has thought deeply about schema design. Databases usually outlive all the employees assembling it, can outlive an entire organisation and getting the design right can save days to months of work.

The academics have got entire classes of bugs that they can demonstrate don't exist in normalised data, there are benefits to everyone coordinating around a standard shared view on how to lay out data and usually drifting away from the standard it turns out not to lead to real benefits long term. You can believe that is valueless or isn't math or whatever, but there is no point aggressively introducing opportunities for bugs when there is no reason for it. And to avoid doing that, the person making the decisions needs to understand the theory.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by _gabe_ on Monday March 20, 2023 @11:03AM (#35232526)
"Show me your flowchart and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowchart; it'll be obvious." -- Fred Brooks, The Mythical Man Month (1975)

It's unfortunate that most people these days prefer unstructured blobs of json to formal relational databases. It's impossible to get up to speed in these types of environments because every time you think you "understand" the data, you find out about a random property that gets set in rare occurrences that throws off the whole relational model you intuitively built in your mind.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by wankle on Monday March 20, 2023 @11:34AM (#35233105)
People who excel at theory usually don't do well in most programming positions. Perfectly normalized schemas do not hold up well in an operations heavy environment.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by _gabe_ on Monday March 20, 2023 @12:54PM (#35234578)
I'm not advocating for perfectly normalized schemas. There's a large gap from: perfectly normalized schema -> unstructured blob of json. I'm saying that most people nowadays prefer to not think at all about how their data looks and they'll add properties ad-hoc.

This also does not hold up well in an operations heavy environment. Like all things in programming, a well balanced approach is necessary. Some combination of formally structured data with some flexibility for future requirements is probably the best course of action here, but that's too much work for programmers these days.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by seabird on Monday March 20, 2023 @02:28PM (#35236287)
If you think an ORM somehow saves you from knowing how to make a normalized DB schema (even by intuitive means instead of formal ones), you've lost your mind. For most 9-5 developers just earning their paycheck, this train of thought can lead to absolutely fucking insane DB thrashing and data consistency problems. You might be getting away with it intuitively, but a lot of people won't, so keep it to yourself for your own sake.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by wankle on Monday March 20, 2023 @11:26AM (#35232946)
Agree, I've programmed in various languages at various companies for three decades, do not have a degree and yet every point you made is 100% accurate and precise.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by raincole on Monday March 20, 2023 @03:39AM (#35228416)
SQL is a trade school course? Do you think

1) We should teach relational database purely from relational algebra without an practical example.

or

2) Relational database is a trade school course too.

If 1), maybe it makes sense for in academic sense, but I personally would rather to work with an intern who doesn't know database at all than someone who knows a bit of relational algebra but not SQL.

If 2), how about operation systems? Compiler? Networking? Are these all just implementation details and not belong to a CS cirriculum?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by throwbadubadu on Monday March 20, 2023 @03:41AM (#35228438)
Not learning SQL only, but it is part of databases and that imo is foundational (everything from relational algebra, their implementation e.g query optimization, locking, transactions, ACID, and today also beyond relational databases).

Imo I had a very good and broad foundational composition, e.g. also starting the first semester right away with Haskell instead of the usual OOP indoctrination. Also math, calculus, statistics, logic.. only math, math math is imo wrong focused, CS needs to be about the machines too (e.g. also computer architecture, electronics, how a CPU works from the ground up til some assembler).

Systems programming (concurrency, network programming, even a bit of OS in form of Minix hacking) were part of a later elective course that most took.

A lot of this unfortunately doesn't fit anymore into the tighter bachelor schedule.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by pjmlp on Monday March 20, 2023 @03:46AM (#35228467)
That is US specific, I can assure you that without programming knowledge across several domains there is no graduation on many European universities.

https://www.di.fct.unl.pt/en/education/integrated-master-com...

https://tecnico.ulisboa.pt/en/education/courses/undergraduat...

Re:Ask HN: Why do many CS graduates lack foundational knowle... by viraptor on Monday March 20, 2023 @04:11AM (#35228606)
I know they're half-European now, but I've finished MComp in the UK and you could totally do the post-batchelor stuff with next to no programming.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by ACS_Solver on Monday March 20, 2023 @05:14AM (#35229032)
I got my computer science BS and MSc from two different EU universities and I found the programming aspects to be very secondary. Yes, you needed some programming to graduate but not nearly as much as math, and half of the programming you needed had little to do with real-world programming.

In two undergrad courses, we programmed in an old language and a very outdated environment, the one the professor had used their entire career - and apparently that continued until the prof retired. The courses were about implementing algorithms, so the language didn't really matter, but I would say the course was probably a net negative from a software engineering perspective.

We had a database course covering the mathematics in good detail. We learned the relational model, normal forms and such mathematically, with a little basic SQL at the end. That was great for understanding, as at the end of the course you'd be able to write out the actual maths performed by a query but it didn't really teach SQL.

Multiple professors wrote typical "researcher code" - I don't necessarily want to say it's bad but it's very different from what you'd see as good industry code. Lots of global state, variable names with 1-2 letters, magic numbers. It's understandable why research code to be like that but it is much more fitting for an implementation of a research paper than for a software product.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by pjmlp on Monday March 20, 2023 @06:19AM (#35229512)
Of course I am unable to validate 100% of them, but the ones I had contact with, either in Portugal, or due to my research stay at CERN, I can assure having proper coding skills is essential for graduation.

On my degree, database classes required both theory, as writing a full blown application in Oracle.

Naturally like everything there are students that work around it, but then they aren't in position to complain about not learning.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by titannet on Monday March 20, 2023 @06:50AM (#35229748)
At my German university I could have graduated with next to no knowledge of programming and SQL and afaik the curriculum hasn't really changed.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by nosianu on Monday March 20, 2023 @07:27AM (#35230017)
At my German university in the late 1990s we did use a few programming languages - but all of them not for themselves but for demonstration. Modula 2 for introducing higher level concepts such as modules and OOP, VHDL for hardware, PHIGS for graphics (okay not a language), SQL of course, and some C and C++.

We did not truly learn any of those though, it's just that they were used.

The specific languages did not really matter, they were secondary, just some tools. One Theoretical CS professor used some really obscure thing whose name I forgot, really niche, again it was only used to demonstrate some theoretical aspects (provability I think).

Most content was math and formal stuff. Some experiments and low-level stuff, like creating a sound directly from a chip (no computer), in assembler, as part of intro to hardware.

I would have fekt pretty irritated and that I was wasting my time if we had had courses about learning programming languages (designing them, writing compilers etc., is another matter). This is something easily and better done on your own, learning the actual languages.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by NineStarPoint on Monday March 20, 2023 @10:05AM (#35231680)
Neither of those are a pure Computer Science course, they are “and engineering” or “and informatics”. There are similar courses in the US that teach computer science alongside more practical skills.

It’s ultimately a matter of the focus of the major and department.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by pjmlp on Monday March 20, 2023 @10:45AM (#35232265)
Yeah that is the thing, there is no pure Computer Science without coding, unless one goes to applied maths (at least in Portugal).
Re:Ask HN: Why do many CS graduates lack foundational knowle... by not_me_ever on Monday March 20, 2023 @10:26AM (#35231952)
I have been teaching at european universities for 20+ years now.

You can graduate without writing a single line of code, without having ever heard of SQL, and knowing nothing about math.

If you do it right. Or is that "do it wrong"?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by pjmlp on Monday March 20, 2023 @12:58PM (#35234668)
I guess several of those universities are doing the credits accounting wrong.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by eurasiantiger on Monday March 20, 2023 @04:12AM (#35228614)
Programming is just applied discrete mathematics.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by Koshkin on Monday March 20, 2023 @07:39AM (#35230116)
Sure. Just like making cars is applied classical mechanics.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by eurasiantiger on Tuesday March 21, 2023 @05:33AM (#35244148)
That is not a false statement.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by hardware2win on Monday March 20, 2023 @04:35AM (#35228762)
>CS is about Computer Science, not programming.

Then why almost every semester has some heavy programming course?

Re:Ask HN: Why do many CS graduates lack foundational knowle... by zelphirkalt on Monday March 20, 2023 @05:22AM (#35229090)
Heavily dependent on where you study.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by richrichardsson on Monday March 20, 2023 @05:12AM (#35229024)
> I have a BS, Bachelor of Science.

Mildly off-topic, but is "BS" the usual shortening of this type of degree where you hail from? If it's United States I would be even more surprised that this would be the case, since who wants a "BS Degree"? In the UK at least we normally refer to them as BSc degrees and there's never really a need to expand.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by bdcravens on Monday March 20, 2023 @05:19AM (#35229074)
Yes, that's the common abbreviation.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by rawbert on Monday March 20, 2023 @05:52AM (#35229321)
If it is, you should stop using it like that because it made even me, a non-english native, giggle.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by rxhernandez on Monday March 20, 2023 @06:51AM (#35229758)
There are at least a hundred million you would have to convince to stop using that abbreviation before it goes out of fashion in the US.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by bregma on Monday March 20, 2023 @07:06AM (#35229868)
"BS" is the simplified American initialism for Baccalaureate Scientate. In most other English-speaking countries the acronym "B.Sc." is used. It's like the way they misspell "colour" and "labour". A cute affectation that we may well snicker about behind their collective backs but in the end it's meaningful and respectable and we move on.

"CS" on the other hand is not short for "computer programmer job training" so I'm confused by the expectation of the original Ask HN question.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by mhh__ on Monday March 20, 2023 @07:04AM (#35229849)
Databases aren't about SQL as much as a taste of distributed systems.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by AnimalMuppet on Monday March 20, 2023 @07:22AM (#35229993)
In the real world, though, 95% of those with CS degrees are going to work as software engineers, not as computer scientists. So what we really need is software engineering programs, and far fewer people in CS programs.

We need, essentially, the divide between chemistry degrees and chemical engineering degrees. That hasn't happened yet for CS, but it needs to.

And that's what the OP is asking for - people who have software engineering knowledge, not CS knowledge.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by gedy on Monday March 20, 2023 @09:10AM (#35230957)
Not quite the same as what you suggest, but I did a BS in Computer Engineering, and really enjoyed it compared to CS or EE. There were some software engineering and practical programming courses, but also included hardware design.

Though I struggle with leet code quizzes so there's that..

Re:Ask HN: Why do many CS graduates lack foundational knowle... by cmrdporcupine on Monday March 20, 2023 @07:30AM (#35230048)
The relational data model is first order or propositional logic, and set theory. It's math & logic. It is intrinsic to computer science, since Codd's foundational papers.

SQL itself is full of problems, but the foundations behind it are definitely not; database theory and database internals is one of the deepest domains of computer science, up there with operating systems. And dismissing this knowledge as "trade school course"work is... sad.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by 7952 on Monday March 20, 2023 @08:53AM (#35230774)
It is common in science to do experiments and learn lab skills to be able to do those experiments. Surely programming languages are just a way of doing practical work.
Re:Ask HN: Why do many CS graduates lack foundational knowle... by jiriknesl on Monday March 20, 2023 @08:58AM (#35230820)
I think exactly the opposite. 95% of people studying CompSci are going to work as developers, system administrators or IT managers.

They should know systems programming, databases, operating systems, web app development, security, basic logic, data structures, algorithms, JavaScript, and some backend languages. Add some ability to interview users, design at least basic UI, organize tasks, release your product and monitor it.

Math, physics, statistics, calculus, proofs, theorems, and computability should be the interest when you decide to pursue PhD. For someone who's going to build ERP systems in Java, Oracle ad Angular these things are completely useless. Most of the developers are like this.

Re:Ask HN: Why do many CS graduates lack foundational knowle... by gosh400 on Tuesday March 21, 2023 @11:17PM (#35256387)
That sort of erroneous thinking (about SQL) was the reason Sun Microsystems (Java, NeWS, Sparc processors, etc), didn't have a Relational DBMS, and then had to buy MySQL for $1B, in order to make itself an attractive purchase (to save the company) - which Oracle then did for $7B.