I've been using ipython as a python interface for a while (mostly for syntax highlighting, and the ability to call basic linux commands, the %paste function...) and I learnt in a conference that after a long time without touching the project, core developers are working hard on it: in addition to ipython improvements, they developed the "notebook", a html interface allowing programmers to write, run and see outputs (text and graph) directly in the same frame. You can also edit and re-run old code chunks at any time. They also provide a plugin, StarCluster, which let the possibility to run it on any cluster (including EC2). For me, it seems to be a powerful way to use python for working on clusters, keeping track of everything and I guess it's not bad for teaching too. However, I figure that for now only a few bioinformatician are ipython-notebook users, and, before playing hardly with it, I would appreciate any feedback about this before I invest too much time. What do you think?
Titus Brown has made an attempt to use the ipython notebook in this years's Analyzing Next Generation Sequencing Data course. It was also my first experience with this tool and below are some thoughts based on my own experience as well as by observing a number of students using it. This opinion is therefore from the point of view of using the notebook to facilitate an introduction to bioinformatics
The tool has great potential especially when used for educational purpose. The ability to save a whole sessions and have files, images being embedded in can be very useful.
Alas I believe that the main conceptual underpinnings of this tool are misguided! Nobody should be learning how to program with iPyhon notebook. The traditional way of using and editor and running from a command line is a far better approach than that of writing small snippets that magically live in the main namespace. The approach that iPython notebook uses works much much better in R and matlab because those languages provide more powerful data exploration tools. Python is a general programming language, using Python with iPython is akin to typing a program into the Python interpreter. Moreover it fails to train people to think in an global algorithmic way. It provides these small magic windows where things just seem to work.
I found that (unexpectedly) the most productive use of the iPython notebook turned out to be for documenting and explaining, re-running command line tools. Say an instructor goes through a long series of commands to demonstrate a concept, the ipython notebook allows them to do this live in front of the audience, then go back and document each command based on questions posed in the lecture. Finally they can distribute the notebook to the students. Contrast this to the traditional lecture delivery where the commands are printed out on a slide many hours/days before the lecture.
Setting up iPython on a general computer is an exercise in frustration - and pretty much impossible save the advanced system administration skills. I don't think any of our students could install it on any other system than those provided via the cloud. That's pretty sad/hopeless.
In all I plan to use iPython but not for teaching Python programming and I will not require students to use it. I will use it to document workflows and execute live demonstrations. Clearly that is just an opinion and I am sure others have had different experiences.