Programming Software Tools

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.

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

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

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

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

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

This entry was posted in Full Posts and tagged . Bookmark the permalink.

6 Responses to Programming Software Tools

  1. I use Scratch which I’d have thought was too remedial for HS but I guess Ben Chun uses it with a lot of success.

  2. Oh and haven’t used it but Stencyl seems nice and the android app developer at MIT. There’s also that very similar google one that just came out. Obviously I’m a fan of block-based programming.

  3. tieandjeans says:

    Scratch is the obvious choice that’s missing from your list. If you have concerns about it’s applicability for older/more experienced students, do take a look at Snap! ( snap.berkeley.edu/run ). It’s a fork/spiritual successor to Scratch that’s made incredible progress over the last few years, guided by Brian Harvey and Jens. All HTML5 web-based, with a bunch of “real CS” features (first class functions is possibly the most notable) and a commitment to functional programing priorities that’s just incredible for a drag&drop language. The tutorials on this page will give you a sense of that, even though they’re written for the previous version. http://snap.berkeley.edu/#tutorials

    My other find in the last year has been http://www.wescheme.org/ , a browser-based Scheme/Racket environment with Google Docs integration. It doesn’t reach the publicly social heights of the Scratch community, but it allows for easy sharing within a class, including the ability to fork (great for “start here, then modify” projects). The Bootstrap curriculum ( http://www.bootstrapworld.org/materials/ ) provides a good introduction for MS students (or, ahem, teachers who didn’t have any previous experience with LISP-esque programming) and Steven Bloch’s Picturing Programs is a great followup. http://picturingprograms.com/

    I’ve probably mentioned this before, buty my favorite student Python book is Mike Dawson’s Python Programming for the Absolute Beginner. The textbook version (Guide to Programing in Python) is a bit newer, but also 5x the cost. http://www.programgames.com/

    The one resource I’ve LOST over the last year was an amazing Javascript tutorial that, like the new Kahn Academy material, gave you a ode window on the left and a live “game” window on the right, and then walked you through building and remaking the game as it ran. It was pretty phenomenal, but I’ve somehow lost it to the diigo monster.

  4. Steve says:

    I joined Khan Academy a month ago, and it was a pleasant surprise to see computer science show up as a course. Most of it so far is really simple stuff, though.

Leave a Reply