https://pages.cs.wisc.edu/~remzi/OSTEP/
I failed the interview for an internship I really wanted in my 2nd year of engineering; I did get a shit internship that summer, but being really shaken at my incompetence, I took up this book, and quite honestly, it changed everything!
It truly sparked an interest in systems for me. The book helped me build a strong foundation in systems; Processes, memory, filesystems, networks, concurrency, synchronization and more. After reading OSTEP, it felt like an epiphany, and I charted a path for the rest of 2 years of college around distributed systems, systems research, and virtualization.
And the best part is that all this knowledge is free! Kudos to Professor Remzi and his work!
I studied math in university and the book that really improved me mathematically was baby rudin. I really struggled with this the first time I worked through it and had to also fall back on Abott's analysis book, but after my first analysis course I worked through Rudin again and it just clicked. The exercises are really well chosen and the text is just so on point. Every sentence in the book is extremely carefully chosen and of fundamental importance to what Rudin wants to teach you.
It's really rare that you find textbooks that almost kind of have a certain magic to them, like you are directly taught by one of the greatest minds in that field. These two books definitely meet that criteria.
Purely functional data structures by Chris Okasaki. Just totally changed my perspective about all sorts of things in computer science. As well as being one of the most advanced comp-sci books I've ever read, it's truly mind-expanding in every possible way. How many comp-sci books have you read that make you question how something as basic as a number is stored?
The introduction gives a history lesson, a great description of the method of exhaustion with descriptive drawings, and some very straightforward proofs on finding the area under the curve for parabolic segments via some basic infinite sums (no limits), all in 10 pages in a conversational style. And it just gets better from there.
My dad gave me his book he used in the 70s and I read it in high school in parallel to the textbook the school issued. Everyone thought I was some genius because I thought calculus was so obvious and I could explain it so well but I was just parroting the text and proofs from this book, basically verbatum. I told the other kids to use it as well but no one did.
About halfway through the book, they build an explicit dispatch table, and I instantly understood 1) why my C code was so crappy, and B) why C++ and OO languages miss the boat (hint: they only implement the dispatch table in one orientation)
Worth struggling through, even if you never write a line of Lisp code. It has a lot in it about nice designs, abstraction barriers, and how languages actually work.
- Discrete Mathematics with Applications, by Susanna Epp, or
- Discrete Mathematics and Its Applications, by Kenneth Rosen (both have the same content, choose the style that you prefer), and
- Concrete Mathematics, by our lord and savior Donald Knuth.
I don't plan on reading TAOCP anymore as I would be dead by the time I finish reading everything else, but those introductory books are very good for beginners.
_Introduction to Quantum Mechanics_ by David Griffiths. Not CS or Math, but an amazing book because if you sit down and work through it it gives you a manageable intro to a completely non-intuitive and mysterious scientific field. Prerequisites are “only” multivariable calc and linear algebra.
_Algebra_ by Michael Artin. This was the book I decided to grind through at the right time to learn abstract algebra and get better at rigorous proofs, and it was worth it. Part of why I loved this book and subject is because it feels dry and mechanical at first, but if you work on it long enough you can see the beautiful bigger picture come together.
_Introduction to Topological Manifolds_ by John M. Lee. This was another “right book at the right time” for me. The title is a bit jargony, but it is a rigorous introduction to the foundational objects of modern geometry (namely topological spaces and manifolds in particular). Great warm-up for the first book on my list.
_Algebra: Chapter 0_ by Paulo Aluffi. Weird title, but the first few chapters are the best perspective on abstract algebra I’ve seen. He focuses early on categories in a useful and philosophically interesting way, which is unique.
_Gravitation_ by Misner, Thorne, and Wheeler. Didn’t read the whole thing, but this book taught me a tensor is just a higher-order linear function. Who knew? Most physicists give really crappy explanations of tensors. Also I love that this book, affectionately known as the “phone book”, is so heavy that one imagines spacetime curving around it.
It’s a tiny book but powerful. It helped me a prepare for college. There’s something very inspiring about understanding geometry, trig, and algebra well enough that you can flip through a few pages, follow along, and basically cover the whole of those subjects as taught in high schools.
I later used it to study for the GMAT and GRE and got a 99 percentile math score both times. I’m reasonably intelligent but not a math whiz. The book definitely helped. It is brief but densely-packed with everything you really need to know.
The Art of Computer Programming—NOT for the reason you expect. The series is simultaneously fantastic and terrible. Being able to articulate why the series just plain sucks even though it’s also really good at the same time. 90% of the time, if there’s something I want to look up in TAOCP, I can just go for a walk, realize whatever I’m trying to do is unnecessary work, and come back and work on actual important stuff I care about. The other 10% of the time, I get better answers from digging through the citations on Wikipedia.
Exercises for the Feynman Lectures on Physics—Yes, the exercise book, not the lecture book. I know it’s not CS or math. The way that the problems build on each other is spellbinding. For example, there’s an early problem where you calculate the mean free path of air, but you’re not given a formula for it—you’re just given a series of problems which provoke you to think about the subject in a way that you can figure out a formula for it yourself.
Also, this is kind of cheating since I went through the "Nand 2 Tetris" video course, but there is a book that goes along with it, "The Elements of Computing Systems". The course really drove home for me the power of simple, well-designed layers in building complex systems, since the end goal of building a CPU from scratch sounded impossibly intimidating at the start but by the end I was comfortable in explaining every detail. I think it counts since the book covers the same material.
I never found a book like that for algebra. Algebra felt opaque, simultaneously hard and boring, and linear algebra felt dry and mechanical, more like a vocational skill than like mathematics. If I had encountered Axler's Linear Algebra Done Right in undergrad, I might have been more interested in algebra.
By the time I encountered "computer science" in my mid-twenties, I don't think the quality of textbook mattered as much to me, but I wish I could remember the name of the formal languages and automata textbook I used to have. It was short and probably not very advanced, but the concepts are still vivid in my head. I see state machines everywhere, and things feel easy to me when I can tackle them as state machines.
It’s non-technical, far more philosophical, and the very few parts where it wades into the technical side are outdated. That said, what it does is a great job of embodying the sort of Zen of the Unix ethos. Almost a high level “this is how you keep your sanity”, I cannot recommend it highly enough.
I want to say it was formative but it moreso just helped solidify the lessons I had come to on my own.
http://www.catb.org/~esr/writings/taoup/html/ (also available as a physical book or kindle ebook)
http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-...
Microelectronics and the Personal Computer Scientific American 237, no. 3 (1977)(Sep.): 230-244. scans at https://www.digibarn.com/collections/books/xerox-parc-1970-8...
Programming Your Own Computer, in Science Year, The World Book Annual Science Supplement, 183-195. (Chicago, Ill., 1978).
Fortran Coloring Book https://archive.org/details/9780262610261
BASIC Cookbook https://archive.org/details/Basic_Cookbook_1978_Tab_Books
and later, in 1984, the Smalltalk-80: The Language and Its Implementation (the Blue Book) http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....
If you think you see a theme here, you would be right.
https://www.amazon.com/gp/product/B07FJ6RRK7/ref=as_li_tl?ie...
You might be familiar with Feynman's Lectures on Physics, but his lectures on Computation (based on a class he taught and his work in 'Connection Machine') aren't any less amazing. Through this short book, Feynman guides us through the concept of computation and the van Neumann architecture in his unique style, from logic functions, to Turing machines, coding and even quantum computers. It will give you a unique appreciation of the finer points in which computers are "Dumb as hell but go like mad" so that you can better squeeze every bit of performance out of your code.
[0] https://math.mit.edu/~gs/linearalgebra/
[1] https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra...
- Code The Hidden Language of Computer Hardware and Software (https://www.programmingbooks.dev/#code)
- Grokking Algorithms (https://www.programmingbooks.dev/#grokking-algorithms)
- The Little Schemer (https://www.programmingbooks.dev/#the-little-schemer)
These two books I really found interesting as well:
- Nine Algorithms That Changed the Future (https://www.programmingbooks.dev/extra/#nine-algorithms-that...)
- Good Math (https://www.programmingbooks.dev/extra/#good-math)
I read this about 2 years into my study of CS. I found the design of the internet, at times intentional and very often emergent / working around constraints, absolutely fascinating. I couldn’t help feeling that algorithms were things I could pull off the shelf but protocols were something I’d need to be able to design well throughout my career.
Learning Perl was the first book I did any kind of programming with, though I didn't end up sticking with Perl.
Learning C# 3.0 made me finally get OO programming and that was when I first started writing programs that did much of anything.
Discrete Mathematics by Epp gave me a basic grounding in the math I needed to understand CS books.
The Algorithm Design Manual by Skiena and Algorims by Sedgewick and Wayne helped me start to understand the "CS" side of programming.
Tanenbaum's Operating Systems textbook taught me a fair bit about operating systems and concurrency.
I'm sure you could have used a different series but without these I wouldn't know how to program, let alone have made a job of it.
1) Nonlinear Dynamics and Chaos by Strogatz completely changed my relationship with applied math. I'd studied diffyqs and PDEs earlier but that was under duress and hasn't been particularly useful. Traditional books don't tell you that analysis solves only a tiny subset of important real-world problems, and for me, were just another boring dose of plug-and-chug calculus.
Strogatz immediately motivates the subject and uses analysis as a jumping-off point (with some pretty hard analytical HW problems!), but he quickly pivots to numerical methods with a very strong intuitive and visual/geometric approach. Years later, I'm using this knowledge surprisingly often.
https://www.amazon.com/Nonlinear-Dynamics-Student-Solutions-...
2) Linear Programming by Chvatal was the book that made LP duality really click for me. Prior to reading Chvatal I mechanically understood duality but with no intuition. Chvatal explains duality from a bounding perspective, and even better, motivates duality through simple dimensional analysis, just like in physics! (The Strogatz book above also motivates dimensional analysis and dimensionless groups, which has been very useful to me over the long term.)
https://www.amazon.com/Linear-Programming-University-Vasek-C...
3) Statistical Methods: The Geometric Approach, Saville and Wood was my bridge from meaningless opaque algebraic and calculus stats to a solid understanding. The book builds everything on vector space projections at the level of undergrad linear algebra. Even a simple mean of 3 numbers now sparkles with intuition and insight.
https://www.amazon.com/Statistical-Methods-Geometric-Approac...
They also published a short paper that conveys the key ideas https://www.jstor.org/stable/2684537
Coming from electronics and computer hardware this made me see that those "mysterious" high level languages where all just loops and if-then-else statements.
Then
Algorithms + Data Structures = Programs by Niklaus Wirth
gave a good practical framework for entering computer science and software engineering.
For math, it was Gödel, Escher, Bach. I was into mathematics in high school as well, but did not have a proper teacher at the time so I was stuck on trying to absorb some of the more technical undergraduate texts in abstract algebra. However, GEB was at the right level and had a nice layman explanation of the 2nd incompleteness theorem, along with beautiful exposition into philosophy, computer science, math, art, music and cognition. I enjoyed it so much I even wrote a compiler for the programming language in the book to C.[1] The exposition on formal reasoning also got me started in learning the Coq theorem prover, which I continue to use to this day.
[0] https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PLE18841CAB...
It really helped my to go from knowing how to program to knowing how to implement software.
Similarly, Analysis I by Terence Tao has a 'Why do analysis' that has made me actually enjoy analysis.
I barely scraped through with a C for Engineering Math (Differential Equations).
For me, the teacher made the difference in math.
For CS, the most influential books for me were Knuth, Sorting and Searching (although I actually bought all three books in the series, unlike most others I knew), as well as the original Kernighan & Ritchie book on the C programming language (before ANSI C was published).
I have been searching for those books online but couldn’t find them, or maybe I am not searching for the right keywords.
If anyone knows the books I am referring to, I would be willing to pay premium :)
After that I sat down and binge read the entire tome. I haven’t really touched PHP in 10 years but now my first step when I want to learn something is to read an entire book on it cover to cover.
I only wish I’d learned the lesson sooner. Assorted guides and blog posts on the internet just don’t come close to the level of thoroughness and understanding that a book will.
This my sound arrogant but I believe Iverson's work is the pinnacle organized thinking (the bridges the gap between programming and maths elegantly).
His work is also closely related to that of Leslie Lamport's TLA+ project. Lamport describes TLA+ as "thinking above the code".
2. The Singularity is near by Ray Kurzweil.
This is more of a popular computer science book. I don't any other book articulates the true (optimistic) potential of the computer better than this. It made me appreciate computers more than any other machine.
For intellectual ability: it wasn't a particular book, but it was an honors-level Real Analysis class that forced me to re-learn the way I learn mathematics.
Jeffreys, Harold, and Bertha Swirles Jeffreys. Methods Of Mathematical Physics. Cambridge At The University Press, 1950. http://archive.org/details/methodsofmathema031187mbp.
Kernighan, Brian W., and Dennis M. Ritchie. The C Programming Language. Prentice-Hall Software Series. Englewood Cliffs, N.J: Prentice-Hall, 1978.
As an adult, it’s Shannon’s The Mathematical Theory of Communication. I read it at least once a year. It’s the most intellectually powerful paper I’ve ever read.
If I can include this functional pearl "A play on regular expression", Not a book though.
These two showed how composition and simple abstraction could make the solution super beautiful.
http://www.computinghistory.org.uk/det/22092/Programming-The...
I found "Introduction to Algorithms" [1] very accessible for a CS student and also "Introduction to Automata Theory, Languages, and Computation" [2] very complete.
[1] https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press...
[2] https://en.wikipedia.org/wiki/Introduction_to_Automata_Theor...
1. How to Prove It: A Structured Approach, Velleman (perfectly prepares for reading of pretty much any math book)
2. Higher Algebra and before that Elementary Algebra, Hall (just some intro stuff; general public license, can be freely downloaded from archive.org)
Especially chapters about virtual memory and memory hierarchy and the one about processes and traps.. I didn't know anything about these things when I started reading the book.
Theory of Computation by Sipser. (More subject specific and just a textbook really, I just thought it was a really great one and was able to read it ahead of my most relevant course.)
The one book that really made everything come together was "Flights of Fantasy" https://www.amazon.com/Flights-Fantasy-Programming-Video-Gam...
This covered how to write a simple flight simulator in C++ on the hardware of the time. It also gave a really good practical primer on the linear algebra needed for 3d graphics. Inline assembly and a bunch of fun algorithms for quick and dirty approximate math were there too.
That book, along with the free time and obsession that a 14 year old can muster, was probably what started me on my (in my opinion) successful hacking and optimization trajectory.
It's a bit dated now that most CPU's have amenities like built in floating point math but not too long ago I was doing embedded audio synthesis on an 8bit AVR micro and Bresenham's line drawing algorithm was just what I needed to efficiently generate saw waves.
Another book that influenced me at an early age was a QBASIC textbook written by a Sacramento State University professor; I received this book from my mom's friend when I started learning QBASIC at nine years old and was seeking out resources. I still have this textbook; it was my very first programming text, not counting the computer literacy book I mentioned.
It's bounced around between publishers over the years and is generally a pain to get. I have the 1996 edition[1] which is out of print. Then there's a 2002 edition[2] and a 2000 edition[3].
[1] https://www.amazon.com/Feynman-Lectures-Computation-Richard-...
[2] https://www.amazon.com/Feynman-Computation-Frontiers-Physics...
[3] https://www.amazon.com/Feynman-Lectures-Computation-Frontier...
Books that sparked my interest in all of Mathematics (BTW, I'll be glad if you recommend any Abstract Algebra books):
- Calculus, Howard Anton.
- Calculus, Spivak
- Advanced Engineering Mathematics, Erwin Kreyszig
- Elementary Number Theory, David Burton.
Computer Science/Engineering:
- Data Structures and Algorithms, Adam Drozdek
- Digital Design, Morris Mano
- David Patterson and John Hennesey's books
- Mastering Embedded Linux Programming, Chris Simmonds.
Math: - The Code Book by Simon Singh. - Chaos by James Gleick.
DOM Scripting: Web Design with JavaScript and the Document Object Model by Jeremy Keith
Great book and interacting with the DOM is essential to performance in any kind of browser work. Unfortunately most developers today are completely terrified of the DOM, as in PTSD and need counseling terrified.
[1] https://www.weltbild.at/artikel/buch/funktionale-programmier...
After Sophomore year in High School, I realised that I have been doing Math all wrong. Although I always got scores close to 100%. I was just memorizing algorithms and formulas to solve problems. Something changed in me, and then I started asking- "why" and "how"? With the risk of sounding a little dramatic, this changed my life. I started to read Math for the first time in my life. I started to get them. There was a set of local textbook that contributed well in High School- Rudimentary Mathematics by four authors whose names I don't remember.
In college, I decided to be a Physics major, and I had to take two Mathematical Physics classes. Big impact in my life. I mainly studied the textbook by Arfken, Weber, Harris, and Vector Calculus by Spiegel. Then, in that year and the next, I actually applied what I learned. That also made a big difference.
I now work in Deep Learning. When I was learning Machine Learning and Deep Learning, my habit of properly understanding Math since the age of 16 paid me back very generously. I got the Math of Deep Learning instantly, with no struggles. Then I made projects and found employment. Here, too, I actually applied what I learned.
I see being able to apply Math in your job as a sign of being fortunate and I am grateful.
Anyway, I would advise you learn Math with a purpose. Rather just learning Math for tests or math's sake, learn Math with a purpose. Do something with the math you learn. It may be Data Science, may be computer graphics, may be cryptography, maybe anything. This will make a huge change in how you see math.
Watching MIT OCW Calculus course videos in HS had a big influence in me.
CS:
I would say that learning to program well made the field worthwhile for me.
Others have mentioned Code by Petzold.
When I was learning Deep Learning, Jeremy Howard's book "Deep Learning for Coders with fastai and PyTorch" and the lecture videos made Deep Learning easier for me. I did not rely upon only that. But it was a great starting point.
The Little Schemer was great, too. This little book is worth much more than one who hadn't read it might think.
The C Programming Language by Kernighan and Ritchie is one of the books I read early in life. Did not finish it. Still, a great book.
I always feared the breadth of Algorithm books. "A Common Sense Guide to Data Structures and Algorithms" fro PragProg Bookshelf gave me very nice overview of DSA.
Python Crash Course by Eric Matthes made programming click for me when I was in my second year in college.
For anything C/C++ related, grinding these little puzzles yielded tremendous value for the time spent and removed any lingering questions I had about annoying low level details of the languages for the rest of my career. There are a lot of heady academic books that consume a lot of time, but this one impacts the 80% of time you actually spend at the keyboard.
Stroustroup's "The C++ Programming Language" is eloquently written and surprisingly accessible to beginning/intermediate developers.
It's very pragmatic, but also pushes into thinking through the design of your system and also digs into the "why" and "how" of what is going on and balances all of this quite well IMO. I still have my copy on my shelf.
- Kicked off learning about Big O Notation through this. The concepts completely changed the way I looked at code, especially being mostly self taught beforehand.
Numerical Analysis - Sauer
- Learned about Newton's Method from this book which blew my mind at the time and got me hooked.
Paul's Notes - https://tutorial.math.lamar.edu/classes/de/de.aspx
https://condor.depaul.edu/~sepp/DMwA4e.htm
2. Mathematics for Computer Science by by Eric Lehman, F Thomson Leighton, Albert R Meyer
https://www.pinterest.ca/pin/431712314270512039/ https://www.amazon.com/Mathematics-science-library-David-Ber...
Everything after that was just detail.
When I was a student I carried it around like a bible. I still keep my copy from school, out of nostalgia.
I checked it out from a public library around 2004, at age 13 or 14, and can credit my entire career to it (and a lot of incredibly supportive adults that encouraged and grew a passion in me from a young age).
I own Spivak's Calculus (which is a great book), but if you are not interested in the pure math side or you just don't want to grind a 700 page tome I recommend Calculus made easy. Contrary to the title and the small size of this book, it's an amazing and intuitive. When I read Calculus Made Easy I also read Infinite powers by Steven Strogratz they complete each other very well.
I have a copy of "The Art of Probability: For Scientists and Engineers" by Hamming it's a really good book.
If you are interested in Bayesian probability, machine learning or information theory I recommend "Information Theory, Inference, and Learning Algorithms" by MacKay it's an amazing book. It's available as in PDF format on the author's website.
The Transactor magazine
Godel, Escher, Bach: An Eternal Golden Braid
Relearning mechanics from first principles is fun!
Computer Science: CLR Algorithms book and Skiena's Algorithm Design Manual (read both in college)
A Tour of the Calculus by David Berlinski
Many books of this kind are usually called "Intro To Discrete Math" because I think discrete math is easier and neater than its continuous counterpart. Most such books consider a sampling of topics from number theory, combinatorics, graph theory and discrete probability. Obviously, they do not even scratch the surface of the subjects they teach as that's not the goal. For example, compare what's in the counting section of a typical intro to discrete math book to an intro to counting proper. For example, my very first discrete math textbook was "Discrete Mathematics with Applications" by Susanna Epp and for counting it was "Combinatorics: A Guided Tour" by David R Mazur. Epp's books covers much, much, much less. Similarly, currently one of the very best intros to elementary number theory is "Number Theory: Step By Step" by Kuldeep Singh. The latter also contains much more material than a typical intro to discrete math.
Beyond that every author of an into to discrete math likes to include a little taste of their own personal favorites. For example, Susanna Epp has a chapter on algorithm analysis whereas, say, Edward Scheinerman talks a little bit about group theory in his book "Mathematics: A Discrete Introduction". Yet other authors include chapters on geometry, vectors spaces, generating functions etc.
I noticed (almost) every math/CS adjacent thread on HN gets mention of Big O notation. IMO, the best place to learn that is a textbook on discrete math. For example, Susanna Epp has a whole chapter dedicated to this topic in her intro to discrete math book. Consider [0] from Epp's book. Since it's a math book it's very careful and thorough meaning if you don't understand something in that example reading the material that precedes will clarify everything; just a matter of backtracking far enough. Since it's an extremely introductory book, it's also very patient. I personally struggled with the motivation for defining total derivative through little-o notation.
There are a ton more textbooks on discrete math like, say, " Essential Discrete Mathematics for Computer Science" by Lewis & Zax or "Discrete Mathematics: An Open Introduction" by Oscar Levin.
Some intro books also attempt to include a tiny bit of real analysis and general topology. Topics include ways of using least upper bound, epsilon-delta arguments, open/closed sets, a little on metric spaces etc. Obviously, such books don't get carried away by ditching epsilon-delta/balls arguments in favor of more general open sets to define continuity, for example. One such book that comes to mind is "Mathematical Proofs: A Transition to Advanced Mathematics" by Chartrand, Polimeni, Zhang.
I think the best book in this introductory genre is "Book Of Proof" by Richard Hammack. It's freely available. I see the latest edition added a few techniques for proving convergence and continuity on the real line: epsilon-delta and epsilon-N stuff.
I call the books mentioned above "Intro To Math 1". After these books one can get started with more in depth books on the subjects considered in the aforementioned books or pick up an intro to real analysis, topology, abstract algebra, whatever.
One of the most effective textbooks on elementary math analysis is "Principles of Mathematical Analysis" by Rudin. But one will have a real tough time with it even after studying the aforementioned books. But there are fantastic preparatory books like "Linear Algebra: Step by Step" by Kuldeep Singh which one needs because Rudin considers Euclidean Spaces proper, not just the reals. Other helpful books include "Yet Another Introduction to Analysis" by Bryant, "How to Think About Analysis" by Lara Alcock, "A First Course in Mathematical Analysis" by Brannan, "Real Analysis: A Long-Form Mathematics Textbook by Jay Cummings" etc. None of these books are perfect. For example, none of them (but that of Cummings) include the necessary topological concepts. Also, even though the book by Bryant is chatty, his exercises can be tough. Case in point, he expects you to prove that rationals are incomplete in the very first chapter. To his credit, he gives a lot of hints and every one of his exercises have detailed solutions. When I first saw Alcock's book I got the impression that her book was an excuse to explain how we think about the convergence in reals. The rest of the book felt like a filler, even though the book is worth it for that chapter alone. It's good to look into many different books because the authors make different choices. For example, Cummings proves Bolzano-Weierstrass theorem through the fact that every sequence has a monotone subsequence whereas Brannan does it by way of bisection argument. Other authors might make yet other choices. In math the more techniques you have in your tool chest, the easier it is to attack problems. If you solve a problem one way, but the solution given is different it's worth memorizing the alternative solution as it's another technique that will come in handy in a different situation.
Ok, I didn't say anything about abstract algebra and other subjects, but this post is already turning into a novel.
After making very first and wobbly steps into math through the intro to discrete math books, the other path is to study what I call "Intro To Math 2". There are books like "Mathematical Concepts" by Jost or (especially) "Essential Mathematics for Undergraduates" by Giossi. Wanted to say more about this or the other topics above. Maybe next time.
Please, excuse the grammar and inconsistent notation (& naming convention) as it is very late here.
* Code Reading: The Open Source Perspective
* SICP
- Biggs: Discrete Maths
- Stroud: Engineering Mathematics
- Solkolnikoff: Mathematics of Physics and Modern Engineering
- Sommerville: Software Engineering
- Aho: Compilers
- Kernighan and Ritchie: The C Programming Language
- Kernighan and Pike: The UNIX Programming Environment
- Ben Ari: Principles of Concurrent Programming
- Clements: Microprocessor Systems Design
- Tannenbaum: Distributed Operating Systems
- Dean, Allen, Aloimonos: Articficial Intelligence
- Knuth: The Art of Computer Programming
- Yourdon: Object Oriented Systems Design
- Abelson and Sussman: Structure and Interpretation
Maybe the one that ones that changed me most:
- Polya: How to Solve it - Hofstadter: Godel Escher Bach
really taught me how to think about math