I'm an undergraduate strongly interested (well, this is a hunch) in theoretical CS and all things mathematical. While I'd like to devote my time to participating in research opportunities and learning more about academia-related CS, I also want to develop a skillset (in software engineering) that, if I were unsuccessful in entering academia, would give me a fallback.

I suspect that the past an early point, the learning routes for academia-CS and industrial CS diverge, meaning that I can't prepare myself for both. To what extent is this true -- everybody needs to have experience in a couple of programming languages, for example, but that aside, are there commonalities or differences between preparing for academia and industry that bar or support my plan? Is what I want feasible and, if so, how? Many Thanks.

  • 1
    $\begingroup$ My impression is that you are correct that there is some tension, but it is not hard to overcome. There is enough time to take both types of courses. Your plan is certainly feasible. You can supplement it by doing a summer internship at a software engineering company later in undergrad as well. $\endgroup$
    – usul
    Commented Sep 16, 2015 at 14:06

1 Answer 1


I struggled with the same question while pursuing my undergrad in CS. I performed a fair amount of research, but currently work as a software engineer. I can tell you that for the most part, you won't do too much theoretical CS in the industry (assuming a typical SE, not something tailored for R&D or the like). You may want to consider looking into R&D positions after graduating, should you decide not to pursue a career in academia.

The learning routes do definitely differ (although this is university-specific), but the principles learned can be used in either setting. Certain classes (Compilers, Automata Theory, etc.) may not seem like they have a place in the typical industry for software engineers, but you'd be surprised just how much they come into play.

The biggest difference that you should be prepped for is the difference in "soft" classes. Software engineers are often expected to interface directly with customers, nontechnical managers, and the like, while researchers/professors generally rub shoulders with their own kind in the workplace. As a SE, you get a lot more face time than many CS people are prepared for.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.