Here are some personal statements on the teaching of mathematics. Please fell free to add your opinion in a comment!
(1) Teaching logic has to be done „on the job“.
A class, or even a chapter, on logic as a subject by itself will fail. Logic needs a subject to work on. That is why Euclid’s geometry was used in ancient times to teach „proper reasoning“. Logic is a very interesting mathematical subject, but not for beginners. All they have to do is to learn the language of logic, e.g., the meaning of logic variables, the meaning of terms like „for all“ and „exists“, and the proper way to write down a proof.
Euclid however is no longer well suited for beginning students. Everybody who once tried to teach a class using Hilbert’s axioms on geometry, will know what I mean. It is better to start with algebraic structures, especially fields and the real numbers. This is closer to the world the students bring from school, and also more versatile and useful.
(2) Mathematics thinking is backed by models.
We working mathematicians think of our subject as something existent in reality, a model of our theory, real objects not quite in our hands, but imaginable in a virtual world. In this world a logical statement about its objects is either true or false. Since we cannot overview our world completely, we write down axioms and deduce theorems from them. The required logic is of a very simple form: Reasoning must assure that the theorems are valid, whenever the axioms are, i.e. in all models satisfying the axioms.
This is easy to understand, even by a beginner, especially, if we show, how different models can be handled by one and the same theory with the axiomatic method. E.g., everything we know about fields is valid in all fields. And there are interesting fields, which have nothing in common with the real numbers, like finite fields or the complex numbers. I.e., the model we imagine behind our axioms is not necessarily unique, and that is a very powerful side result of the axiomatic method. In fact, there is no unique model of interesting theories, not even of arithmetic.
(3) For a beginner, a big problem is to learn the language of mathematics.
In my teaching, I found that students often think they understand a statement in a lesson or a book, but in fact they do not. The reason is that they are so centered around computations, that they cannot express, understand, or appreciate mathematics expressed in language. The weirdest mistakes are done in the seemingly simplest of all concepts, namely to speak out mathematical knowledge in clear words.
I like to start oral exams in linear algebra by asking for a definition, asking for the definition of an eigenvalue. I am yet waiting for a complete and correct answer to this. Students write down Av=sv, and that’s it. Not only do they forget to mention that v must not be zero, but also they do not clearly express the logic of the statement. It is no surprise, that many students are not even able to understand the logic of computations in proofs that involve only computations.
Consequently, the formal teaching of the mathematical language must be an integral part of the mathematical education. Note, that by mathematical language, I do not only mean the various symbols used, but rather the ability to express mathematical reasoning properly, even in simple calculations. So, we should insist on logical equivalence signs between equivalent equations, or require „for all x“, if x appears in an equation, or the expressive statement that some „xi“ exists with a required property, and will be chosen for the rest of the proof. I do not get many friends with this kind of nitpicking.
(4) For a beginner, mathematics is an enormous amount of content.
We often tend to think, that in a beginner class about linear algebra there is really not much to teach. After all, the facts all follow from a tiny amount of axioms and definitions. For a beginner, the world looks different. Everything is new, and everything is different, an unknown world. Mathematics looks like a huge amount of tricks, the teacher knows and can apply, but the student does not. I am always surprised how large the subjects are, and how easy it is to forget something relevant. In fact, there is nothing trivial at all in mathematics. It might be that once you have seen a solution, it may look trivial. But to find it, may require a lot of trial and error. Everything looks easy in retrospect.
Even for a good student, learning first year mathematics is a full time job. And in teacher education, everyone has a second subject of equal weight. I think we need to be more patient with our students. The best will make their way no matter what we do. But the lesser ones need some time and our attention.