I always believed students should take some type of logic/programming in their high school years. I remember taking both Basic and Pascal in high school and benefiting from them. In my Freshman year of college, I snuck into a Professor's PD course on HTML. This was in '96, and they were just teaching tagging using Notepad. Real basic stuff, but again, that course set me up for much of what I did in the classroom and beyond.
So now as an educator and administrator, I still feel very strongly that we should expose middle school and high school students to programming. Research continues to show students taking programming languages excel in math and also build stronger problem solving skills. With a programming background, we also prepare our students with a job skill they can move right into a decent paying career with.
How can we prepare students? By looking at one of the specially made for K-12 students programming languages/applications. Two of the better known ones are Alice, created by Carnegie Mellon University (yes, of Randy Pausch 'The Last Lecture' fame) and Scratch, developed by MIT (http://scratch.mit.edu/). I actually know of both and used both. When at NECC, San Antonio 08, I participated in a Bring Your Own Laptop session in using Scratch in the classroom. For Alice, when working as a State Technology Consultant, I participated in many sessions from Duke University's School of Computer Science (http://www.cs.duke.edu/csed/alice/aliceInSchools/) Both applications are available free, not quite pure open source, but source code is available.
So you download it, but how do you use it? In speaking of Alice, I definitely think it will work for middle school and high school students. Whether you set up an afterschool club or use it in your classroom, you definitely want to target all students. Students can come in a utilize it over a week and take their 'worlds' home on a disk at the end of a week, including the application they can download at home. I do also think there is classroom application. I really like this being used as a replacement for Powerpoints, book reports, and the like. Maybe you create a tech summer camp. At the Duke page, you can see examples students create. I have seen awesome examples of geometry, ancient worlds like Egypt, and space. Great ways to allow students to create meaning on a variety of curricular areas. And so much better than worksheets! The Scratch website also shows student samples, including How the Earth Works, a Gift for Haiti (after the devasting earthquake in Jan 2010), and a make a pizza game.
If you have not seen either of these, I encourage you to download them and use them in your classroom. Also, rock the boat in your school and district. Ask why one course of programming is not a requirement like some of the other requirements. Ideally, I would love to see either a 6-8 or 9-12 requirement of some programming language, whether these, HTML/CSS, Java, Python, or something. I really think this would help in academic areas, but also in providing another possible avenue for children. Not every child will be a 4 year college student. Why not provide some other avenue for those, instead of a future dropout?