
This book is an in-depth account of graph theory; it reflects the current state of the subject and emphasizes connections with other branches of pure mathematics. The volume grew out of the author's earlier book, Graph Theory - An Introductory Course, but its length is well over twice that of its predecessor, allowing it to reveal many new developments in the subject. Recognizing that graph theory is one of several courses competing for the attention of a student, the book contains extensive descriptive passages designed to convey the flavor of the subject and to arouse interest.
Also, mathematics is a massive field. The first question would be what kinds of mathematics would you like to get better at. There are great books in analysis. If you are starting out with a solid calculus knowledge, try Abbott's Understanding Analysis [1] or Duren's Invitation to Classical Analysis [2]. For asymptotic methods in PDEs, try Bender and Orszag [3] which is a wonderful book. But again, this might not be your cup of tea at all and there are more abstract or formal books like Rudin's.
If you want to approach fields without a lot of machinery, graph theory books by Bollobas are great (but difficult). See his Modern Graph Theory book [4] as an example.
For linear algebra, one of my favorites (but it was after I already learned the subject) is Trefethen's Numerical Linear Algebra book [5]. Another beautiful topic is at the intersection of linear algebra and combinatorics. See Babai and Frankl's lectures freely available online.
Then there are wonderful topics in geometry. A massive mountain to climb would be algebraic geometry. For one starting point, see [6]. Differential geometry (Spivak's multi-volume work or Needham's differential forms book) is another wonderful area. I would recommend Crane's discrete differential geometry course at Carnegie Mellon [7] if you want a concrete introduction.
You might want to demystify a topic you have heard about. E.g. Galois theory and the unsolvability of quintic equations. You could look at [8] which guides your way through wonderful problems.
We haven't even touched huge swathes of mathematics including anything topological or number theory. Even within the topics mentioned above, once you start, your journey will take a life of its own and you'll encounter multiple books and papers opening up new sub-fields.
The only approach that worked well for me in the past was to get completely consumed by what one topic one was studying. This meant not getting distracted by multiple topics. Once one enters the workforce, this is very hard (or at least has been for me). Without knowing someone, it's hard to recommend anything but the advantage with topics like graph theory and combinatorics is that one needs less machinery (as opposed to something like algebraic geometry). These fields lead you to interesting problems very rapidly and one can wrestle with them part-time.
[1] https://www.amazon.com/Understanding-Analysis-Undergraduate-...
[2] https://www.amazon.com/Invitation-Classical-Analysis-Applied...
[3] https://www.amazon.com/Advanced-Mathematical-Methods-Scienti...
[4] https://www.amazon.com/Modern-Graph-Theory-Graduate-Mathemat...
[5] https://www.amazon.com/Numerical-Linear-Algebra-Lloyd-Trefet...
[6] https://www.amazon.com/Algebraic-Geometry-Approach-Mathemati...
[7] https://www.cs.cmu.edu/~kmcrane/Projects/DDG/
[8] https://www.amazon.com/Through-Exercises-Springer-Undergradu...
If I had to say one text that is the fundamental one, I would go with a paper: “On Computable Numbers, with an Application to the Entscheidungsproblem” [1], by Alan Turing.
---
But if you just started your course in Computer Science, then I will give you some “bookshelf advice" based on my experience. I had the pleasure to study all the books I am going to recommend you, and most of them I was able to read cover-to-cover during the university years. And they are also in my bookshelf for reference.
The book order does not represent rank of importance.
* “Introduction to the Theory of Computation”, by Michael Sipser.
* I also recommend the “Elements of the Theory of Computation”, by Christos Papadimitriou.
* Another good complement is “Introduction to Automata Theory, Languages and Computation”, by Hopcroft and Ullman. (Thanks, @reacweb, for the reminder.)
* “Graph Theory”, by Reinhard Diestel. * If you feel you want to go deeper, and like a book which you cannot skip a single word, I strongly recommend “Modern Graph Theory”, by Béla Bollobás: it is one of my favorite textbooks ever!
* “The Algorithm Design Manual”, by Steven Skiena. * While a lot of people seems to praise either the Cormen et al. or the Sedgewick books, I have the feeling that “Algorithms” by Dasgupta, Papadimitriou and Vazirani is my choice for “fundamental” book. But I decided to
* “Computer Architecture: a Quantitative Approach”, by Hennessy and Patterson.* “Modern Operating Systems”, by Andrew Tanenbaum.
* “Artificial Intelligence: a Modern Approach”, by Russel and Norvig.
* “Modern Compiler Implementation (in ML)”, by Andrew Appel.
I would like to also recommend “Concrete Mathematics”, by Graham, Knuth and Patashnik, but I remember to not feel it the most pedagogical book on the subject.
Good luck!
---
[1]: https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf
For classical enumerative combinatorics, there is Richard Stanley's 'Enumerative Combinatorics'.
For graph theory, Diestel's book 'Graph Theory' is popular for introductory courses, and Bollobas' 'Modern Graph Theory' is more advanced and (as the title says) modern.
And there is Laszlo Lovasz's fantastic 'Combinatorial Problems and Exercises', which is a collection of problems and answers, and is a great way to get a feel for the subject.
Approximation Algorithms http://link.springer.com/book/10.1007/978-3-662-04565-7
How to Solve It: Modern Heuristics http://link.springer.com/book/10.1007/978-3-662-07807-5
Modern Graph Theory http://link.springer.com/book/10.1007/978-1-4612-0619-4
Computational Geometry http://link.springer.com/book/10.1007/978-3-662-03427-9