Teaching Computational Thinking on the Web in Just Two Hours
Someone once said, “Never set yourself achievable goals.” I’m willing to bet he died a lonely, bitter man, and I have no desire to follow in his footsteps. However, I do have to figure out what the Software Carpentry course should try to teach scientists about programming for the web. I have to teach something: getting data from the web, and making data and useful programs accessible to others, is high on everyone’s wish list, and crucial to being a more effective scientist.
But even basic web programming would be a course unto itself. At best, there’s room in Software Carpentry for two hours of lecture and four hours of practical work. Students will be comfortable with strings, lists, loops, conditionals, and functions; they will have just met regular expressions, XML, and databases, and their grasp of these topics will still be pretty shaky. It’s hard to cover even simple CGI programming with those constraints, and morally questionable as well—there are just too many ways they could leave their machines open to compromise.
I’m tempted to introduce them to an RSS-based mashup tool like Yahoo! Pipes, but (a) it’s closed-source and proprietary (which means it could disappear at any moment, like FuseCal and so many others), (b) getting data from your own machine requires exactly those skills we don’t have time to include in the two hours (or a friendly sys admin with time on her hands). Is there an open source tool that does similar things? It’d have to be much (much, much) lighter weight than scientific workflow tools like Taverna, allow users to mix local and remote data/processing/services, and be nearly trivial to extend. Any pointers? Or is anyone interested in helping write such a beast?
Atomisator may be worth a look, at first glance it seems similar to Yahoo! Pipes.
http://atomisator.ziade.org/
There’s a very nice open-source bioinformatics tool for genome analysis called “Galaxy Project” (http://galaxy.psu.edu/). It can be hosted on a local machine. Its trivial to extend with new features (they even have a screencast describing how to do it). Although you’d need to think something that your students could understand and implement.
Right now I’m working with Ben Fry, Al MacDonald, and a group of students on getting Ben’s Processing language to work in JavaScript and with Canvas–it’s really close, and we’re going to finish it 2009/10. Ben’s an interesting person to consider for inspiration in this area, because he’s done so much work on visualization of data. What he did with Processing was to lower the bar for people to work with data visually and not be CS majors. If you’re not already familiar with his work, take a look at http://www.benfry.com/, “Visualizing Data,” and Processing. Endless inspiration there, imho.
Sam Ruby’s Venus code makes a nice RSS/Atom aggregator/processor/mixup engine. It is open source, you run it on your own machine. I’m not aware of any user interface for it beyond simply editing the config files, but that might make an interesting student project.
http://intertwingly.net/blog/2006/08/16/Venus-Rising
It’s probably too early and also might have too many proprietary dependencies and logistical issues but Wave might not be a bad thing to play with. Uses Python, relatively simple and flexible API and ability to do stuff.
Could e.g. build robots to pull information from some online service/API and insert into a document based on user input? Configurable mashup?