October 20th I am giving a presentation at the annual Montana Educators Association conference. The topic is “Computer Programming: Free stuff is everywhere”. (Originally I was going with “Computer Programming: Free shit is everywhere” but it simply did sound professional and at all costs I must sound professional. I also do not think the organizers would have gone with that title.) I usually do not get into doing presentations like this. I have a tendency to get enthusiastic which means I start waving my arms, jumping around, speaking excitedly and overall looking like a stone-cold idiot. But I could not resist. The reason I am submitting myself to a demonstration of public stupidity is simple. For some odd reason many Montana schools have decided teaching CS and/or programming is an expensive proposition and therefore not introducing it into their curriculum. I, on the other hand, consider it the cheapest subject to teach. My feeling is the only expense that falls on the budget is the cost of a teacher. Admittedly this is not trivial, in fact just finding a teacher qualified (or if not qualified at least willing to learn) to teach CS/programming can be a challenge for schools, especially out here in the boonies of Montana. The other expense they seem worried about is computers. Are there high schools out there without a computer lab? Maybe but not likely. Do the kids have their own laptops? Usually. If a school does not have the hardware (available lab or shortage of student laptops) there are solutions. Montana has a State recycle warehouse with all the tech stuff available for free. Computers, laptops, monitors, keyboards, etc, etc. The stuff is free. No, it is not new but a 5-year-old computer works just fine for almost all programming applications. I would assume most states have the same warehouse somewhere.
So I want to expound on why I consider CS/programming such a cheap subject to teach. Since most schools think CS and programming are the same thing I will look primarily on programming assets. This post is just the beginning of me organizing my thoughts so I can prepare something that will not reinforce the appearance that I am in idiot.
In the beginning there was the programming language. How many free (and good) languages are there out there? Let me count the ways. No, I won’t, there are too many. Here is a list of the ones I have used that are worth the trouble of using or free applications that might be worth learning. Some of these are what I would consider suitable for an intro programming course. Some are suitable for advanced courses. ALL of these have free versions and have free or dirt cheap learning materials available somewhere. If it isn’t free or really, really cheap it does not fit my budget.
Logo – Lots of them out there. Beginning programming.
Scratch (https://scratch.mit.edu/) – Beginning programming. Designed for teaching.
Alice (http://www.alice.org/index.php) – Beginning programming. Designed for teaching.
Touch Develop (https://www.touchdevelop.com) – Beginning to pretty advanced programming. Designed for teaching.
Small Basic (http://smallbasic.com/) – Beginning programming. Designed for teaching.
Kodu (http://www.kodugamelab.com/) – Beginning programming. Designed for teaching.
Visual Studio Express (https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx) Intermediate to professional programming.
Corona/Outlaw (https://coronalabs.com/ and http://outlawgametools.com/game-dev-product/outlaw-ide/) – Intermediate to professional programming. Phone apps.
GameMaker (http://www.yoyogames.com/gamemaker) – Beginning to intermediate programming. Strictly game authoring.
Python/Pyscripter (https://www.python.org/) Beginning to advanced programming. Designed for teaching but can be used for professional work.
Java – Intermediate to advanced programming.
Unity or Unreal Engine (https://unity3d.com/ or https://www.unrealengine.com/what-is-unreal-engine-4) – Intermediate to advanced programming. Game authoring.
MIT App Inventor (http://appinventor.mit.edu/explore/) Beginning programming. Designed for teaching. Phone apps.
Again all of these have free versions and all of them have free tutorials or teaching materials.