I have been the instructor for eight undergraduate courses: three semesters teaching “Mathematical Thinking,” a course aimed at non-math majors covering symbolic logic, set theory, and probability; two semesters teaching “Calculus for Business and Economics,” and three semesters teaching “Calculus and Differential Equations for Biology.” In these service courses, I give students mathematical tools for further studies in their program, typically with a brief lecture on each concept or technique, followed by many examples on the board. In these examples, I prompt the class to give me each step, so that the students collectively direct the solutions. I find it very valuable to have students work for several minutes in small groups on problems involving the topic just covered, as I circulate and give feedback.
I would love the opportunity to go into greater depth about the development and justification of the ideas. The courses I have taught have imposed a strict roster of topics to cover, but based on my own student experience I believe depth would improve the students' appreciation of the material.
As an undergraduate majoring in computer science, I had a low opinion of mathematics. I didn't like calculus, and avoided any math classes through most of college. In my last year of college, I switched to a mathematics major solely to finish faster, but found the courses so fantastic that I've never since considered not being a mathematician.
I'm far from the only student who's been turned off by calculus courses. Yet, when I learned essentially the same content in Real Analysis, I liked it much better. What was so bad about my calculus courses? I believe that the aspects left out to accommodate “general students” are actually part of the problem. The omission of definitions and proofs leaves a pile of facts to memorize, with little understanding of what makes them true. Even the good students, who memorize all the facts, have only a superficial understanding, and at some level they know this. This makes them uncomfortable, because they're afraid it will be discovered that they've been faking all along.
For instance, I think that any introductory course in calculus should begin with a fairly detailed discussion of what the real numbers are. The completion of the natural numbers under subtraction to get the integers, and the completion of the integers under division to get the rationals, are accessible ideas. We can generalize from these to adding roots of polynomials to get the algebraic reals, and finally adding limits of sequences to get the real numbers. We can talk about some of the ways the real numbers are actually quite bizarre. There seems to be a feeling that keeping such details “under the rug” somehow makes the subject more palatable to students, when in fact it envelops the whole subject in a cloud of uncertainty and doubt.
Of course, going into such details takes time, and discussing it until the ideas are clear to everyone makes it impossible to keep a predictable schedule. I believe that it's important to have wiggle room in the schedule, to do more examples of something which turns out to be unclear, or to follow up on a student's thoughts in class (even when they don't lead where I'm planning), or to digress a bit. For instance, when I cover binomial coefficients in Mathematical Thinking, I could easily go on an extended tangent about Pascal's Triangle. I never have time. But I believe that the connections and perspective offered by such divagations are more likely to make the material memorable and relevant than a constant nose-to-the-grindstone approach.
Hence, if I were responsible for designing my own course, I'd include significantly fewer mandatory topics to cover. The students might be exposed to less material, but having time to explore ideas would make learning more enjoyable and perhaps more likely to be retained. We can't expect that the students will remember all the theorems and techniques after a decade or two (although we can hope that they remember enough to be able to look them up when they're needed.) Instead, I agree with Underwood Dudley that our goal should be a lifelong skill of thinking mathematically. This means demonstrating how to deal with complexity through precise definitions and the power of abstraction. It also means an introduction to the epiphanic power of deductive proof. Abraham Lincoln noted that lawyers must know what it means to `demonstrate,' and to this end he studied Euclid's Elements. This clarity can be of use to everyone, not just lawyers or mathematicians. But this is impossible for our students to discover when we strip the definitions and details out of our courses.