How to Become Rich, Famous, and
Popular While Using Your Programming Skills to Make the
World a Better Place
(Maybe)Greg Wilson
2
5-15% use GPU clustersto analyze petabytes
in the cloud
85-95% send eachother spreadsheets
by email
Scientists
3
It Is Therefore Obvious That...
We should put more computing in the curriculum!
But it's already full
5
If you build a man a fire,you'll keep him warm for a night.
If you set a man on fire,you'll keep him warm for the rest of his life.
— Terry Pratchett
7
What We Actually Teach
Unix shell => Task automation
Version control => Track and share work
Python/R/MATLAB => Modular programming
SQL => Data management
Make => Reproducibility
8
How We Teach
● Peer instructors● Teach in pairs● Learners use their own machines● Live coding● Sticky notes● Collaborative note-taking● Iterate, iterate, iterate...
9
How It's Going
2011-11-072012-07-19
2013-01-062013-04-08
2013-06-242013-09-23
2014-01-082014-03-18
2014-06-152014-08-06
2014-09-272014-12-14
2015-02-092015-03-30
2015-05-252015-07-06
2015-08-272015-10-17
0
100
200
300
400
500
600
Workshops
11
How It's Going
Learners
2011-11-07
2012
-05-16
2012
-10-08
2012
-11-30
2013
-02-06
2013
-04-18
2013
-05-30
2013
-07-18
2013
-09-21
2013
-11-14
2014
-01-18
2014
-02-24
2014
-04-29
2014
-06-16
2014
-07-19
2014
-08-23
2014
-09-24
2014
-11-07
2014
-12-18
2015
-01-29
2015
-03-02
2015
-03-30
2015
-04-29
2015
-06-04
2015
-06-29
2015
-08-03
2015
-09-06
2015
-10-01
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
12
How It's Going
Instructors
2012
-05-27
2013
-07-20
2013
-11-17
2014
-04-19
2014
-07-07
2014
-08-07
2014
-10-03
2014
-11-05
2014
-11-13
2014
-11-20
2014
-11-27
2014
-12-13
2015
-01-07
2015
-02-06
2015
-03-01
2015
-03-12
2015
-04-20
2015
-05-26
2015
-06-12
2015
-06-26
2015
-07-05
2015
-07-10
2015
-07-14
2015
-07-28
2015
-09-02
2015
-09-25
2015
-10-13
0
50
100
150
200
250
300
350
400
450
500
14
What We've Accomplished
● Honestly don't know● Anecdotally, save people 10-20% of
their time for the rest of their careers● And prepare them for petabytes and
clouds
15
What I've Learned
1. We know a lot
about learning
2. Most people
would rather fail
than change
3. There are lots of
gaps to fill
17
● Today's MOOC platforms don't support PI● Piotr Banaszkiewicz showed it's possible
github.com/pbanaszkiewicz/peer-instruction● Opportunity #1
19
The Jupyter Notebook
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png":"iVBORw0KGgoAAAANSUhEUgAAArMAAAJA
CAYAAACe4e6sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n
AAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYFFfbBvB7qSIsH
...
20
The Jupyter Notebook
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png":"iVBORw0KGgoAAAANSUhEUgAAArMAAAJA
CAYAAACe4e6sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n
AAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYFFfbBvB7qSIsH
...
Good luck diffing and
merging this.
22
Generalizes Well
First-class support for diffing and merging spreadsheets will get more scientists to use version control than
anything else we can do.
23
Generalizes Well
First-class support for diffing and merging spreadsheets will get more scientists to use version control than
anything else we can do.
3 developers x 8 months (?)
(even if it's optimistic...)
24
Speaking of Version Control
● Git is an awful tool● git-man-page-generator.lokaltog.net● But it's the price people have to pay in
order to use GitHub
25
Speaking of Version Control
● A rational re-design of Git is possible and worthwhile
● Opportunity #3● Also generalizes well
Andreas Stefik and Susanna Siebert: "An Empirical Investigation into Programming Language Syntax." ACM Transactions on Computing Education, 13(4), Nov. 2013.
26
A Puzzle
● Thousands contribute patches to open source software projects
● Millions have edited Wikipedia
● Why don't people build lessons this way?
27
All Together Now
● We've shown it can be done● And that it's useful● This presents more opportunities
28
A Small Part of the Reason
● Slideshow formats aren't diffable either
● But HTML alternatives are impoverished
29
A Small Part of the Reason
● Neither can create web-native videos
● Proof: pause a video, highlight the text being displayed, and copy it
30
Solution: Browsercast
HTML slideshow...
...with start times for slides...
...and a player that syncs with audio
github.com/twitwi/deck.browsercast.js-demo
(Bonus marks for a GUI timestamp editor)
32
To Sum Up
● First-class support for peer instruction● Diff for all! (Excel first)● A rational reconstruction of Git● Browsercast● Rocket science● Fill in the gaps