This is one of those “just blathering along” posts. I sort of had several things come together at once so I just blended them all into one stream of conscious mess. My wife teaching programming for the first time, meeting some teachers that will be teaching programming next year with zip for background, meeting a teacher that wants to teach programming in his small school (80 kids in the high school) yet cannot find any slack in the curriculum, and talking to my local university people with good ideas but not a lot of understanding of reality. So here it flows.
My wife is teaching programming for the first time this year. She is teaching a curriculum called Project Lead The Way and the 8th grade part of the curriculum is robotics. PLTW gives teachers a seven day course on RobotC and Vex robots before they teach the curriculum. The training consists of working through the exact same material the students will be working on. Very cookbook material. Prior to that she has had no programming experience or training. She is having fun but is a bit frustrated. As usual the frustration is not from the language (good tutorials there) but from the IDE, the set-up (waiting for the IT dude to install necessary software) and lack of troubleshooting experience. Little details like naming the motors correctly. I understand the concept behind the PLTW program, train as many teachers as possible as quickly as possible and hope for survival of the fittest. My wife is surviving because she is in to this kind of thing; robotics, electronics, gears and so on, but she is staying just ahead of the tidal wave. The idea that if you understand what the kids will learn you are ready to teach the class is a bit ridiculous. Kind of like a high school math teacher knowing math at just the student level. No pedagogy, no foundational understanding, no background and no ability to go to higher material. It is a method, just not a good one.
Most of the low level CS/Programming teachers are not programming whizzes. They are business teachers, math teachers, elementary teachers and other teachers who when they started their teaching career had no idea they were going to end up teaching programming. In the meeting I had last week that is what the room was filled with. There was one teacher in the room with a CS degree (not me). The rest were getting ready for on-the-job-training or learned on-the-job (me). This makes languages like Scratch, Small Basic, Alice and others that are a single button install and then use it immediately with their own IDEs extremely handy. These languages must also have good tutorials or textbooks written for beginning teachers and students. These tutorials have to show all the steps and make no knowledge assumptions. For a first year programming teacher these little details are by far more important than the fact these are not “real” programming languages. Python, Java and the like with their less than trivial install and IDEs can be very intimidating to a first time teacher even before any code is written. If CS ever achieves the position of a required class a lot of teachers are going to have to be found, teachers with maybe, if they had the time, 1 or 2 courses in programming. More likely these teachers will have zero experience in programming. For the first couple years of teaching programming they are going to need simple plug-and-play languages. If the language required was Python or Java or any of the other “real” programming languages my wife would not be teaching 8th grade programming. I do not think there is any way an in-experienced teacher could get up to teaching speed with a one week “follow the cookbook” Java or Python course.
I do feel an in-experienced teacher could do something with Python if they have time to work through a well prepared teaching program. In a week? No way. In a semester? Definitely. (Que in here a Python based teacher ed program being developed at Georgia Tech.) But is it really the correct direction for a first time teacher with a first time group of main stream kids?
First time kids are usually freshmen or sophomores. These kids have the attention span and focus of a puppy. At least fifty percent of those first time main stream kids are last time kids. A taste of programming and they are good for life. An even higher percent will be last time kids if they are not shown something fun. (After all, the reason many programming teachers are programming teachers because they think programming is sort of fun. Teachers typically do not teach electives unless they are having fun with the class.) Kids are even less “no-fun” tolerant. This is where drag-and-drop and game based languages come in. It is amazing how hard kids will work on making a game with all the whistles and bells. It is even better if the kid has their own computer to put the software on. They will actually work on it at home! For fun! Zoiks! At the moment I am using GameMaker in my two programming classes. In Programming 1 I wanted them to see an example of game making software. In my advanced class we needed a break for a few weeks from Java. GameMaker is bad for students. They have a tendency to forget they have other homework. I love it. Cackle, cackle.
Of the 18 kids we have taking Programming 1, 10 are going to take Programming 2. My plan is working. Now I have to come up with something for Programming 2 that will make them hang around for Programming 3 (Python dual credit).