3 ms·
Absolutely! 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 hi
by jcranmer 2y ago
Absolutely!
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.
- shagie 2y agoBuilding a complier is one of those things that rolls up a number of other parts of computer science. 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.