Take the 2-minute tour ×

I am going into university next year. I think maths would be one of the more important aspects of computer science. I recently saw the MIT Introduction to Algorithms video on YouTube and the maths required is quite hardcore. I wonder what parts of maths I might need; probability, calculus, trigonometry? Will the book Concrete Mathematics -- it claims to be foundation for computer science -- on Amazon cover most of what's required?

share|improve this question

closed as off-topic by MichaelT, GlenH7, user61852, Dan Pichelman, mattnz Jul 2 at 6:58



I'm currently a user of concrete Mathemactics. It's quite pretty interesting and well depth in the foundations of Computer Science –  user44713 Jan 8 '12 at 23:47
@Job - That link appears to be broken. –  rob Jan 9 '12 at 17:33
possible duplicate of Is there a canonical book on mathematics for programmers? –  Matthieu Jan 13 '12 at 1:59
possible duplicate of Where should I start learning math with regards to programming –  Doc Brown Mar 12 '12 at 21:40
add comment

5 Answers

up vote 12 down vote accepted

Yes, the Concrete Mathematics book will certainly help. (Quoted from Amazon.com: "Concrete Mathematics is a blending of CONtinuous and disCRETE mathematics.")

Most CS degree programs make discrete maths a prerequisite for admission into the degree program. In other words, it is a first-year course, without which students will find it hard to follow the Introduction to Algorithms materials.

Discrete Mathematics is very different from any mathematics you've seen in high-school. It is closer to logic, set and graph. You may find that the topics are often what makes the so-called "IQ-questions".

share|improve this answer
+1 for discrete Mathematics! –  Abimaran Kugathasan Feb 13 '11 at 8:30
Most CS degree programs make discrete maths a prerequisite for admission into the degree program. I looked at a number of CS and SE programs and discrete mathematics was always a first year (or in some cases, early second year) course. Prior knowledge or experience was never required for admission into an undergraduate curriculum and doing so would be rather silly - to the best of my knowledge, no one learns discrete mathematics before university in the US. –  Thomas Owens Jan 9 '12 at 1:08
@ThomasOwens - He was referring to the CS degree program, not plain university admission. The idea is that you get into a school, take general classes for a year or two, then apply for a specific major. If your coursework is good and you fill the pre-reqs, you get into the major. –  BlackJack Jan 9 '12 at 2:56
@BlackJack I'm not familiar with that concept. Is that a localized thing? In the US, there are "undeclared" majors as well as things like "undeclared engineering" or "undeclared computing", but at the universities that I applied to, I applied directly to software engineering and computer science programs and was accepted into them. You start day one in the major that accepts you. –  Thomas Owens Jan 9 '12 at 10:10
@ThomasOwens - I attend a US school. When I was applying there were two main methods: you apply to the university and declare a major later, or you apply to a specific school (i.e. Engineering, Arts & Sciences), and then pick a major within that school later. At my school it's the former, but I know that in some US schools, you have to apply for a specific major AFTER you get accepted. –  BlackJack Jan 9 '12 at 13:38
show 1 more comment

Bavel's 'Math Companion for Computer Science' is a well written and short easy read that addresses the math that computer science is based on. But it won't cover the trig, calculus, geometry.

share|improve this answer
add comment

If you want to self study, I would focus on calculus first, followed by discrete mathematics and calculus-based statistics. At the university that I attended, calculus was the first year sequence for computer science and software engineering. Toward the end of the calculus sequence (it was a quarter-based school, so it doesn't exactly line up with traditional semesters), the discrete mathematics sequence begins. The software engineering program required a calculus-based statistics course along with a mathematics or science elective, and the computer science program also requires a course in probability.

The textbooks that I used were Stewart's Calculus: Early Transcendentals for single-variable calculus (typically taught in either 3 quarters or 4 depending on the sequence) and Rosen's Discrete Mathematics and it's Applications (two quarters of discrete mathematics). I wasn't a fan of the engineering statistics textbook that my course required, so I only used it for the assignments and used Hayter's Probability and Statistics for Engineers and Scientists to study the material.

Although I own Concrete Mathematics, and have intended to work through it, I ended up going down a software engineering process/project management track, so I shelved it. It comes as a recommended book from many people, so if you are mathematically inclined, I would recommend working through it at some point. However, it requires an understanding of calculus and discrete mathematics. It's not an entry-level book - the course that the book was based on is a Stanford University course taken mostly by graduate students with a number of juniors and seniors from the undergraduate curriculum (from the preface of the book).

Another option that you might be interested in looking at is starting theoretical computer science - topics including automata, languages, computability, decidability, and complexity. For this, I'd recommend the Sipser's Introduction to the Theory of Computation. Some professors at my university used this in the Introduction to Computer Science Theory course, which was a second-year course (taken after calculus and discrete mathematics, although only discrete mathematics was required to understand the topics).

My final recommendation is not to bite off more than you can chew, though. I'd recommend looking at the first year (specifically the first semester or first two quarter) courses and brushing up on those topics. This would include calculus, programming, maybe discrete mathematics, and perhaps some liberal arts courses (topics such as psychology and communication are important, professionally, so don't neglect the softer courses). Typically, university programs are designed to teach you everything that you need to know to be successful in the field after graduation. If you can have a little bit of a head start, you'll be able to ease into college life without working too hard and burning out.

share|improve this answer
add comment

The rule of thumb I think is that you must ensure you know what you are supposed to know on your current stage. Since you will enter college next year, that is, if you are preparing yourself don't jump over new subjects until you are confident with the prerequisites for admission.

Given the list of subjects you mention I think the universal path is like this Trigonometry (here don't forget about Geometry) in order to do Calculus, and both Calculus and Algebra (including Linear of course) are the prior step before enter Discrete Mathematics. The program of your university will clear any doubt but trust that the path will look like the previous one... (it will be just mean otherwise).

Regarding the book you mention, from my own experience Im afraid I never had the time to read it from cover to cover (I was kind of bussy with the text books and problem sets for my classes to do a serious reading of such a good text). I do remember realizing that the reading of chapters Sums, Binomial Coefficients, Integer Functions can give you power tools for your math tasks.

If I remember well in the preface Knuth said that one the inspirations to make the book was to taught some math that is particulary usefull on computer science but that even majors in mathematics don't received (at least at that moment). So my answer for your question:

Will the book Concrete Mathematics - it claims to be foundation for computer science - on Amazon cover most of whats required?

This book is not a bible for all your college math, but if reading correctly (try the exercises) at least the first six chapters you will have good tools for your math classes and your overall cs education.

Good luck at college!

share|improve this answer
add comment

Steve Yegge has a nice post on Math for Programmers that may give you some ideas.

Discrete math, as mentioned by others is important, but as a non-CS major turned programmer, I can tell you that a breadth of understanding of math (knowing a little about trig, linear algebra, math logic and calculus) had been quite beneficial to me in my career.

share|improve this answer
add comment
