Skip to content

Commit b2fa7f8

Browse files
authored
Merge pull request #38 from ipython/pycon-2017
wip: update submission for 2017
2 parents 9499345 + 20e5c9f commit b2fa7f8

File tree

1 file changed

+99
-37
lines changed

1 file changed

+99
-37
lines changed

pycon-submission.md

Lines changed: 99 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
Authors/Presenter.
2+
3+
- Matthias Bussonnier: bussonniermatthias AT gmail.com , Core Developer of IPython/Jupyter.
4+
- Mike Bright: pycon AT mjbright.net, Solution Architect at HPE OpenNFV Lab Grenoble, long time IPython and Jupyter User and Contributor.
5+
- Min RK: benjaminrk AT gmail.com Core Developer of IPython/Jupyter
6+
7+
Notes: Box on the Pycon Proposal website are
8+
9+
- Description
10+
- Audience
11+
- Outline
12+
- Additional Notes
13+
114
# Title
215

3-
IPython & Jupyter in depth: high productivity interactive and parallel python
16+
IPython and Jupyter in Depth: High productivity, interactive Python
417

518
# Category
619

@@ -12,87 +25,133 @@ Intermediate
1225

1326
# Domain Level
1427

15-
Intermediate
28+
Introductory
1629

1730
# Description
1831

19-
IPython and Jupyter provide tools for interactive and parallel computing that are widely
20-
used in scientific computing, but can benefit any Python developer.
32+
IPython and Jupyter provide tools for interactive computing that are widely
33+
used in scientific computing, education, and data science, but can benefit any
34+
Python developer.
35+
36+
You will learn how to use IPython in different ways, as:
37+
38+
- an interactive shell,
39+
- a graphical console,
40+
- a network-aware VM (Virtual machine) in GUIs,
41+
- a web-based notebook combining code, graphics and rich HTML.
2142

22-
We will show how to use IPython in different ways, as: an interactive shell,
23-
a graphical console, a network-aware VM in GUIs, a web-based
24-
notebook with code, graphics and rich HTML, and a high-level framework for
25-
parallel computing.
43+
We will demonstrate how to deploy a custom environment
44+
with Docker that not only contains multiple Python kernels but also a couple
45+
of other languages.
2646

27-
# Audience
47+
# Audience
2848

2949
Programmers interested in using Python interactively, especially in data
30-
analysis environments.
50+
analysis environments. Prior knowledge of Python is best. Some prior knowledge
51+
of Python is helpful. Some experience with Docker would be helpful but not
52+
required for the last quarter of the tutorial.
3153

3254
# Objectives
3355

34-
At the end of this tutorial, attendees will have an understanding of the overall design of Jupyter as a suite of applications they can use and combine in multiple ways in the course of their development work with Python and other languages. They will learn:
56+
At the end of this tutorial, attendees will have an understanding of the
57+
overall design of Jupyter (and IPython) as a suite of applications they can use
58+
and combine in multiple ways in the course of their development work with
59+
Python and other programming languages. They will learn:
3560

3661
* Tricks from the IPython machinery that are useful in everyday development,
3762

38-
* What the high-level applications in Jupyter, the web-based notebooks and the graphical Qt console, can do and how they can be used.
63+
* What high-level applications in Jupyter, the web-based notebooks, can do and
64+
how these applications can be used.
3965

40-
* How the IPython's architecture forms a natural foundation for high-level parallel computing with low latency and high throughput.
66+
* How to use IPython and Jupyter together so that they can be best used for the
67+
problem at hand.
4168

42-
* How the overall picture of IPython and Jupyter fits together, so that they can better use its components for the problem at hand.
43-
4469
# Detailed Abstract
4570

46-
IPython started in 2001 simply as a better interactive Python shell. Over the last decade it has grown into a powerful set of interlocking tools that maximize developer productivity in Python while working interactively.
71+
IPython started in 2001 simply as a better interactive Python shell. Over the
72+
last decade it has grown into a powerful set of interlocking tools that
73+
maximize developer productivity in Python while working interactively.
4774

48-
Today, Jupyter consists of an IPython kernel that executes user code, provides many features for introspection and namespace manipulation, and tools to control this kernel either in-process or out-of-process thanks to a well specified communications protocol implemented over ZeroMQ. This architecture allows the core features to be accessed via a variety of clients, each providing unique functionality tuned to a specific use case:
75+
Today, Jupyter consists of an IPython kernel that executes user code, provides
76+
many features for introspection and namespace manipulation, and tools to
77+
control this kernel either in-process or out-of-process thanks to a well
78+
specified communications protocol implemented over ZeroMQ. This architecture
79+
allows the core features to be accessed via a variety of clients, each
80+
providing unique functionality tuned to a specific use case:
4981

50-
* An interactive, terminal-based shell with capabilities beyond the default Python interactive interpreter (this is the classic application opened by the `ipython` command that most users are familiar with).
82+
* An interactive, terminal-based shell with capabilities beyond the default
83+
Python interactive interpreter (this is the classic application opened by the
84+
`ipython` command that many users have worked with)
5185

52-
* A [graphical, Qt-based console](http://ipython.org/ipython-doc/stable/interactive/qtconsole.html) that provides the look and feel of a terminal, but adds support for inline figures, graphical calltips, a persistent session that can survive crashes of the kernel process, and more. A user-based review of some of these features can be found [here](http://stronginference.com/weblog/2011/7/15/innovations-in-ipython.html).
86+
* A [web-based notebook](http://jupyter.org/) that can execute
87+
code and also contain rich text and figures, mathematical equations and
88+
arbitrary HTML. This notebook presents a document-like view with cells where
89+
code is executed but that can be edited in-place, reordered, mixed with
90+
explanatory text and figures, etc. The notebook provides an interactive
91+
experience that combines live code and results with literate documentation
92+
and the rich media that modern browsers can display:
5393

54-
* A [web-based notebook](http://ipython.org/notebook.html) that can execute code and also contain rich text and figures, mathematical equations and arbitrary HTML. This notebook presents a document-like view with cells where code is executed but that can be edited in-place, reordered, mixed with explanatory text and figures, etc. The notebook provides an interactive experience that combines live code and results with literate documentation and the rich media that modern browsers can display:
94+
![Notebook screenshot](http://jupyter.org/assets/jupyterpreview.png)
5595

56-
![Notebook screenshot](http://i.imgur.com/eo2SqS9.png)
96+
The notebooks also allow for code in multiple languages allowing to mix Python
97+
with Cython, C, R and other programming languages to access features hard to obain from
98+
Python.
5799

58-
* A high-performance, low-latency system for [parallel computing](http://ipython.org/ipython-doc/stable/parallel/parallel_intro.html) that supports the control of a cluster of IPython engines communicating over ZeroMQ, with optimizations that minimize unnecessary copying of large objects (especially numpy arrays). These engines can be controlled interactively while developing and doing exploratory work, or can run in batch mode either on a local machine or in a large cluster/supercomputing environment via a batch scheduler.
59-
60-
These tools also increasingly work with languages other than Python, and we are renaming the language independent frontend components to *Jupyter* in order to make this clearer. The Python kernel we provide and the original terminal-based shell will continue to be called *IPython*.
100+
These tools also increasingly work with languages other than Python, and we
101+
renamed the language independent frontend components to *Jupyter* in order to
102+
make this clearer. The Python kernel we provide and the original terminal-based
103+
shell will continue to be called *IPython*.
61104

62105
In this hands-on, in-depth tutorial, we will briefly describe IPython's
63106
architecture and will then show how to use the above tools for a highly
64107
productive workflow in Python.
65108

66109
# Outline
67110

68-
**IPython: Interactivity beyond Python**
111+
Note to reviewers: Each section will take 1/4 of the teaching time, taking into
112+
account the scheduled snack break. Each section will provide takeaway slides
113+
and notebooks for the attendee. There will be hands-on time of 5-10 minutes
114+
during each section for attendees to try out concepts.
115+
116+
**IPython: Interactivity beyond Python**
69117

70118
- Introducing the IPython Notebook as an interactive environment.
71119
- Beyond Python: magic commands, shell access, object introspection, variable caching.
72-
- Development workflow: integrating IPython with scripts via the `%run` command.
120+
- Development workflow: integrating IPython with scripts via the `%run` command.
73121
- Tools for typical development tasks: timing, profiling, debugging.
74122

123+
We will leave 1 to 2 minutes hands-on for simple subjects like object
124+
introspection and variable caching. We'll give a couple of 5 minutes hands-on
125+
exercises for profiling and debugging.
126+
75127
**Back to the terminal(s)**
76128

77-
- The text and Qt-based consoles.
129+
- Demo and discussion of the last added features of the command line interpreter.
78130
- `IPython.embed`: a useful 'microscope' into your own scripts.
79131
- Control the namespace of your GUI codes with an IPython kernel.
80132
- Customizing IPython with profiles.
81133

134+
We'll leave 5-10 minutes at the end of this section for user to play
135+
with multiple profiles and embeded IPython.
136+
82137
**The IPython/Jupyter Notebook**
83138

84139
- Basic concepts: the server, the dashboard, your notebooks.
85140
- A notebook as a rich document: text, code, results and multimedia.
86-
- The IPython display protocol: `__repr__` on acid.
141+
- The IPython display protocol: `__repr__` for more than just text.
87142
- Converting notebooks to other formats for sharing, blogging and publication.
88143
- Sharing your notebooks: [nbviewer](http://nbviewer.ipython.org).
89144

90-
**A brief introduction to `IPython.parallel`**
145+
We'll leave 10 minutes for user to create a custom representation for an object
146+
of their choice and publish their notebook online on nbviewer.
147+
148+
**Cloud hosting and multilanguage**
149+
150+
- Deploying with docker (locally or in the cloud).
151+
- have the attendees deploy a image that contains the latest development versions.
152+
- show how to write various extensions, and multi language integration.
153+
- introduce JupyterHub and its use for groups
91154

92-
- Basic architecture: the concept of an "interactive IPython cluster".
93-
- Direct execution of code across engines in a cluster.
94-
- Dynamic load-balancing of tasks.
95-
- IPython engines in the cloud (illustrated with Rackspace Compute instances).
96155

97156
# More info
98157

@@ -105,7 +164,10 @@ The materials for this tutorial are
105164

106165
# Additional Notes
107166

108-
This is essentially a repeat of a tutorial Fernando Perez gave at Pycon 2014.
109-
It was apparently a big success and he was asked to do it again. However, since Fernando cannot
110-
make it to this Pycon, he has asked us to do it. We are both core members of
111-
the IPython development team.
167+
Versions of this tutorial have been presented at PyCon 2012, 2014, 2015 and also EuroPython 2016. It
168+
has been well received so far, and we would like to keep teaching about
169+
IPython and Jupyter!
170+
171+
https://www.youtube.com/watch?v=XFw1JVXKJss (2012)
172+
https://www.youtube.com/watch?v=bP8ydKBCZiY (2013)
173+
https://www.youtube.com/watch?v=05fA_DXgW-Y (2015)

0 commit comments

Comments
 (0)