1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Courses Math student with focus on CS

  1. Aug 10, 2016 #1
    I am a math major student. I am interested in the theory of computer science and I would like to go to this direction in graduate school. So I need some advice about what courses of computer science I should do, and what courses of mathematics I can ignore. My program has a lot of freedom with choosing courses, in my opinion too much, but this is the program.

    I would also like to know what are the critical courses that any mathematician should do, no matter what specialization they choose.

    Thank you.
  2. jcsd
  3. Aug 10, 2016 #2
    Advice from a junior in CS at UCSD is to take linear algebra and discrete mathematics for sure. Linear is probably a requirement for you, but discrete may not be. ANY math will make you a better computer scientist . It comes down to what you want to do in CS. If you're a web dev, calculus MAY not server as well as discrete math. However, you may find yourself working on a project that uses calculus to model "something" and that's where that knowledge will serve you.

    What area of CS do you want to focus on? A.I., web dev., databases, security, software dev., etc. That will help you choose what math classes to take.
  4. Aug 11, 2016 #3
    Thank you for the advice.

    I am not really want to be a full time programmer. I want to study things related to algorithms, complexity, computability and maybe cryptography.

    Do you think I can ignore discrete math if I will do algebraic structures(groups, rings, etc.)?

    I don't want not to take ODE, or topology and obvious things like that, because I will not be able to consider myself as a mathematician(nobody will consider me as a mathematician).

    What courses in CS are really necessary for me to be able to continue in this direction?

    Thank you.
  5. Aug 11, 2016 #4


    User Avatar
    Education Advisor

    If your interest is in theoretical computer science (e.g. algorithms, complexity, computability, cryptography) having as wide a background in math could only help you. Studying algebraic structures is certainly important, but I would definitely not ignore discrete math, since these are very important in the analysis of algorithms.

    Believe it or not, ODE and topology is also used in various research areas within theoretical computer science (e.g computational geometry, computational models of dynamical systems). Furthermore, one popular research topic in theoretical computer science is in quantum computation, and these would require a solid background in ODE and topology at a minimum.

    I would also suggest taking courses in both probability and statistics, since probability theory has important applications in the analysis of algorithms and complexity theory (e.g. randomized algorithms, analysis of Markov models), and statistics can be tied in to areas of machine learning (a hot topic in CS circles).

    As far as courses in CS, depending on what your school offers, I would recommend the following:

    computability and complexity
    any courses on algorithms
    formal languages and automata theory (or something like this, if offered)
    distributed computing
    computer algebra (if offered)
    numerical analysis/scientific computing
    symbolic computing (if offered)
    machine learning/artificial intelligence (many theoretical computer scientists are interested in algorithms related to machine learning)
    graph theory (if offered)

    All of the above courses are based on what I recall was offered in the CS department of my alma mater (University of Toronto). Hope this suggestion is helpful.
  6. Aug 11, 2016 #5
    StatGuy2000 had some really good points. But as a side note, I don't want to be a programmer either. Someone said, and I am paraphrasing,..."computer science has as much to do with computers, as astronomy has to do with telescopes." I dig CS,because of the way it helps you solve problems. This includes math/physics too!
  7. Aug 11, 2016 #6
    Wow! Thank you very much for the informative answer! Ok then, I will take discrete math. I am going to have a course in statistics this term, and will take probability next term.

    What about measure theory? Complex functions? Fourier analysis?
    I will take this term linear analysis(Function series, uniform convergence, pointwise convergence. Fourier series, Parseval's formula. Sine and cosine series.), statistics and ODE.
    I will try to take as much courses in the list you wrote. Thank you.

    I am familiar with this statement. But most of the people learning CS eventually find themselves in this position(programmer). This is the direct route.
  8. Aug 11, 2016 #7
    Discrete math cannot be avoided in theoretical computer science. Some fields of discrete math, like graph theory and combinatorics, are absolutely essential for studying algorithms and complexity. Depending on how deep you go, calculus plays a role here, too. And, as mentioned already, you'll also need a healthy dose of probability and statistics.
  9. Aug 11, 2016 #8
    I am not trying to be difficult, but that is a very general statement. What data supports this? For example, I know 15 CS majors at my institution and they all know how to program to some extent, but not one of them had offers to be a programmer. They are doing things like network security, database admin, and software engineering. On the other hand, my buddy who never went to college, learned Java, C++, and other langues and is employed as a "programmer." It's a small sample size, but I just want to point out that it's rarely a good idea to use blanket statements, mostly because they hinder your outlook.

    Maybe I am wrong, but at least this is another way of seeing things.
  10. Aug 11, 2016 #9


    User Avatar
    Education Advisor

    I tend to concur with the others that taking more math courses never hurt if you're considering graduate research in theoretical CS. Measure theory, for example, is fundamental to probability theory (which I've stated earlier is important in algorithm analysis), and there may be more direct applications in theoretical CS research. Ditto for complex functions and Fourier analysis (Fourier analysis is important for areas like wavelets).

    I'm not myself a theoretical CS researcher, but know a number of people who have gone in that direction (among my cohort of math undergrads) and they have taken a wide range of different math courses while in undergrad. Even if you don't find a particular course to be immediately applicable, the nature of research is that things you learn can find an indirect application somewhere down the line.
  11. Aug 11, 2016 #10
    I think it's reasonable to assume that most fresh graduates of computer science programs pursue programming jobs. What that position is called doesn't really matter. There is no universally accepted distinction between the following terms:

    Software developer
    Software engineer

    Different companies use these titles interchangeably. For instance, the company I currently work for reserves the word "engineer" for those employees working on designing hardware. Those of us designing and building software products are called "developers", even though we're doing software engineering.
  12. Aug 11, 2016 #11


    User Avatar
    Education Advisor

    You have gotten a lot of good advice, but I would add that saying saying you want to study "algorithms, complexity, computability and maybe cryptography" is like saying I want to study ODE, Calculus, Algebra and maybe graph theory. That's nice and you should know a good basis of all that but you'll mostly use those aspects as tool. Secondly, those are rather broad terms that may have overlap but to studying something specifically related to one typically requires a more focused approach.

    For example, algorithms, are you interested in stochastic algorithms? Distributive algorithms? Game Theory Algorithms? Each group, believe it or not, is it's own research field whose main tool sets require different approaches. My advice is try to get exposure to some more advance concepts and look at the mathematical concepts they lean heavily on. You'll eventually get a good feel for what you lack and what you have to learn.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted