To me, the necessary elements of a CS degree are the following:
* Discrete math in a fashion (as much a refresher in symbolic manipulation from high school algebra as anything else)
* Introduction to programming
* Introduction to computer architecture (basically nand2tetris in terms of scope)
* Data structures and algorithms
* Software design [this is usually flavored as intro to OOP, but that it be OOP isn't necessary]
After that, it's really down to a depth + breadth requirement: concentrate a certain amount of learning in a narrowish track, and also take some basic courses from other tracks. But I don't think there's any other particular course that I'd consider a graduate deficient if they didn't take that course.
You need to have familiarity with both a high level and a low level language.
Creating a lexer to match tokens uses finite state automata / regular languages.
Creating a parser to match a syntax uses push down automata.
There are some complex topics built on top of simple data structures. For example, symbol table lookups with scope.
Each one of those is a semester long class by itself (well, the DFA and PDA were both in the theory of computation class for me).
My complier class tied together many of the previous classes that I had and gave me a practical understanding of it. With that, I was then able to properly understand the tools of lex and yacc, the effort they saved me and the type of errors that I would encounter.
I remember that it took me quite some time to go through it coming from a math background, but it definitely improved my understanding of how stuff worked, and I haven't really done more learning since then.
Once you understand how memory actually works, how processors execute conditionals, etc it helps massively understand what your high level language might be doing in the background.
Is a CS degree complete without the general education?
Nand2tetris, for instance, is a course I like and recommend to the curious. But it is at best equivalent to a survey course in computer engineering. It’s a motivator to go deeper, but not where a college student should stop. If it were given for credit at a university it would be intended for first year students.