<p>So, I'm a CS major, and things like artificial intelligence, machine learning, and databases interest me. However, I'm not sure if I should take compilers down the road. Compilers don't really seem to interest me that much at the moment, but it seems like most CS students at my college end up taking compilers. So, I'm not sure if compilers is some foundational course. I want to go to grad school for CS, and I'm not sure if it's a foundational course that I need to take before grad school. Any experience or suggestions?</p>
<p>Compilers is often suggested for those going to graduate school in CS, because it touches upon many of the subareas – computer architecture, general software issues, language and automata theory.</p>
<p>It may be less applicable for most people going directly to industry, though some people in industry do find it useful if tasked to write a parser for a non-trivial input language.</p>
<p>Interesting. Do you know if operating systems is a suggested course for grad school too?</p>
<p>Yes. Operating systems is a good course to take whether you are going to graduate school or industry jobs, because every non-trivial computer program you write will interact with or be influenced by the operating system it runs on.</p>
<p>This is not going to be a popular post to the CS folks on here, but like I have said before…</p>
<p>There are only about 5 compiler design jobs in the USA.</p>
<p>Now operating systems?..different story…It’s a must have because:</p>
<p>1) You will interact with operating systems on the job (like mentioned in another post)</p>
<p>2) Will be required for just about any M.S./M.Eng CS degree for admission and USUALLY will be required at the graduate level too. In the rare event that a school does not require an actual operating systems course, you can pretty much guarantee that the school has a comprehensive exam for the M.S./M.Eng which will require knowledge of operating system concepts.</p>
<p>I haven’t seen any CS graduate program which included Compilers as a required foundational class. Unless you’re directly working with compilers in the future (unlikely), it’s pretty useless beyond any undergrad level course you might take on it.</p>
<br>
<br>
<p>I think that the OP was asking about undergrad courses in compilers.</p>
<p>In any case, you are always working with compilers (when they compile your codes), and understanding something about what they are doing for you (or to you) can be important when writing code to run efficiently on the target hardware/system. </p>
<p>There is also a lot of “compiler type” work involved when designing and implementing user interfaces, especially if they grow into what are now being called domain-specific languages. A lot of the traditional compiler frontend technology has wider applications.</p>
<p>So, familairity with compilers can be useful. I don’t want to oversell this, but the fact that there aren’t many jobs available for compiler writers does not mean that gaining background in the area is useless.</p>
<p>My $0.02.</p>