Skip to content

Teaching SciPy: BoF at Scipy 2014

Chris Calloway edited this page Jul 9, 2014 · 25 revisions

Ideas / Agenda for the Teaching SciPy BoF at Scipy2014

We will be holding a BoF about teaching the SciPy Stack at SciPy 2014:

Wednesday 5:30 p.m.–6:30 p.m. in Room 106

https://conference.scipy.org/scipy2014/schedule/presentation/1762/

Please post your ideas for topics, etc. here.

Goal

Establish a community to create and maintain reusable content for teaching the Scientific Python stack to various audiences.

Introduction:

Many of us in the SciPy community teach scientific computing with Python. This BoF will be an opportunity for those of us involved in teaching SciPy to discuss best practices, common idioms, teaching techniques, and presentation tools.

Hopefully this will lead to greater standardization of how we presetn and teach the scipy tools, and maybe even a community-developed set of courseware for teaching the scipy stack.

Possible Topics (in no particular order):

Pre-existing Tutorial material

Py3?

When do we start teaching Python3? Do we do one or the other, or mingle them? If we are sticking with py2, how do we prepare folks for the eventual transition to Py3?

This might also be discussed in the Python 3 BoF.

Consider that Python 3.4 now includes both Pip and venv, making it packaging self-sufficient for the first time. Conversely consider that many domain specific tool stacks are Python 2 only and likely to remain that way to a long time. Consider the possibility of teaching both.

Presentation Tools:

The iPython Notebook is great, but is it the only tool that we should use? I find more traditions slide-based presentations can be useful -- particularly Sphinx+Hieroglyph: slides and nice HTML pages from the same source. What other tools are out there?

Standards for importing and using the core libs:

  • Almost everyone does import numpy as np (though I have still seen import * out there...
  • The biggest one is MPL: pylab interface? OO interface? How do you create axes and figures?
  • import scipy as sp?

Installation Environments

(You will need to be cognizant of the OS requirements of your audience.)

  • Anaconda
  • Canopy
  • Python(x,y)
  • WinPython
  • Bootable USB keys (Both OS and Python only for your OS)
  • Python.org + pip + wheels
  • Python Anywhere
  • Wakari
  • Virtual Box
  • Vagrant
  • Docker
  • VMWare
  • Xen

Development tools:

iPython and the iPython notebook are great for interactive use and data exploration, but often folks need to develop structured software: packages, modules, etc -- To what extent do we teach and demonstrate the basic workflow for development:

  • Setting up a good editor
  • Using an IDE
  • Debugger
  • Unit testing
  • Revision control (git) This is kind of a "software carpentry" vs. "Scipy Stack" question.

Python vs. Scipy:

Do we expect students to know basic python first? How much do we teach about python before introducing numpy?

Internals of numpy arrays:

The ndarray object is really two things: a nifty n-dimensional array object for Python, and a python wrapper around an array of "strided" data. A great deal of the power of numpy comes from the second definition: it allows easy interfacing with C and Fortran libraries and code. In addition, a basic understanding of the internal structure is important to optimal use of numpy, even from pure python (when is your array contiguous, when is it C vs. Fortran order, what impacts do those have on performance).

Do we introduce those concepts early in the game? Consider them advanced?

Approach

  • Github Repo? Organization?
  • Github is my email list or Google Groups or...
  • Road Map?

Notes from BOF:

  • Some people don't learn from guided instruction, but from deconstructing code snippets in a self-learning mode.

  • Often the impetus to teach comes from an invitation to teach.

  • Hook students with cool results and then show how they were derived (synthesis of the above two points).

  • The hook is useful for classes where the students are a captive audience required to learn something in which they may not have an initial interest.

  • Python is attracting "free agents" by virtue of high quality explanations of how to do things on the web.

  • There's an importance in explainging the significance of open source and the differences from proprietary software, particularly in the modes of support and documentation. This may help reluctant learners avoid rabbit holes.

  • Some people give up when encountering the first little difficulty.

  • Matlab help environment encourages Matlab users not to give up. R Studio has driven an uptake of R.

  • There are many audiences of both skill and motivation.

  • iPython Notebook will be more impressive to Fortran and Excel users than Matlab users.

  • Assume no Python knowledge even with programming experience due to SciPy complexity.