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?
|
|
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". |
|||||||||||||
|
|
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. |
|||
|
|
|
I'm currently a second year Computer Science student and as far as I can tell you should put more emphasis on discrete maths. |
|||
|
|
|
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:
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! |
|||
|
|
|
I'm currently a user of concrete Mathemactics. It's quite pretty interesting and well depth in the foundations of Computer Science |
|||
|
|
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. |
|||
|
|
|
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. |
|||
|
|
