I thought it might be useful to share a list of programming tools that I use in my Intro to Programming class. This is also an update to my earlier programming ideas post from last year.
My general rule for software in this class is that it should be free and multi-platform. If they kids have a computer (or in some cases just a smartphone or tablet), then they should be able to do work at home without licensing issues. Here it goes in some order.
-
Alice 2.x
Pretty good intro “language” that uses 3d models to create scenes. Some nice tutorials to get the students started, and it can be a powerful tool for upper level thinking (including recursion). The whole language is drag-and-drop so the common syntax errors are gone. Downsides: the students outgrow the 6+ year old interface quickly, and you can’t create variables/objects on the fly. If you want 100 trees, then you’ll need to create them one by one.
NOTE: Alice 3.1 has been released (2 days ago) after much delay. I haven’t checked it out yet, but I hope they have fixed some of the shortcomings. -
Python
The students have loved using python to start off on a text-based language. The lack of brackets and semicolons make the syntax easier for them, and the forced structure of tabs makes it easier to teach those skills later in languages that don’t require the code to look pretty.
Unfortunately the online free books like ;Learn Python the Hard Way, ;and ;Think Python haven’t been as useful as I’d hoped. The students picked up bad habits from LPtHW like typing in code they didn’t understand and getting lost because they didn’t know how to use that code.
-
Greenfoot and BlueJ
These related software tools (Greenfoot is built on BlueJ) are fantastic for learning Java. BlueJ is a learning IDE for Java because it doesn’t include a bunch of serious software development tools.
Greenfoot builds a whole graphics engine onto BlueJ and it makes it easy to make games. Students in the class last year made clones of Doodle Jump, Tower Defense, Zelda, Pong, Frogger, Mario and Portal mix, etc. Many of the students also made games based on their own ideas. -
Processing
Unlike 95% of most computer software, this development makes drawing very easy and fun. Very cool examples. Very fast 2D drawing. Try it out. Structuring code is somewhat lacking in Processing, objects and functions are not in the forefront of the development environment.
-
Project Euler
I ;don’t have to tell you about how great this website is, because I already have. The upper level students love working on the problems and the difficulty level scales up nicely.
-
Khan Academy ?????
Okay so this surprised me too. Khan Academy just released a fantastic website, tool, curriculum, programming environment, modules, whatever you want to call it. They walk you through basics of programming with Javascript and Processing. A very engaging intern, Jessica Liu, walks you through the examples prednisone purchase Canada and you can pause and mess with her code at any time you’d like. When you restart the audio commentary the code goes back and she continues. The output of the code is realtime. You must see this to really understand what’s going on. Difficult to describe, pretty freaking cool in reality. Not entirely sure where this’ll fit in my class, but it’s too good to pass up.
Am I missing anything?
Update: In the comments Jason reminded me of using Scratch as a drag and drop programming tool as well. I’ll use some version of Scratch that allows you to build your own blocks, like BYOB Scratch or Scratch 2.0.
Update 2: And it looks like I’ve forgotten what I’ve written on my own site. Google Blockly still looks great.
6 Responses to Programming Software Tools