I am currently a high school student, interested in theoretical computer science and applied mathematics. I have self taught myself linear algebra and calculus and concrete mathematics. I have a naive notion that for one to write better algorithms, one must know as much mathematics as one can because you can learn about new structures and then use those structures to form more complex and faster algorithms, now, I am not understanding what to do next. I have still an year to go to college, and in that time, I would like study some mathematics that may help me in my career. What should I start with ? Can someone please provide me with probably a list of topics that I should study now and in future.

Also are things like abstract algebra (it is too formal of a subject) and algebraic topology useful in computer science?

  • 8
    $\begingroup$ This related question may be helpful. $\endgroup$
    – vb le
    Oct 23, 2013 at 19:07
  • 8
    $\begingroup$ Yes! Things like abstract algebra and algebraic topology are useful in theoretical computer science. See, e. g. cstheory.stackexchange.com/questions/10916/…, cstheory.stackexchange.com/questions/1920/…. That doesn't necessarily mean that those are good places to start, but they're certainly not bad things to learn anyways as they could be useful in many different areas. $\endgroup$ Oct 24, 2013 at 1:39
  • 7
    $\begingroup$ TCS is so vast that whatever math you learn, there is a use for it. $\endgroup$ Oct 24, 2013 at 6:39
  • 7
    $\begingroup$ Don't forget to write some code. $\endgroup$
    – Jeffε
    Oct 24, 2013 at 9:01
  • 1
    $\begingroup$ it looks "promising" based on self-study of advanced topics for age level but the questioner does not exactly/explicitly say hes interested in research therefore this question may seem more appropriate to cs.se. making that assumption, that he is, see also math courses for CS masters/Phd and use the std refs associated with those answers. $\endgroup$
    – vzn
    Oct 24, 2013 at 15:17

1 Answer 1


My name is Mike. I'm a PhD student in the area of TCS. I am self taught in many areas of Mathematics and Computer Science. Many people would tell you NOT to do this, but when I was your age I bought a book on Analysis (Formal Version of Calculus) and read it cover to cover. It took about 9 months to read with a continued supply of effort and motivation, but it helped transform my way of thought and gave me the skills to formally express concepts and create proofs on my own. It also helped me to finally understand the concept of real numbers.

Here's a problem that you would face if you did this. One, it's hard and you would likely be reading it on your own. You can talk about it with your friends and parents, but most of them won't really understand. Secondly, once you finish it, you will be much better at math, but you don't get any college credit and later on you may have to retake a simpler version of the class and be bored out of your mind. I was able to avoid this by doing a summer program at a local university and afterwards enrolling there as a part-time student. It took some confidence, effort, and luck to organize such an education, but it paid off. It allowed me to continue to learn and get credit so that I could take the classes I should be taking when I got to college.

After telling that little story I decided to write up some options that I'd recommend: (1) Get a good math book and read it (2) Enroll in a college course at a local university (or summer program locally or not locally) (3) Work on programing projects (4) ** Participate in USAMTS ** - http://www.usamts.org/ (5) But, whatever you do, try not to do it all alone

Options for what you could be learning: (a) Intro to Formal Mathematics: any book that includes proofs, sets and functions, basic number theory, inequalities, basic counting problems, and fun/interesting/challenging problems. (b) Number Theory - I did well starting out with a few number theory books early on. (c) Intro to Analysis - Formal version of Calculus and a study of real numbers. (d) I myself didn't learn much graph theory until later on, but I don't think that would be an unreasonable subject to learn about especially since it's important for Computer Science and Computation in general.

You should know this as well. For all those who are self teachers, be aware that communication with others is key. It's important to develop the flexibility to take on new terminology, to be capable of verbally expressing complex concepts, and to take the time and energy to really focus and listen to others.

I wish you the best of luck with everything. If you ever would like to talk further, please respond. I am more than willing to chat with you every now and then. :D

Ps. I would have started out by saying hi, but it didn't let me.

  • 3
    $\begingroup$ If the person is interested in theoretical computer science, instead of a mathematics book, there are several TCS books to use for self-study. $\endgroup$
    – Vijay D
    Oct 27, 2013 at 7:33

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.