How much of your upper level classes do you actually USE?

<p>Ok, I'm starting a program in computer science in the fall as a freshman, and I've been programming since 9th grade, so I think I have a good understanding of the basics. I've looked at some of the upper level classes that I can take, and they seem really awesome. HOWEVER how much of that upper level knowledge is actually used in industry? I don't want to be stuck making some boring Java web app, I want to work on interesting problems and use higher level knowledge? Am I being unrealistic with expectations for a job? Any answers are appreciated.</p>

<p>Day-to-day? Not all that much. But knowing where to look up what you need to know when you need to know it makes all the difference in the long run. That’s what those upper level classes are for.</p>

<p>Most engineering (incl. software) jobs are boring/procedural/the same stuff that’s done everywhere. Most software jobs are boring Java/.NET/enterprise/linux configuration stuff. Open source rocks, some software companies rocks, CS research rocks. If you want to do really interesting computing, then either get to research, the few companies that do cool stuff or drop computing as a “moneymaking” career and only do open source projects (actually one of the best ways to do really cool stuff without spending your time coding on stuff that seems utterly useless).</p>

<p>All knowledge (at least in engineering and science) is applicable, the question is just about finding an application.</p>

<p>^ I see. But there are some awesome-looking higher level courses (artificial intelligence, robotics, parallel processing) that I’m not sure would be used that often, if at all; can it still be helpful to take those courses?</p>

<p>Higher level material isn’t used all that often, but being able to use it the few times it matters makes all the difference. So yes, you will benefit from them.</p>

<p>I’m considering going into defense (specifically C4ISR) as that work seems actually interesting, but IDK.</p>

<p>Everything is interesting when you only consider the idea of how interesting it is. Actual work is work, every single time.</p>

<p>How hard is it to get a job writing systems software? That also seems pretty interesting as well.</p>

<p>That’s really an impossible question to answer. Try applying - that will increase your chance to something significantly higher than 0%.</p>

<p>Related question - about only using upper level knowledge sparingly, this doesn’t just apply to engineering, right? I’m assuming this applies to other career oriented majors like finance, pharmacy, law, etc.</p>

<p>Yes, that is correct.</p>

<p>@HyperionOmega
“But there are some awesome-looking higher level courses (artificial intelligence, robotics, parallel processing) that I’m not sure would be used that often, if at all; can it still be helpful to take those courses?”</p>

<p>The courses are meant to be an introduction to those fields. They’re only partially applicable per se or they’re applicable to fairly elementary problems. I say it again, the main point is to serve as an introduction (and if you like it, you study more on your own or in your grad studies). The fields are rather large so the courses serve as a foundational basis (and introduction) for further specialization.</p>

<p>Parallel/concurrent computing will be/is everywhere, because there are multi-core processors everywhere. It’s an important course conceptually.</p>

<p>“How hard is it to get a job writing systems software?”</p>

<p>Software jobs are everywhere. Operating systems are a rare breed, unless you happen to work at the two major companies Microsoft or Apple or something like Google, IBM, Oracle, Mozilla or some of the other mobile OS developers. Or some industrial stuff, which could probably be closer to EE though (never know). I would really suggest Linux development here in any case, because that’s really probably the most interesting and technologically advanced (because it develops so fast and by communities) thing there’s currently, in operating systems, and they need coders, always. And if you were to apply for a systems programming position, then I’d expect Linux development experience to be a rather standard (because like everyone who’s interested in operating systems does Linux development).</p>

<p>It also depends on your career choice quite a bit. I know quite a few engineers who use the high-level stuff quite a bit, but they are generally in R&D type positions, academia or a handful of the more innovative companies. I knows many more who just use the basics.</p>

<p>You are also much more likely to use an advanced topic (e.g. AI) if you work for a company whose business utilizes that sort of topic heavily (e.g. iRobot).</p>