But I'd say about 20% of the students that graduated still didn't understand things like references very well. They'd write their code with "foo.bar" and when it didn't compile they'd randomly change "." to "->" or add random asterisks around until it compiled.
(Classes were primarily in C++. We did some classes Java as well, and in my 3rd year Microsoft came in with a big sponsorship to change all the Java classes to C# classes.)
After graduating most CS grads seem to forget foundational CS stuff anyways.
I never got a CS degree. So I trained myself. While working and also a lot of a year when I was unemployed during the .com crash.
Which only made me more frustrated to find that most jobs are just "you nail these two boards together" and most programmers are clueless about things like what the "relation" in "relational DBMS" means.
In construction - in the UK - there are first and second fix "chippies". First fix do the big stuff and second fix do everything after the plaster is dry(ish).
There are also cabinet makers and furniture makers, turners and several more wood related trades. Here, woodworker is a synonym for carpenter and carpenter is rarely used as a job title. Generally a specialisation is used.
I happen to own an IT firm and I prefer to see engineering qualifications on CVs (resumes). I'm a rather shabby Civ. Eng myself! I graduated just before the shit hit the fan in the UK in 1991 - recession, >10% unemployment (in Devon and Cornwall) etc. Can't recall what inflation was up to at the time but I think it was worse than now.
... So I ended up in IT
But research scientists aren't necessarily great engineers, and engineers aren't necessarily great research scientists. That's OK though, it's why we have separate disciplines.