2
$\begingroup$

If I am right students learning computer science at universities learn very theoretical kind of knowledge. A knowledge most of which (e.g. algorithm theory) can't be used to create everyday software (e.g. MS Word, IE, etc.).

What opportunities do computer science graduates have if they don't want to do research but rather work at some company where they can make use of what they have studied. (e.g. not writing MS Word)

In case of still not being clear enough, generally speaking, what I would like to know is what can a computer science gradute work?

$\endgroup$
  • 1
    $\begingroup$ You are wrong. You are talking about theoretical computer science, which is not the entirety of computer science. You can also get computer science degrees with concentrations in computer systems, graphics, artificial intelligence, computer security, databases, distributed systems, and so forth. $\endgroup$ – Peter Shor Jun 26 '13 at 17:48
  • $\begingroup$ But @PeterShor: even theoretical computer scientists are employable outside academia! Tom Leighton started Akamai, David Karger helped invent the Chord distributed hash algorithm (similar to what is used in BitTorrent). Udi Manber (who wrote the algorithms book I used when I was an undergraduate) is the vice president of engineering in charge of all search products at Google. $\endgroup$ – Wandering Logic Jun 26 '13 at 19:14
  • $\begingroup$ @WanderingLogic: Right. I probably should have addressed both the OP's misconceptions in my comment. $\endgroup$ – Peter Shor Jun 27 '13 at 0:01
  • 3
    $\begingroup$ Google, Facebook, Twitter, Amazon, etc. development jobs are for computer science graduates. $\endgroup$ – eLRuLL Jun 27 '13 at 6:09
  • $\begingroup$ As every field of knowledge matures, it gets automated. In a sense, the only jobs left at some point will be jobs in reducing the number of people required to do a job. CS isn't necessarily uselessly theoretical, as it spans everything from compiler construction to operating system design, to security, to slapping CRUD business apps together at scale for businesses. Academia is actually a terrible choice for a CS student (think negative pay versus high pay). $\endgroup$ – Rob Mar 2 '15 at 19:26
6
$\begingroup$

First opportunities that come to my mind:

  • data mining: it is used by e-commerce websites like Amazon to understand consumer behavior; also used by banks to calculate how likely the debt will be payed back;
  • systems design, that can have high throughput: this is used by search engines like Google, but also in conterterrorism, and finance;
  • geographic information systems: companies like TomTom and Foursquare, but also airports and airline companies
  • performance analysis and finding bottle necks in systems: this is any company that has a big investment in ICT;
  • embedded systems programming: Siemens, Ericcson and other companies and producers of embedded devices, also electronics for cars;
  • hardware software interface in mobile systems: Motorola, Samsung, Apple, you name it;
  • operating systems for mobile devices: Nokia and Microsoft are doing a lot of work here, also Google and Apple
  • mathematical models in finance
  • power grid networks management systems: Austin Energy, Etap
$\endgroup$
8
$\begingroup$

If I am right students learning computer science at universities learn very theoretical kind of knowledge.

You are largely incorrect. A significant portion of most CS curricula includes hands-on, applied, practical programming, computer systems and software development exposure. The ACM publishes curriculum guidelines for ABET/CAC-accredited CS programs in the US. You should check their list of recommendations to get a more-or-less complete picture of what most CS programs worth the name cover.

A knowledge most of which (e.g. algorithm theory) can't be used to create everyday software (e.g. MS Word, IE, etc.).

Algorithm theory is absolutely and vitally important for creating everyday software (such as MS Word, IE, etc.), specifically, for differentiating the software sufficiently to compete. To even write a web browser, one needs to understand HTTP, TCP, multithreading, parsing, etc.

What opportunities do computer science graduates have if they don't want to do research but rather work at some company where they can make use of what they have studied. (e.g. not writing MS Word)

Any company that needs people to write software will need to hire somebody. Having academic credentials is a plus and a computer science degree is more applicable than just about any other option. More applicable, applied, practical options are typically viewed with some skepticism in the US since they're viewed as less rigorous (perhaps rightly so).

In case of still not being clear enough, generally speaking, what I would like to know is what can a computer science gradute work?

Anywhere most graduates can work. Most of industry bases hiring decisions on individual circumstances; a CS major with experience in mechanical engineering could be hired as a mechanical engineer. A CS major with experience making puff pastry could be hired as a chef. Most CS majors would be well qualified to take jobs writing software since, by virtue of being a CS major, they have some experience writing software.

$\endgroup$
4
$\begingroup$

You are just wrong.

First of all I would hope that any four-year bachelor's degree (in any major) would teach basic critical thinking skills, which is really the prerequisite that employers (of any kind) are looking for.

Second of all I don't think you understand what software engineers actually do. (They design algorithms to solve real problems, and then make sure that the algorithms are implemented in reusable, testable, and composable ways.) I guarantee that majority of the programmers who work on the IE and MS Word teams have at least an undergraduate degree in computer science, and use something they learned in that degree every day.

Third of all, I don't think you understand what computer science programs actually teach. A computer science degree involves a lot more than a single course on complexity theory and a single course on computability theory. It involves dozens of courses all aimed at helping the student think algorithmically. All the computer science programs I've been associated with have required significant amounts of basic mathematics (calculus, statistics, linear algebra, analysis), and also things like digital, computer, operating system, database, networking, and compiler design. (And algorithm design.) Also linear programming, numerical analysis, signal and image processing, cryptography, machine learning, graphics.

I would never hire someone who didn't understand algorithms and complexity theory to write software (even web apps). (Or more accurately: I would hire just about any clear thinker to write software, but if they didn't already know how to design algorithms I would realize that I was going to have to invest a substantial amount of time and money teaching them to design algorithms.)

$\endgroup$
2
$\begingroup$

other answers are good, heres another angle. its worth pointing out that many elite corporations have very good, even world class R&D departments that have research quality on the level of, or exceed, top universities. in some cases it can be very theoretical but in other ways its a much more applied research related to building products, creating new applications, enhancing existing products, etcetera, ie a different applied/commercial/profitability focus vs university research. but notice also its usually only the much larger corporations that can afford it.

its possible to get internships or jobs in these areas & it can be a nice hybrid area of the [at times abstruse/esoteric] theory of academia vs the [admittedly more narrow] applied focus of corporations in general.

here are several companies renowned for world class CS research departments or at least some CS-focused R&D activity:

another alternative (as mentioned in comments) are tech startups which sometimes need specialized experience in advanced/theoretical CS technology. there are many examples of this but a few come to mind:

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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