A math noobie here: I want to learn the TAOCP but the pre-req is Concrete Mathematics which I also find hard--it seems almost cryptic. Any ideas for a book before Concrete Mathematics? Thanks in advance.
Concrete Mathematics is not a prerequisite, but an expanded version of the "Mathematical Preliminaries" section of TAOCP. (More precisely, Knuth and later Graham used to teach a course at Stanford based on that section of TAOCP; the book Concrete Mathematics is based on the lecture notes of that course.)
That apart, I (and Knuth) recommend just skipping the math parts when they get hard. You can always come back to them later if you're interested.
This is what he says in the preface to Vol 1 (p. viii):
> A few words are in order about the mathematical content of this set of books. The material has been organized so that persons with no more than a knowledge of high-school algebra may read it, skimming briefly over the more mathematical portions; yet a reader who is mathematically inclined will learn about many interesting mathematical techniques related to discrete mathematics. This dual level of presentation has been achieved […] also by arranging most sections so that the main mathematical results are stated before their proofs. […]
> A reader who is interested primarily in programming rather than in the associated mathematics may stop reading most sections as soon as the mathematics becomes recognizably difficult. On the other hand, a mathematically oriented reader will find a wealth of interesting material collected here. Much of the published mathematics about computer programming has been faulty, and one of the purposes of this book is to instruct readers in proper mathematical approaches to this subject. Since I profess to be a mathematician, it is my duty to maintain mathematical integrity as well as I can.
It makes me wonder though why previous published mathematics about computer programming has been allegedly faulty. Since I don't know enough math to objectively see whether Knuth has succeeded in his task or not...
TAOCP could have benefited a lot if someone had written a simpler on-ramping version, with examples in a powerful but newbie-friendly industrial-grade language, such as C#.
Knuth wrote that preface in the early 1960s, when it was indeed true that much of what little there was of published mathematical study related to programming was faulty. He succeeded incredibly well: he kickstarted the entire field of "analysis of algorithms", got all the details right and organized them extremely clearly, put it on a sound footing, and now mathematicians take it seriously, and published work in the area is of high quality.
Depending on your mathematical background, you might find working through the Art of Problem Solving books [0] good preparation as they would build an incredible mathematical foundation for you.
Honestly after working through those books, you could probably complete self-studying an undergraduate mathematics curriculum.
That apart, I (and Knuth) recommend just skipping the math parts when they get hard. You can always come back to them later if you're interested.
This is what he says in the preface to Vol 1 (p. viii):
> A few words are in order about the mathematical content of this set of books. The material has been organized so that persons with no more than a knowledge of high-school algebra may read it, skimming briefly over the more mathematical portions; yet a reader who is mathematically inclined will learn about many interesting mathematical techniques related to discrete mathematics. This dual level of presentation has been achieved […] also by arranging most sections so that the main mathematical results are stated before their proofs. […]
> A reader who is interested primarily in programming rather than in the associated mathematics may stop reading most sections as soon as the mathematics becomes recognizably difficult. On the other hand, a mathematically oriented reader will find a wealth of interesting material collected here. Much of the published mathematics about computer programming has been faulty, and one of the purposes of this book is to instruct readers in proper mathematical approaches to this subject. Since I profess to be a mathematician, it is my duty to maintain mathematical integrity as well as I can.