Well currently they don’t teach either (at least majority of Public Schools in US). I was listening to this NPR Story from this morning about the state of Computer Science (CS) education within Public Schools in US. Their is debate and growing angst on how little Public Schools do to teach Computer Science while the experts project how many unfilled computer science jobs will stay unfulfilled.
Lets assume if policy is fixed and Public Schools do decide to teach Computer Science but what should they be teaching in computer science curriculum. I think there is wide confusion between vocational Versus fundamental teaching of CS. Teaching a particular language or toolkit in CS is really vocational teaching geared towards a particular outcome –build skills for specific employment , job role or deploy them to actually build/solve a particular problem.
With shelf life in technology being so short, Public Schools should concentrate on non-vocational focus & teach basic design skills & logical thinking. IMHO, Public School should focus on reasonably stable and perpetual CS ideas like Turing Machine, Algorithms, Data Structure, How Internet Works etc. They need to focus on making theses dry & seemingly uninteresting ideas entertaining to learn for kids. For e.g. here is intro from Thinkersmith.org –very interesting way of teaching logic without use of computers. See the intro video below:
Expecting Public School CS teachers know latest and greatest difference between HTML 5 & CSS 3 over prior version or latest way to build mobile apps tricks seems like a stretch goal for Public School Teachers who are already burdened to do more with less (pay). I think vocational enterprises (non-profit or for profit) are best tuned to keep up with latest and greatest in languages, platforms and toolkits. Non-profits can use grant power & SME volunteers while commercial enterprises use power to pay qualified teachers for covering this gap.