My very first intro to math was through "Learning to Reason: An Introduction to Logic, Sets, and Relations" by Nancy Rodgers.

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.

[0] https://ibb.co/Q81b96R