A colleague mentioned that NCSU has an NSF funded research program to improve math curricula in North Carolina high schools, called "MINDSET". The first line of the article linked above made me think of my high school days, as well as my recent experience in the mathematics program here at State.
One of the principal approaches described by the MINDSET article is to incorporate engineering problems into the coursework. The other effect of the program is broaden the mathematical treatment to include more areas of math, including probability and statistics.
This is all well and good. Relevance of the material is critical to memory. But speaking from experiences, what I have found most lacking in the middel-and-high school education system is basic literacy teaching -- "numeracy" -- particularly before kids start attempting proofs-based maths such as Calculus, Geometry/Trig, and Algebra.
Now, when I write "proofs-based maths", I don't mean that the coursework is necessarily taught in a formal, proofs-oriented manner. What I mean is, that a basic "proofs" class is absolutely essential to really grokking why we're doing what we're doing in mathematics , whether it is taught from a theoretic perspective or through applications. A simplified "logic and proofs" sequence, designed to be addressed to a general audience (not just the honors students) could be the most important thing missing from the current curricula.
We expect kids to read and write, and they do this at first by emulating concrete examples. Do we then conclude that showing them concrete examples of Latin is sufficient for them to generalize the grammar rules of English? No. We offer direct explanations of the forms, and then relate the forms to their experience. This is basic literacy. We need something similar for mathematics: basic numeracy, teaching basic logic, set theory, and enabling students to read and reason in mathematical terms. IMHO, this is missing from the (general) math curricula.