Programming for the Beginning Teacher

This weekend at the DevFest conference I talked to a couple of teachers that are trying to bring programming into their schools.  The problem they are having is a shortage of programming knowledge, both in programming and curriculum.  One has no experience with programming and is trying to learn on the fly; the other has a little experience outside the classroom and is trying to build a curriculum with no experience in that field.  Both have the support of their administrations.  The first is solving her problem by using CodeMontana, an on-line programming tool using CodeHD.  She is having success with this approach.  The second is just sort of searching for possible directions.

I have pondered the big question of what is the best starting language for students and have come to the obvious answer that it is what the teacher feels best with.  After talking to these two teachers I am thinking I missed an even bigger question: what is the best language for a teacher to start with?  Considering nonexistent teacher training programs and a good chance there will be an increased need for programming teachers this becomes kind of important.  I started out in the same situation years ago and having an idea where to start would have been nice.  When I started out the number of possibilities where extremely limited.  Now there are about 20 ways to go.

There are a lot of variables involved here.  One of the biggest is how much time a teacher has to invest in learning a language.  Time opens a lot more doors.  My list will assume a teacher has the spare time most teachers I know have; little to none.  For a beginning teacher I think the big things are ease of setup, available documentation, available support and simplicity of the language.  I my case I also consider if I can get the language for free and what quality documentation I can get for free.  I think if I cannot be programming something that makes sense in 10 minutes after deciding to try a new language that a beginning teacher should look at something else.

This list reflects my experience over the years so it will have some gaps and a lot of bias.  My bias is based on what I want my students to learn and how I want them to learn.  My limited experience with some languages will also taint my opinions.

I will see if I can organize this list so it makes sense.

Scratch – free IDE, good free documentation designed for beginners, lots of on-line support, click the button to run the setup and it is ready to go, very little knowledge needed on the teacher’s part.  This is perhaps the language with the widest grade range.  I think Scratch would work easily for beginning teachers and student from 5th grade to high school.

Small Basic – free IDE, good free documentation designed for beginners, lots of on-line support, minimal setup, very little knowledge needed on the teacher’s part. For introduction to real coding (line code) my favorite is by far Small Basic.  It is simple, has Intellitype, shows the format of functions on the right, and can do high level programs (sort of).  If it had parameter passing and scoped variables it would be the perfect 1 semester language.  For the beginning teacher it is easy to install, has some nice free documentation and is tempting to kids.

Greenfoot – free IDE, good free documentation designed for beginners, lots of on-line support, minimal setup, some knowledge needed on the teacher’s part but doable.

Alice – free IDE, good free documentation designed for beginners (Alice 2), lots of on-line support, minimal setup, very little knowledge needed on the teacher’s part.  Alice 2 has lots of stuff, Alice 3 has didly.  The problem with this is Alice 3 is a lot cooler.  It needs more classes and objects but once they have it finished it will be a great tool.

Codea for the iPad – $9.99, good free documentation designed for beginners, lots of on-line support, minimal setup, some knowledge needed on the teacher’s part.

Visual Basic – free IDE, good free documentation designed for beginners, lots of on-line support, minimal setup, some knowledge needed on the teacher’s part.

C# – free IDE, good free documentation but not designed for beginners, lots of on-line support, minimal setup, some knowledge needed on the teacher’s part.  C# is definitely not for the beginning teacher or student to start with.

Corona IDE – free, kind of good free documentation designed for beginners, lots of on-line support, minimal setup, teacher better understand how to troubleshoot setup issues.  An ambitious beginning teacher can use this but it takes some time.  The need for an editor adds another thing to learn.

Python – free, good free documentation designed for beginners, lots of on-line support, is not a nice simple install and go, teacher needs to know quite a bit just to get the thing working.  Again the need for an editor complicates things.  I do not program in Python so I do not know how the language is to teach with.  My opinion is based on trying to set it up to program with which is not for the beginning programming teacher.

Java – same issues as Python.

This list just scratches the surface.  I did not include Kodu because I do not think it is high school level.  There are several versions of Logo still out there that are worthwhile and things like GameMaker that are usable for teaching.  Arduino, Lego Mindsorms NXT-G and RobotC are also languages to consider but the inclusion of hardware can add a new factor a beginning teacher should seriously ponder before trying these.

A teacher with no time and no experience should seriously look at Khan Academy and CodeHD.  Although I am not an advocate of these programs they are a good solution to getting something in the school when a teacher is short of options.

Advertisements

One Response to “Programming for the Beginning Teacher”

  1. gasstationwithoutpumps Says:

    I’ve not looked at languages from a “best for a teacher to learn first”, but I have looked at them from a “best for a student to learn first”.

    I think that Scratch is a great place to start—better than Alice or Greenfoot, unless the goal is to learn Java (rather than to learn programming). Python is a good next language to transition to, as it uses objects in a powerful way without burdening students with learning a lot of declarative syntax before they can do anything.

    The (lightly modified) C++ programming environment on the Arduinos is a good one if people want to do hardware or embedded systems—I’d put it after Python.

    A teacher wanting to teach an AP CS course may not have the option of learning programming languages in a pedagogically valuable way—they may have to get up to speed on Java quickly (and I think that Java is a poor choice for a first programming language). In that case, Alice or Greenfoot might be good places to start.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: