
Discrete Mathematics and its Applications, Sixth Edition, is intended for one- or two-term introductory discrete mathematics courses taken by students from a wide variety of majors, including computer science, mathematics, and engineering. This renowned best-selling text, which has been used at over 500 institutions around the world, gives a focused introduction to the primary themes in a discrete mathematics course and demonstrates the relevance and practicality of discrete mathematics to a wide a wide variety of real-world applications...from computer science to data networking, to psychology, to chemistry, to engineering, to linguistics, to biology, to business, and to many other important fields.
- 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 Proofs:
Just pick one of these that speaks to you the most. All three are good.
Discrete Mathematics with Applications - Epp
Discrete Mathematics and Its Applications - Rosen
Mathematical Proofs: A Transition to Advanced Mathematics - Chartrand, et al.
Abstract Algebra:
How to Think about Abstract Algebra - Alcock
Abstract Algebra - Pinter
Abstract Algebra: A First Course - Saracino
Algebra - Artin
Abstract Algebra - Herstein
Abstract Algebra - Dummit & Foote
Linear Algebra:
Maybe an engineering based book first if you haven't seen linear algebra in a while (e.g. Strang or Linear Algebra: Step by Step by Singh).
Then:
Linear Algebra - Friedberg, et al
Linear Algebra Done Right - Axler
Linear Algebra - Hoffman & Kunze
Real Analysis:
How to Think About Analysis - Alcock
Understanding Analysis - Abbott
Tao's Analysis text
Principles of Mathematical Analysis - Rudin
Topology:
Topology - Munkres
Topology A Categorical Approach - Tai-Danae Bradley, Tyler Bryson, and John Terilla
Check out this list:
http://pi.math.cornell.edu/~hatcher/Other/topologybooks.pdf for others.
Category theory:
Categories and Toposes: Visualized and Explained - Southwell
Conceptual Mathematics: A First Introduction to Categories - Lawvere
Category Theory for Programmers - Milewski (if you like functional programming)
Programming with Categories - Fong, Milewski, Spivak (if you like functional programming)
Category Theory in Context - Riehl
There are a few others by Spivak which you may like.
If you don't know category theory whatsoever then I like Southwell the best (pair them up with his youtube videos). Eugenia Cheng also has a nice set of lecture videos.
If you already know math pretty well, then Riehl is a favorite.
Hope that helps!
- Discrete Mathematics And Its Applications, Kenneth H. Rosen (this is more foundational, but it's definitely targeted at a CS audience and touches on things like automata theory)
- Types and Programming Languages, Benjamin C. Pierce
- Semantics of Programming Languages, Carl Gunter
For me, the biggest aid was finding good books, ones with exercises and that explained the material very well. Then it was just a matter of reading, actually doing all the exercises, and struggling with the material until I could fully understand it; then I moved on to the next chapter/book/etc.
I've worked through a lot of books by now but here's the short list of ones that I think are great for getting started(especially, if you do what I described above), also when these have solutions manuals I would advise getting them as well so you can ensure you understand how every problem works.
1. Calculus 4th ed. by Smith and Minton
2. Introduction to Linear Algebra (Gilbert Strang)
3. Introduction to Probability Theory (Hoel, Port, Stone)
4. Discrete Mathematics and its applications (Rosen)
5. Introduction to Automata Theory, Languages, and Computation (Hopcroft)
6. Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein)
It will take you at least a year if not two to work through all these in your spare time, but the advantage is that after that you'll have the skills to be able to approach just about any topic in computer science (even highly theoretical ones) and not have much difficulty understanding them (at least that was my experience).
Some examples that I enjoyed:
- SICP
- Discrete Mathematics and Its Applications
- K&R
- The C++ Programming Language
- Code: The Hidden Language of Computer Hardware and Software
- GEB
- Real-Time Rendering
- Artificial Intelligence: A Modern Approach
As a counter-example, some books that are considered classics or fundamental, and, in my opinion, don’t really shine in their style or structure:
- Deep Learning
- The Pragmatic Programmer
- Code Complete
- Introduction to Algorithms
There's a book series called The Best American Science and Nature Writing that I wholeheartedly recommend. Which books would you put in the shelf next to them?