hope it's possible for this question to be answered in an objective manner.

I'm not studying in a liberal arts college so basically I only get to study one subject. Which would be the better preparation for future research (probably grad school) into theoretical CS? The standard undergraduate math course with analysis and algebra, or the standard undergraduate CS course with algos and concurrency and the like.

  • 3
    $\begingroup$ What part of Theoretical CS? $\endgroup$
    – Aryabhata
    Aug 15 '12 at 18:28
  • 2
    $\begingroup$ It also very much depends on what's in the CS degree. $\endgroup$ Aug 15 '12 at 18:30
  • 6
    $\begingroup$ I am afraid this is a bad question in this form. We don't know what exactly you want, we don't know what schools are possible, we don't know your talents. All you can get here are generalities. $\endgroup$
    – Raphael
    Aug 15 '12 at 20:03
  • $\begingroup$ At most universities (in the US), it is possible, and even common, for students to major in more than one subject (double/dual major or double/dual degree), especially when those subjects are CS and Math. Look into whether this is possible. If you want to get into TCS, you're probably thinking academia, and the more exposure you can get in school, the better. $\endgroup$
    – Patrick87
    Aug 16 '12 at 15:47

Echoing Raphael's comments, this is highly subjective without knowing you personally. However, here are the things I'd consider:

Many schools are flexible for your undergrad program, meaning that what you choose likely won't affect your graduate career too too much, particularly if you take a good number of classes in each subject.

Do you like calculus/real analysis, or only discrete math? It varies from school to school, but if you're not into calculus at all, probably better to stick with CS.

Likewise, do you want to learn programming? If you have no interest in learning about caching, hardware, programming language concepts, or more "applied" aspects of computer science, then Math might suit you better. Many undergraduate CS programs serve the dual purpose of preparing coders for industry and preparing future grad students. You will likely have to take non-theoretical classes at some point.

Are you more interested in creating new algorithms, or analysing discrete structures? My guess is that CS will beter prepare you for creating new algorithms and solving problems, while Math will better prepare you for detailed proofs about discrete structure.

I would reccomend at least taking a few comp-sci classes. My experience is that people with a math backgorund, but not a computer science background, aren't equipped as well to communicate about things like algorithms and pseudocode. As an example, when talking about Breadth First Search in a math Graph Theory class, the professor had to go and define what a queue was. In a CS class, data structures will be something you cover once and then can keep using later on. Likewise, the pseudocode I've encountered in such classes was full of numbered steps and GOTOs, as apposed to the clean iterative or recursive definitions from CS classes.

  • 2
    $\begingroup$ Imho, even you want to be a TCS researcher you should know some about the realities of computing, if only to keep your theory grounded. $\endgroup$
    – Raphael
    Aug 16 '12 at 7:25
  • 3
    $\begingroup$ This is very true. Not to mention, programming can be a valuable tool when trying to do a proof. For discrete structures, I regularly use Prolog to quickly search for small counter examples. $\endgroup$
    – jmite
    Aug 16 '12 at 16:09

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.