Homegrown Computer Science for Middle Schoolers
tessrinearson.com
tessrinearson.com
When teaching kids a few years older, your world really opens up in terms of tools you can use - I think a motivated 13 year old should be able to grasp any one of a number of different programming languages and/or different paradigms.
One of the issues with teaching younger students has to do with the immediacy of results:
Something like "Scratch" has a simplified programming model (visual drag-and-drop programming to create interactive animations), but gives immediate results that you can see on the screen right away, and it's impossible to create a syntax error.
When you teach a "friendly" programming language like Basic or Python, there's still a decent amount of background material before you actually create something visually cool. So, while a 9 year old might get bored and start to loose attention, I would expect a 13 year old to have the patience and persistence to know that the cool stuff (ie, making a simple video game) is on the horizon. He/She will continue to plow through the boilerplate.
When you go to Java or C, it requires all the more motivation, because the background information is that much more difficult to ignore. Syntax is much trickier. API's are less friendly to new coders. It takes more time and focus to create the result you're looking for, especially if it's graphical.
That was my thought process that eventually led me to choose Scratch as the way to introduce the students to programming in our computer programming club.
I'm planning to use BYOB/Snap with my 6-year old. I think the custom blocks in BYOB will be useful for me to create relevant primitives so the programming will be less tedious for my son. Later, I can teach him about defining functions, recursion, etc. I'm also wondering if the JavaScript rewrite will allow him to hook into server-side APIs. That has some interesting possibilities...
[1]http://wiki.scratch.mit.edu/wiki/Build_Your_Own_Blocks_(Scra... [2] http://byob.berkeley.edu/
But we got to the end of the video tutorials and ... then what? They don't know enough about what's possible to pick a challenge goal and start working towards figuring it out. And I don't want to just turn them loose on the forums; trying to find actionable information there as a newcomer would get frustrating quickly.
Any suggestions for next steps?
Last time I checked, there were a few ways to be authorized to teach CS/programming related classes in a school, all with problems. The three credentials that authorize you to teach computer sciencey things don't test any CS at all:
- Supposedly, the business credential test has a question about flowcharts
- The industrial tech test asks about part of a computer
- The math test might have some set theory, but good luck trying to teach computer science with a math credential. The administration at your school would prefer you teach math as there's always a need for another math teacher.
CS is a delicate and fledgeling field in K-12 and right now it's a bleak road ahead. The small number of schools that have programming classes (let alone a CS track) is shrinking and the credential problem isn't helping.
One demonstration of the state of CS education is the college board's discontinuing of its Computer Science AB test in 2009 due to a mixture of lack of turnout and lack of qualified teachers to teach it. (Of the few CS educators out there, even a smaller subset could teach AB, most stuck to A).
With all of the opportunity generated by the industry pioneers here in CA, our CS education should be at the forefront nationally. We don't even have to embrace CS for its career potential. CS is a liberal art of the 21st century and I believe CS concepts would be worth it alone for its application and transfer to other subjects, especially math.
If you're passionate about helping CA stay the course ahead, you really should check out some of the resources for talking to administrators at http://www.csedweek.org/ or even get in touch with the CSEdWeek organizers.
It was great. If I was homeschooling a kid, I would do exactly the same thing, except with an arduino... no awful BASIC.
We're making it really easy for kids to get started and continue learning because we provide every students with help and feedback from live tutors.