I'm a Computer Engineering student, with interest in Type Theory and Category Theory and i have a more pedagogical/philosophical question about these areas.
It seems that many researchers in Type theory and Category Theory in general, specially in Homotopy Type Theory, see their areas as a good starting point for any student to learn mathematics. Their philosophical focus point seems to be the complete exclusion of set theory in the beginning of mathematical courses, in favor of the constructivist/type theoretical approach.
From what i have already read, this idea seems also good for computer science courses, but it comes at a cost which is the topic of this question: as a non-mathematician, all tries of bridging the gap between beginners, also called by Terrence Tao "the pre-rigorous stage", and these areas seem infertile.
For example: the only real "beginner friendly" book on category theory is, by far, Category Theory for Programmers by Bartosz Milewski. Steve Awodey's book, even if it states that it is "for everyone else", is, intentionally, filled with examples of higher mathematical structures which complicate rather than simplify its content.
And it does not serve as a beginner book for another reason: it does suppose a more advanced mathematical maturity (what Tao might define as a "rigorous stage" maturity), which is, in many places (like Brazil where i live), developed in more set-focused courses like Analysis, Topology, etc.
I have faith in the intent, so my question is more in the terms of: What books would you recommend on Category Theory and Type Theory that makes one go from "pre-rigorous" to "rigorous", i.e. learn how to prove things while learning mathematics like Analysis does, and suppose no background (at all)? Is there such book?
And more: if you were a professor in an introduction to mathematics course and wanted to teach people that came straight out of school what mathematics is all about using only Category Theory and Type Theory, what book would you use?
Disclaimer: The following is subjective, and opinions may, of course, differ.
I don't think it makes sense to try to 'learn mathematics' by learning category theory -- it puts the cart in front of the horse.
There are many angles from which you can arrive at category theory: You may find classical category theory a useful unifying language for basic structures like abelian groups, vector spaces, etc. You may come from a CS standpoint, learning about more and more expressive type systems, pondering about the meaning of equality, and ending up studying HoTT, meeting others who arrived there in search for a synthetic approach to homotopy theory. Or you may dislike that set-theoretic foundations allow you to ask "Is $e\in\pi$?" and consider ETCS as an attractive way out. The list goes on.
All these examples have you end up learning some aspect of category theory (cf. "Sketches of an Elephant"), but they all have in common that category theory answers a question -- throw away the question and it becomes meaningless. For example, what is a freshman supposed to make of the notion of an abelian category if they have not, at least, encountered the concrete examples of, say, vector spaces and abelian groups, first?
I sometimes get the impression that category theory is, with awe, seen by young students as being the 'holy grail' of mathematics. In my mind, it really isn't -- certainly at least as far classical category theory is concerned: Ideas mostly happen in concrete examples, while category theory is extremely valuable (essential in fact, I'd say) in telling generalities from specifics. But, in the words of one of my professors back in the day: "It's not enough to just say 'morph morph' all the time."
As someone who wrote his PhD on (homotopical) category theory and now uses type theoretic logical foundations every day, my advise to young students would be: Do familiarize yourself with, and do enjoy and embrace the generality and conceptual clarity of, the different aspects of category theory, but do this alongside, not instead of, the acquisition of a solid 'classical' mathematical education.