On Fri, Nov 15, 2019 at 05:49:29PM -0500, Adam Thornton wrote:
The other part: it’s historically been a crap shoot whether the CS
department at any given place came out of EE, in which case it was the
bottom-up here’s a transistor, and here’s a flip-flop, and, look, logic
gates! Adders! Et cetera, or it came out of the math department and is a
theory-heavy specialization of some very particular parts of discrete
mathematics and combinatorics.
And neither of these necessarily means that a person with CS
undergraduate degree will necessarily have a strong OS / Systems
background. I remember running out of undergraduate CS classes at
MIT, so I started taking the graduate level classes --- and was
astounded when a first year graduate student raised their hand and
asked, "What's Virtual Memory"? Turns out she came from a highly
math-centric program, and it was simply never covered --- which is why
the first level intro CS class, even at the graduate level, couldn't
make any assumptions about what admitted graduate students might have
as their background.
On the flip side, I remember talking to someone who had their CS
undergraduate program from the UK, and he was astounded that we didn't
cover type functions and type theory as part of MIT's undergraduate CS
program. (It's covered in a graduate level class, and most undergrads
wouldn't have taken it.)
So the fundamental issue is there is no real consensus about what must
be in a CS undergraduate degree program. It used to be one of my
favorite interview questions required that as part of answer, to
implement the moral equivalent of itoa(). What floored me was how
many interviewees with a 4 year CS degree program under their belt
foundered on what was supposed to be the warmup, "just checking to
make sure you know how to program" part of the problem.
- Ted