<p>
</p>
<p>No. Compiler design is not a sub-field where there are tons of jobs. Most software jobs will revolve around the processing, distribution and storage/retrieval of data. You could equate “processing, distribution and storage/retrieval” to programming, networks and databases. On top of that, all 3 areas NEED an operating system…so there are 4 important CS courses right there.</p>
<p>Add to that, “algorithms and complexity” knowledge helps you design better and more efficient solutions to any of the above areas. Software engineering gives you a methodology (and structured processes) to apply to the above areas. The application of security (be it network-level, operating system level or data level) is even more popular now than ever.</p>