Skip to content

Teaching SciPy: BoF at Scipy 2014

Mike Toews edited this page Jun 16, 2018 · 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.)

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.

  • What parts of SciPy should be taught?

  • Having a real problem to solve is an approach to involve the student in their domain.

  • Curate materials to flow from either direction: tool to domain problem or domain problem to tool.

  • Data Carpentry is different from Software Carpentry by being domain specific.

  • Indexing domain specific examples is difficult.

  • "Just in time" soluctions to problems are in demand. Shorter, more accessible, make for better lessons.

  • Does loading real world data complicate examples? Does Pandas help.

  • Problems are different in academia and industry. Academia is more concept oriented. In industry, audiences require marketing (shiny objects, flashy delivery). https://blog.trinket.io/visual-examples/

  • Similarities to teaching statistics. That domain has compiled data sets that pose interesting problems for pedagogical purposes, data with narratives, data paired with numerical techniques.

  • The flipped classroom (even using, say, Code Academy) could be used to teach the Python needed for SciPy. Learn Python on your own before coming to the domain specific SciPy class.

  • Being able to walk away and come back to material helps.

  • Having material in multiple formats/delivery mechanisms is helpful.

Conclusions

  • Signup on Etherpad for BOF: https://scipy2014.etherpad.mozilla.org/36
  • Set up GitHub org that can be used for staging for/issuing pull requests to Data Carpentry
  • Use Github as you email list.
  • Investigate training.enthought.com licensing and publication system.
  • Remember the flipped classroom.
  • Training build must pass tests!
Clone this wiki locally