<p>For most of high school (senior right now) I wasn't the type to compete in AMC and other math competitions. Even though I can't list it as an EC now(as that's not really my concern), I really wanted to start getting involved in math/cs competitions. I'm going to major in CS next year, and I want to get better at it. Basically, I want to be a math wiz in college. I've heard great things about Art of Problem Solving, and I've already been using Project Euler. Are there any other good resources that will help me practice and get better at math/CS?</p>
<p>Khan academy? Coursera? Thats all i can think of</p>
<p>Why do competitions? Those are mostly for recreational mathematics, not the sort of thing that builds up a solid foundation. Why don’t you just start downloading free E-books on college-level mathematics? Work through those, do the exercises, and if you’re not sure of your answer, go to StackExchange (StackOverflow, math.stackexchange.com, cs.stackexchange.com, etc.) and ask for help understanding the material.</p>
<p>College level mathematics and CS courses which come to mind:</p>
<p>Calculus, linear algebra, differential equations
Abstract algebra, Modern algebra
Real analysis, Analysis, Complex analysis
Mathematical logic, set theory, model theory, category theory
Engineering mathematics, applied mathematics
Programming language syntax & semantics, formal languages and automata theory
Computability, computational complexity
Discrete mathematics, combinatorics, graph theory, information theory, cryptography</p>
<p>For CS, I’d recommend mostly the following of the above:</p>
<p>Mathematical logic, set theory, model theory, category theory
Programming language syntax & semantics, formal languages and automata theory
Computability, computational complexity
Discrete mathematics, combinatorics, graph theory, information theory, cryptography</p>
<p>(Though the others wouldn’t hurt, particularly either the Calculus/Linear algebra/DiffEq sequence, since you’ll have to do that anyway, or Abstract/Modern algebra, since that has applications to CS)</p>
<p>
</p>
<p>I’d just start reading the course books that are listed as reading resources for the courses you’ll be taking, reading example solutions/proof and solving most/all problems that are provided. Mathematics (esp. proofs) boils down to practicing different proof techniques and situations more than intuition and “logic” (well at least in undergrad and in grad level as well). That’s because you need to know the definitions exactly in order to understand how they apply and how they don’t. All of undergrad maths (pure maths specifically) is about learning what’s been said, i.e. definitions, and practicing what the definitions really mean or apply to. Some theorems have took a long time to formulate, so it’s not like you will or would find them out intuitively from just analyzing a problem. You need to know what’s been said and practice what it means. Practicing is the key, you should spend more time on doing practice problems and proofs than reading the material, because only by practice you develop the “way of thinking” how different sorts of things are solvable or provable and add techniques to your “problem solving toolkit”.</p>
<p>Compared to pure maths, CS is more applied at least for the first year or two. Less rigorous, but may be more time consuming. In CS classes most of the time is spent on reading and then possibly coding, but not that much in “drilling problems” in the same way as in maths. Well of course there are problem sets, but they’re “of a different type” than in maths, although there are also courses where there’s clear overlap between the cs topics and math topics (or i.e. they’re the same topic).</p>
<p>If you really want to be a math wiz, you ought to start “eating and breathing maths”. You should be so into it that writing proofs and reading/talking about mathematics is like the best thing in the world that you know and you can spend at least 6-8 hours a day doing it, if you just have the time. Then I think you’ll be at the level of “could-be math wiz”.</p>
<p>I’ve found Kha nacademy and such not be very good resources for other than seeing mechanical maths solving or revisiting definitions. Instead, I’d recommend reading the very good mathematics books that have been written, because things are explained in a much more comprehensive and often also thorough way and they’re explained by some of the most experienced mathematicians in the world.</p>
<p>Oh and obviously start going through the material in the same order as the courses are laid out, because otherwise you’re likely to be trying to absorb too advanced material, without having the required understanding of the prior concepts. Learning in maths is about building and learning on top of existing concepts, you can’t jump to too advanced mathematics without knowing the “prior” mathematics required to understand the more advanced mathematics.</p>
<p>For most CS programs, you will only need Calculus I, Calculus II, Linear Algebra and a sophomore-level Discrete Math class. Some schools may additionally ask for a Statistics course.</p>
<p>Having said that, I personally think a CS major should take more from the list that Aegrisomnia gave.</p>
<p>On the CS side, read this book and do the examples and exercises:</p>
<p>[Welcome</a> to the SICP Web Site](<a href=“http://mitpress.mit.edu/sicp/]Welcome”>http://mitpress.mit.edu/sicp/)</p>
<p>Will do. I’ve decided I should finish reading my calculus book and then move on to calc two and linear algebra.</p>
<p>Of math beyond the typical required courses for CS, abstract algebra and number theory are likely to be useful if you want to go into cryptography.</p>
<p>You need to learn data structures + algorithms + discrete math really before doing any CS “competitions”. Once you have those, there’s a good amount of resources because these kinds of questions appear a lot on CS interviews.</p>