It is the time of year where I start examining my Programming I course for what I taught in it and how I feel about what I taught. I am one of those teachers who is never satisfied with their courses. I tweak my Programming courses every year so near the end of the semester I look back and decide what worked and what did not. This year I started with Scratch, then went to Small Basic, then GameMaker, and am finishing off in Alice. Yes, that is a lot of stuff to cram into one semester but my approach for Programming I is not to make programmers, but to show the kids what is out there and some basic programming concepts. I have the kids do the tutorials so they learn how to read and execute. This is not taught in English. Reading a tutorial requires greater comprehension than reading “Grapes of Wrath”. The tutorial requires attention to detail. Odds are that some of these kids will have to learn some skill in this manner and reading through some poorly written tutorial or instructions takes a little practice and a lot of focus.
Programming I is a survey course with kids that have no inclination or desire to work in programming or Computer Science. It is the “there was nothing else offered this period so here I am” course. I have 13 sophomores and juniors in the course, and maybe two will hang in there for Programming II. The other Programming I teacher does Scratch and Small Basic only. It is what he knows so that is what he does and it is an excellent survey course the way he does it. I get bored too easily.
So here are my initial observations for the semester.
1. Scratch, as always, is a winner. The kids have fun, make some silly games and start to get an idea of what programming is. There are some issues if they try to get too fancy. The lack of commenting lines makes it a real bugger for me to figure out what a batch of code is doing. A program can very easily turn into a globular mess.
2. Small Basic is by far my favorite beginner language. Easy to teach traditional line coding, easy to debug and grade (if the kids put in the comments, something I beat into their heads) and the turtle makes it fun. There is plenty if readable documentation for the kids (if I can get them to read it that is). I just wish it had parameter passing.
3. GameMaker could be really great but the tutorial documentation is the absolute worst. The tutorials are examples of experts writing for beginners. I would love to use it more extensively but I would have to completely rewrite the tutorials.
4. I have not used Alice in a number of years. My initial experience was bad because of RAM issues, Alice froze or died regularly. I now have better computers so I thought I would give it another try. Right now my lack of text books is making things a bit difficult. There is so much “stuff” hidden inside Alice that it is an IDE and language that is hard to teach without a guided program that a book offers. The fact that I am really rusty with Alice is not helping.
And here are my conclusions.
1. Small Basic is deep into my comfort zone. With very little head scratching I can make it do anything required for a Programming I course. There is a huge following with a lot of very good experts on the forum. If I wanted to teach only what I was comfortable with I would do Small Basic exclusively. How boring.
2. The kids love Scratch so it will stay for that reason. I really dislike the can-of-worms programs that result though. Scratch will be getting a high profile next time I teach it because of the fact I can now use a Kinect with the language. Kinect2Scratch is going to make this a huge attractor for Programming I and Programming II/III/etc. Thank you Stephen Howell.
3. I would love to get GameMaker going as a major part of the course. Not just for the language but because it is making the kids think about designing a game. Until I can rewrite or write my own tutorial it is not going to happen. I will continue to give it to my advanced kids as more of a reading project than as a programming project.
4. Alice is simply going to have to wait until I can get books. I do not plan to get books so it is going to go on the back shelf again. I do not see a huge advantage to Alice over Scratch at the Programming I level. The 3-D is cool but sometimes adds too much to the setup of the scene before even getting to the programming.
The future of Programming I.
I want to look at the Arduino project. Making lights blink and motors turn is always interesting to kids. There is a line code language and a Scratch like language for the Arduino so I can have them do the same project in two different languages. There is also a lot of material/projects well beyond the Programming I level that could be interesting.
Incorporating the Kinect into Programming I is going to be a priority. Right now all I can do is Scratch at the Programming I level but I have a feeling that very soon some genius at Microsoft is going to come out with a simple icon based language or an add-on to Small Basic that will allow kids to really go to town on this device. C# is not a Programming I language so the Kinect/C# route is out. The Kinect2Scratch add-on will only “see” one person at the moment and it would be nice to have the multiple body capability but I cannot argue the price.