What courses are necessary for a math student interested in CS?

In summary: Markov models), and statistics can be tied into 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
  • #1
mr.tea
102
12
Hi,
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.
 
Physics news on Phys.org
  • #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.
 
  • #3
Fancypen said:
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.
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.
 
  • #4
mr.tea said:
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.

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 into 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.
 
  • Like
Likes fresh_42
  • #5
mr.tea said:
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.

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!
 
  • #6
StatGuy2000 said:
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 into 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.

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.
Fancypen said:
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!

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.
 
  • #7
mr.tea said:
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.)?
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.
 
  • #8
mr.tea said:
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.

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.
 
  • #9
mr.tea said:
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 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.
 
  • #10
Fancypen said:
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.
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:

Programmer
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.
 
  • #11
mr.tea said:
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.

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.
 

1. What is a "Math student with focus on CS"?

A "Math student with focus on CS" refers to a student who is majoring in Mathematics but has a strong interest in Computer Science. This student typically takes courses in both fields and may pursue a career that combines mathematics and computer science, such as data science or computer programming.

2. What skills does a "Math student with focus on CS" possess?

A "Math student with focus on CS" has a strong foundation in mathematics, including skills in calculus, linear algebra, and statistics. They also have knowledge and experience in computer science, including programming languages, algorithms, and data structures. Additionally, they possess critical thinking and problem-solving skills, as well as the ability to analyze and interpret data.

3. What career opportunities are available for a "Math student with focus on CS"?

A "Math student with focus on CS" has a wide range of career opportunities, including roles in data science, software engineering, financial analysis, and research. They can also pursue graduate studies in fields such as computer science, data science, or applied mathematics.

4. How does a "Math student with focus on CS" differ from a traditional computer science student?

A "Math student with focus on CS" differs from a traditional computer science student in that they have a strong background in mathematics and often approach problems with a mathematical mindset. They may also have a deeper understanding of algorithms and data structures due to their mathematical training.

5. What tips do you have for a "Math student with focus on CS" to succeed in their studies?

To succeed as a "Math student with focus on CS", it is important to maintain a balance between mathematics and computer science courses. It is also beneficial to explore both fields and find ways to apply mathematical concepts to computer science problems. Additionally, staying up-to-date with current technologies and industry trends can help in finding career opportunities in the future.

Similar threads

  • STEM Academic Advising
Replies
6
Views
1K
  • STEM Academic Advising
Replies
1
Views
470
  • STEM Academic Advising
Replies
3
Views
443
Replies
22
Views
763
  • STEM Academic Advising
Replies
2
Views
989
  • STEM Academic Advising
Replies
12
Views
952
  • STEM Academic Advising
Replies
2
Views
739
  • STEM Academic Advising
Replies
6
Views
2K
Replies
6
Views
962
  • STEM Academic Advising
Replies
3
Views
1K
Back
Top