[IPython-dev] Jupyter + Processing for education

Doug Blank doug.blank at gmail.com
Fri Jan 23 09:01:29 EST 2015

IPython community,

Thought you might be interested in seeing how students can use the new
Jupyterhub with a new, external kernel. This semester I am using the
language "Processing"... originally designed for artists by artists. My
colleagues have written a textbook on how to use it for teaching computer
science [1].

Here is a 5 minute video on how it looks to the student:


and here is a live notebook:


(mouse over some of the sketches)

If you know Processing, this is different from the regular Processing IDE:

* students log into the Jupyterhub system over the web
* uses the Processing-Javascript system
* each Jupyter notebook "cell" is a Processing "sketch"
* Shift+Tab shows Processing on-line help
* Tab will do completion (completes with Processing variables and functions)
* Rendered notebooks (eg, without a live computational engine/kernel behind
them) will still run
* Slight bit of interpreter feel: can execute draw/setup functions
* uses MetaKernel magics [2]

I like the setup for education because:

* I can control/configure the environment exactly (what buttons are
available, etc). I have a few nbextensions in the newly supported system
folder, and load them in the notebook.html template.
* I can update the system at any time
* I can track students' time-on-task
* Students will be able to submit their homework (as notebooks) via a button
* I can add more stuff as I think of it (like the "Publish" and "Submit
Homework" buttons)
* All of the benefits of using a notebook: by students, for students ("runs
like code; reads like a journal paper", "literate computing", "reproducible
research", etc)

Things I don't like:

* Processing -> Javascript error messages are terrible

We'll have all of the code easily installable (via pip) as soon as Jupyter
is out. Of course, you can also get the code directly [3].

It could be that a Processing IPython magic could turn Processing code into
a really fancy, low-level, dynamic widget system for Python. Because
rendered Processing sketches run in rendered notebooks, it also solves some
of those issues. There needs to be a way to get data to Processing. Also,
for live kernels, it would be handy to have Processing be able to set
Python variables.


[1] - http://www.apress.com/9781430244646
[2] - https://github.com/Calysto/metakernel
[3] -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20150123/add33c91/attachment.html>

More information about the IPython-dev mailing list