The Only Three Classes That Mattered from My College Degree
If you don&#x27;t learn about grammars, lexers, parsers, ASTs,... you&#x27;re at a huge disadvantage in many situations. &#x27;Compilers&#x27; was my favorite course in university, and I&#x27;ve used most of that knowledge many times. I was also often the only person on the team who had enough experience to immediately start doing it (say, writing a parser for something, or writing a clang-tidy plugin to detect and fix some issue in the codebase).<p>You&#x27;re equally likely to need this sort of knowledge when writing software for non-technical users (say in finance), and when you write dev tools, linters, checkers, fixers, etc.<p>If you&#x27;re doing anything web-related or even vaguely server-client, you&#x27;re at a huge disadvantage if you didn&#x27;t have a good networks course. You&#x27;ll likely be stuck in a loop of half-knowledge and cargo culting. I had a terrible network course, skipped on deep diving into networking for years (I worked in embedded; SPI, I2C, RS-232&#x2F;422 and CAN were all I needed), and only relatively recently figured out how much I had missed.<p>I see the author mentioned operating systems as a second-tier course. I find it to be the differentiator (that, and C++ knowledge) when it comes to any serious project, especially understanding of processes, threads, IPC, and such.<p>Databases are very easy to learn on your own, and are generally easy to learn, even the theoretical aspect (relational algebra, b-trees,...).<p>Most of the time, and in most shitty universities (the majority of universities everywhere if we&#x27;re honest with ourselves), for most courses, you&#x27;re better off picking a couple of good books on whatever subject (classics are classics for a reason) and just learning. That + OCW from MIT, Stanford, Harvard for assignments for practice. The best courses in my university blatantly stole materials from MIT and Stanford.