
Mathematical Analysis (often called Advanced Calculus) is generally found by students to be one of their hardest courses in Mathematics. This text uses the so-called sequential approach to continuity, differentiability and integration to make it easier to understand the subject.Topics that are generally glossed over in the standard Calculus courses are given careful study here. For example, what exactly is a 'continuous' function? And how exactly can one give a careful definition of 'integral'? The latter question is often one of the mysterious points in a Calculus course - and it is quite difficult to give a rigorous treatment of integration! The text has a large number of diagrams and helpful margin notes; and uses many graded examples and exercises, often with complete solutions, to guide students through the tricky points. It is suitable for self-study or use in parallel with a standard University course on the subject.
Dirichlet, Thomae, and Cantor functions are central in Abbott to introduction and exercises on continuity, differentiation, and integration. I thought that was an interesting pedagogical choice for an undergraduate book, especially when it is used for the very first course in mathematical analysis as in Princeton’s MATH215 (I do think it is a really nice book).
Davenport - The Higher Arithmetic
Burkill - A First Course in Mathematical Analysis (and also A Second Course in Mathematical Analysis by Burkill and Burkill)
Hardy and Wright - An introduction to the theory of numbers
How to Think About Analysis by Lara Alcock.
Understanding Analysis by Stephen Abbot.
Mathematical Analysis and Proof by David Stirling.
Numbers and Functions: Steps into Analysis by Burn.
Analysis: With an Introduction to Proof by Steven Lay.
A First Course in Mathematical Analysis by David Brannan.
It has been 3 years now and I feel that I have become decent at coding, yet my education in math and computer science is sorely lacking. For example, I am working on a semantic search project and I am reading about cross-encoders, and while I understand the problem statement and the solution and could operate the model based on the documentation, I have no idea how it works. Once I understand how to apply the tool, the programs become easy to write and I can resolve errors by directly referencing documentation, either of the language or the library. The last time I wrote python was major version 2 as a 16 year old, but I'm learning python 3 10 years later from the reference manual. This is what I mean by 'decent at coding' but lacking in math/cs background. Put frankly:
- I have gotten to the point where the foundations of the techniques to solve the problems I am working on are beyond my educational level, but I am a decent enough engineer to identify where the technique could be applied and how to implement it.
- I want to learn the math and cs to work on scientific computing. I want to investigate dynamical systems with computers. I think my potential lies not in specializing in a specific natural science (such as geophysics), but rather becoming a skilled implementer.
Is the goal of transitioning to working on scientific or research software as an implementer for someone with little formal education a reasonable one? If it's not, this will still be my hobby. How can I remediate/fill in the gaps of my math education?
- Book list for math: currently reading "A first course in mathematical analysis" by Burkhill for calculus (to refresh and extend high school), and then after that: my college linear algebra book (done wrong), Spivak's "Calculus on Manifolds", and "Differential Equations with Applications and Historical Notes".
- CS/Software Engineering: I gravitate towards functional programming and mathematical logic, so resources like the 'Software Foundations'[2] series are appealing. However my interest in numerical methods and scientific computing tells me that reading a book such as 'Computer Systems: A Programmer's Perspective' and then moving on to an applied numerical analysis book and OpenGL book would be a greater 'return on value' in the short term. There is also the need to continue my professional development as an engineer, and for this I am looking at books like 'Designing Data-Intensive Applications' and 'Software Design for Flexibility'.
How do I balance my interest in foundations with my interest in scientific/numerical computing? How do I balance my math/cs study with my professional development regarding engineering?
TL;DR;
I feel like I have become an 'intermediate' autodidact in the sense that I feel that I have overcome the dunning-kruger effect, I feel like an idiot[3] yet am a working programmer being paid an industry standard wage to work on designing software systems based on mathematics and computer science I do not fully understand, and I am looking for advice on how to actually start mastering the craft with an eye towards both foundations and scientific computing/numerical analysis implementation. I want to continue working part-time and study part-time on my own rather than go to school.
[1] https://www.gutenberg.org/ebooks/18267
[2] https://softwarefoundations.cis.upenn.edu/
[3] https://grugbrain.dev/
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.