{ "metadata": { "name": "", "signature": "sha256:3534566d1444600c5facbaaf3062f740cd87b286a879468e84eaed5705f64ae5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hour of Code++\n", "\n", "Jealous of [#HourOfCode](http://hourofcode.com/) this [CS Education week](http://csedweek.org/)? Want to explore some things in about an hour? Try this!\n", "\n", "(You have an idea for an hour of code for more advanced CS people? Tweet it with the hash tags [#hourofcode](https://twitter.com/search?q=%23hourofcode&src=typd) and [#hourofcodeplusplus](https://twitter.com/search?q=%23hourofcodeplusplus&src=typd))\n", "\n", "## Literate Computing: Reads like a journal paper---runs like code\n", "\n", "Introducing [Jupyter](http://jupyter.org/) and the idea of [literate computing](http://blog.fperez.org/2013/04/literate-computing-and-computational.html)!\n", "\n", "1. Explore an on-line interface to programming, called Jupyter (nee IPython 3.0.0)\n", "2. Explore ideas like **literate computing** and **reproducible research**\n", "3. Explore how you could implement sophisticated ideas like Continuations and call-with-current-continuation in Python\n", "\n", "### Explore an on-line interface to all programming languages, called Jupyter\n", "\n", "Jupyter is an architecture for computing. It has many facets, but one of the most interesting is being able to create executable notebooks over the web. To try this out:\n", "\n", "* Go to http://tmpnb.org, a temporary Jupyter notebook server hosted by [RackSpace](https://developer.rackspace.com/?tmpnb=awesome)\n", "* A Python notebook will open up. Read the directions on that page.\n", "* You can program in Python (versions 2 and 3), Julia, and R.\n", "* Use Markdown, but also LaTeX equations!\n", "* Use matplotlib and numpy for beautiful plots and fast math!\n", "* You can create many notebooks here. Download them as .ipynb files to save for future use!\n", "* Explore!\n", "\n", "### Explore ideas like **literate computing** and **reproducible research**\n", "\n", "There are many notebooks on the web that you can download, and then upload to your temporary notebook server. One of the most exciting aspects of Jupyter is \"reproducible research\"... entire programs that can be replicated completely. If this were standard operating procedures, it could have profound affects on [data-driven journalism and our economy](http://nbviewer.ipython.org/github/fperez/blog/blob/master/130418-Data-driven%20journalism.ipynb). \n", "\n", "Some interesting places to find notebooks for downloading (or just reading):\n", "\n", "* https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks\n", "* https://jakevdp.github.io/\n", "* http://nbviewer.ipython.org/url/norvig.com/ipython/xkcd1313.ipynb\n", "* http://nbviewer.ipython.org/url/norvig.com/ipython/TSPv3.ipynb\n", "* http://nbviewer.ipython.org/url/norvig.com/ipython/Economics.ipynb\n", "* http://beautifuldata.net/2014/03/datalicious-notebookmania-my-favorite-7-ipython-notebooks/\n", "\n", "Or just search for \"ipython notebook\" and your favorite computing topics!\n", " \n", "### Explore how you could implement sophisticated ideas like Continuations and call-with-current-continuation\n", "\n", "Ok, this is an especially geeky one for those of you interested in Scheme, but are more familiar with Python. How would you implement Scheme? Not just sorta... but the whole thing! The following notebooks are from my current Programming Languages course that I taught completely over the web using Jupyterhub, a locally-installed Jupyter system where students can log in to their own account.\n", "\n", "* http://jupyter.cs.brynmawr.edu/hub/dblank/public/Review,%20Continuations%20and%20CPS.ipynb - how to write Python code in \"continuation passing style\"\n", "* http://jupyter.cs.brynmawr.edu/hub/dblank/public/SchemeInPython.ipynb - implementing Scheme in Python\n", "* http://jupyter.cs.brynmawr.edu/hub/dblank/public/SchemeInPython.ipynb?download - download this notebook\n", "\n", "### Future work\n", "\n", "At Bryn Mawr College, we are working on bringing many other languages to Jupyter, including:\n", "\n", "* [Processing](http://jupyter.cs.brynmawr.edu/hub/dblank/public/Processing%20Mouse2D.ipynb) see also:\n", " * http://jupyter.cs.brynmawr.edu/hub/dblank/public/Processing%20Tests.ipynb\n", " * http://jupyter.cs.brynmawr.edu/hub/mxiong/public/ProcessingProjects.ipynb - many of these are interactive... click it!\n", "* Pascal\n", "* Prolog\n", "* Basic\n", "* Logo\n", "* Assembly language (LC3)\n", "\n", "And many others!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", " \n", " comments powered by Disqus" ] } ], "metadata": {} } ] }