What should the high school math curriculum consist of? "Life is open book."

With the advent of widely accessible, inexpensive (or even free) computational tools and Computer Algebra Systems (TI-89, Wolfram|Alpha, etc.), much of what traditionally comprises a high school math curriculum can now easily be done by almost everyone.  Factoring polynomials, solving inequalities, graphing linear equations, differentiation and integration -- these are the types of skills high school math students spend most of their time learning, and yet all of it can be done for free by anyone with a web browser.

What does this mean for the high school math curriculum?  On the one hand, we could leave it more-or-less the same, insisting that today's student learn what we learned decades ago, while banning or carefully regulating the use of these new tools.  On the other hand, we could embrace the tools and the opportunities they create to spend more math class time on different topics and skills, perhaps focusing more on analytic and synthetic problem solving and less on mechanical symbolic manipulation -- but at the risk of students never learning some basic foundations.

So how about it?  Binomial coefficients?  The angle-addition formulas for trig functions?  The conditions under which a function has an inverse?  Basic computer programming?  Keeping in mind that the vast majority of high school students do not go on to become professional mathematicians, what should the high school math curriculum consist of?

Btw, I post this question (inspired by this discussion) here because this is a community of thoughtful mathematicians.  I recognize this discussion may belong in a different forum, but I don't what/where that forum is.  Any suggestions are welcome.
I strongly believe that even if something can be done by calculator, a high school student should understand some nuts and bolts of how it's being done. 

I spent some time doing volunteer tutoring at CRLS (Cambridge Rindge and Latin School). I still remember the girl at 8th or 9th grade who was studying inequalities, yet she couldn't compute $2-1$ without the help of calculator. The most frustrating case was the kid in 9th or 10th grade who didn't know multiplication tables, he couldn't compute, say, 3 times 7 in his head. I was supposed to help him with square roots. Well, how do you explain that $\sqrt{8} = 2\sqrt{2}$? First of, you have to realize that $8 = 2 \times 2 \times 2$, and that's exactly what he couldn't do. I ended up spending some extra time with him, afterward been told that he passed the test or exam and was very happy with my help - but I wasn't! I felt we were wasting lots of time and just because he didn't know multiplication tables, he couldn't break down numbers into factors, and calculator wasn't really help. 

The bottom line: I think in school students still should learn basic arithmetic before moving to more advanced stuff. I think it's a pure idiocy to introduce the kids to set theory while having them relying on their calculators to compute $1 + 1$. Honestly, the advanced stuff can wait till college.
I am surprised people advocate the white box approach to learning math. In computing, it is imperative from programmers of lower layers(operating system, compilers) to hide their code internals to higher layers programmers. I don't see anything wrong with hiding low-level math from kids through the use of CAS(computer algebra system) and mathematical programming languages. In fact it need be such low level "algorithms" can be taught using such CAS eg "Write an algorithm that performs long division". Math assimilation has been regressive because of old methods of teaching which were clearly paper-based before the advent of computers. Einstein had to hire an "assistant" who acted basically as a computer to grind the numbers. My argument is we have computers now and let us incorporate them in learning "high" math which matters. In fact, low-level math has no applications in the real world which makes sense to relegate it to the computer while kids are taught how to use math as professionals do. 

My ideal syllabus for high school, assuming they have been introduced to computer earlier on, especially programming lessons. 


discrete mathematics (binary, Boolean algebra, logic)
recursion theory (theory of functions, classifications of functions, graphing using computer)
history of mathematics 
calculus (allowed to use computer) 
mathematical modeling. 
computer programming. 
linear algebra (matrices)