What helped me ace the the exam was doing a hundreds of problems. I couldn't answer them most of the time, so I'd need an answer key nearby to get unstuck.
Drill, drill, drill. Just like you'd expect to drill for calculus, you can drill for this class.
What I found helpful was Rosen's "Discrete Mathematics and Its Applications". The material wasn't the best, but the problems are excellent. You can buy an older edition of the book and its solution manual for next to nothing on used book sites like abebooks.com
This happens with a lot of books out there. It would have been great if the authors of MCS gave solutions for at least some select questions.
Also available on iTunes U.
It is Carleton University's freshman/first year Discrete Structures/Math course (COMP1805). They cover a lot of the same material, but at a more leisure pace and assume a lot less background.
So after a bit of research I decided to start working my way through "How to Prove It" by Velleman, which has introduced me to many of the concepts that seem to be pre-requisites for this course: set theory, logic, proof strategies, etc.
I was able to start at the beginning and get all the necessary math to actually step forward to some of the more complex courses. I'd suggest starting there.
To me they were most useful when I just needed a refresher on the precise operations to go through in order to solve a particular kind of problem, but already understood it. It's hard to beat a textbook for learning material that is completely new to me.
Looking back at the psets, i think it's actually worth looking at them in reverse order just to not get too discouraged: the class ends on some number theory and begins with the Relation/Axiom/Set/Sequence stuff you see in early high level math classes. Some of that number theory/counting stuff is incredibly accessible from the outset, so the class doesn't just get monotonically more obtuse.
That said, if you've worked through vellman and you finish up this class, you're more than ready to do a class in proper number theory, discrete math or even real or complex analysis. Somebody else said that this course was a prereq for clrs, it is sort of, but you could take them both concurrently if you had to, as clrs doesn't have such a strong focus on proofs (if you're interested, 6.045j is a good followup in automata/computability/etc, lots of regexes, state machines and turing machines)
anyhow, i just want to say that it's ok if you don't get it all at once. i think i ended up seeing lots of these ideas two or three times in a variety of classes. probably the first time i was just mechanically spitting out proofs without understanding them. by the third time i came across them, they actually clicked for me. But there was value (for me at least) to exposure early on because you do know the things that are hazy and it's easier to dive deeper on those the next time you encounter them.
Also, curious to know if anyone has good book suggestions or places with practice problems.
Edit: This is the best list I've been able to find so far http://datasciencemasters.org/#math
Next Calculus: I recommend Gilbert Strang's text book which will take you through what in uni is called Caculus 3, 1 being intro, 2 being differential and 3 being integral. I in the midst of this book and so can't speak to further but my plan is to move onto Strang's linear Algebra. After that, where to go depends on particular interest but leaving any of that out, in my opinion, will just handicap your further studies. Moder education does a lot of things wrong but the standard math sequence in use everywhere isn't one of them imo.
Just to confirm, are these the right books?
- https://open.umn.edu/opentextbooks/BookDetail.aspx?bookId=10 / http://ocw.mit.edu/ans7870/resources/Strang/Edited/Calculus/...
You should know high school algebra and precalculus to be able to read the book. Trigonometry and calculus are not prerequisites, although you will probably want to learn those too.
Would you agree?
It's not that the lectures are better, but getting a second chance to see the topics under slightly different contexts has been pretty effective for study. I've had the same experience with Khan Academy in my lower division courses.
I do know that there were many students who double majored in Math / Computer Science although there was a restriction on minoring in mathematics as a CS student because of the large number of prerequisites. Still, it seems useful to combine proofs, induction, graph theory and related domains into one course. I did opt for taking a large number of math classes and some fairly high-level electives, and I have to say the most interesting area I came across was the use of generating functions for solving recurrence relations and the study of the Catalan numbers. For those of you unfamiliar with the Catalan numbers, it is the sequence of the number of binary trees that can be created with a certain number of elements. Another area they come up in (among a large number of problems) is creating paths by Manhattan distance.
The Catalan numbers also count the number of expressions with matching pairs of parentheses.
Discrete Mathematics has been invaluable in Formal Languages (Turing machines), Algorithms and Data Security.