Archive for December, 2011

What should a Programming I course be?

December 18, 2011

In my last blog I talked about what I do in my Programming I course.  I do several languages to let the kids see different IDEs and work with different tutorials.  I also let them have some fun. But I always have that nagging question “What should I be doing in Programming I”?  I have yet to find a formal answer to that one.  So I have to answer my own question.  Does this imply I cannot be wrong?

What basic programming concepts do I want to target at the Programming I level?  Here is what I formally target.

1. Modularity

2. Comment everything

3. For loops

4. If statements

5. Sort of figure out a program solution/direction before typing.

6. The concepts of events, properties, state, objects, and instances.

7. Variables

8. Building algorithms

9. Troubleshooting/de-bugging

Here are some biggies that get hit incidentally.

1. Procedural thinking

2. Attention to detail

3. Problem solving

4. Do not reinvent the wheel – find something similar and adapt it.

5. In regards to the wheel – be able to pick apart someone else’s un-documented code

Most of my assignments are very general, i.e. draw a house with the turtle in Small Basic using at least two sub procedures.  Since each kid wants to draw their own house no code is the same.  The kids will help each other with a concept (like drawing a picket fence) but then they will modify the code to suit.  When I was teaching VB out of a textbook there were a lot of kids cutting and pasting code from each other and the text.  They usually had no idea how the code worked.  Although the projects are now simpler, the code is much more original.  Kids will spend an hour trying to get their picket fence just the way they want it.  Although the resulting code may be trivial to the experienced programmer, the kid has just spent an hour on problem solving, algorithm development, troubleshooting, procedural thinking and incidental hair pulling.  I love it.

Most of my Programming I kids will be done with formal programming forever after my class.  I therefore put learning to code wayyy down on the bottom of my course objectives.  Learning how to think on their own and work in a problem solving environment is the goal of any teacher for their course (OK, any good teacher) no matter if the course is Math, Art or Programming.  I think that is the answer to “What should I be doing in Programming I?”.

Although I will never be satisfied with my Programming I course (or any course I teach for that matter) I think over all it is an OK course.  I will continue to search the internet for modifications and improvements and things to keep my teaching from becoming boring.  There is almost always something super cool to motivate a Programming I course (ex. Stephen Howell’s Kinect2Scratch) that can make the course fun and yet target what I consider important.

Programming I: Now and Future

December 16, 2011

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.

The “Perfect Educational Computer Lab”

December 4, 2011

As is many times the case when I have nothing profound to write about I write about somebody else’s profoundness.  Alfred Thompson is always good for profound tidbits.  His latest blog entry is on “The Perfect Educational Computer Lab”.  My school has one true computer lab; twenty three computers in two long rows and on the two side walls.  It is a small room so there are not a whole lot of choices available.  It does make it easy to see what all the kids are doing from one point in the room.  From my techie perspective it also makes the power and network cabling reasonably easy.  We have three classrooms with computers wrapped around the walls.  Again easy to monitor and construct.  My goal is to get rid of all of them.  My “Perfect Educational Computer Lab” is no labs at all.  Students would bring their own device to school, be it laptop or tablet, and perform all needed work in the classroom on that device.  A lab would be more of a lounge where students can gather in small teams to do joint work.  The lounge would be filled with movable desks and tables and lots of power outlets.  The walls would be white boards with several ceiling mounted projectors that students could access through the wireless network.  Traditional computer labs were a necessity back in the days when computers were not a common student owned piece of equipment.  Laptop prices and quality are reaching a point where a school requiring a student to bring in a computer device is not unthinkable.  Schools providing laptops to students that do not have the economic means is also a budgetary possibility.  $300 buys a pretty nice piece of equipment now.  As a self described CS futurist I see this as an idea goal.  As the present day high school one-man-show techie I think it is an absolutely insane idea.  A dozen different brands and models, different OSs, different platforms – my head hurts just thinking about the tech issues.  Just thinking about getting an iPad to print to my present setup gives me a panic attack.  I like my lab; all the computers are the same with the same software.  If one dies I go grab a spare and plug it in.  (OK, so I don’t have any spares but the thought is there.)  I am familiar with the computer brand and the OS and can troubleshoot pretty quickly.  My “Perfect Educational Computer Lab” would be the biggest pain in the rear I could possible imagine for a school techie but I think it is not far away.

We are going to start a 1-1 initiative in the 5th grade next year.  We are less than prepared but figure we would start small and then troubleshoot as events occur.  It is the beginning of a “Perfect Educational Computer Lab”.  I do not think I will be teaching Math next year.  Keeping 40 5th grader laptops alive might add to the techie load.

The local University has started designing lounges to accommodate student laptops.  The chairs are on casters and most of the chairs have a small swing away table surface.  The lounges have big screen TV’s that the students can plug a laptop into.  One of the classrooms in the new Education building has four wireless projectors, one pointing at each white board wall, and all the two person tables are on casters.  It is a very large room.

I have more and more kids bringing their own devices to school since we got wireless school wide.  I am absolutely amazed at the number of kids that have no idea how to do anything but a few apps on them.  If there is any kind of tech issue they are lost.  They can drive the car but cannot change the tire (or even find the jack for that matter).  My “Perfect Educational Computer Lab” would require they learn something about that device other than some apps.  I was talking to a CS instructor from the University the other day.  He sees the same issues in COMPUTER SCIENCE students!  Having traditional computer labs and not allowing kids to bring their own devices is not preparing them for college or life.  There are some tricky issues with a BYOD or a 1-1 program but they need to be over come to have the “Perfect Educational Computer Lab”.