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.
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.
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.
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.
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.
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.
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.