Learning Scientific Python with IPython: Lesson Design

Help Wanted

We are filling in the exercises below in order to make the lesson plan more concrete. Contributions (both in the form of pull requests with filled-in exercises, and comments on specific exercises, ordering, and timings) are greatly appreciated.

Process Used

This lesson was developed using a slimmed-down variant of the “Understanding by Design” process. The main sections are:

  1. Assumptions about audience, time, etc.

  2. Desired results:
    • Overall goals
    • Summative assessments at half-day granularity
    • What learners will be able to do, what they will know, etc.
  3. Learning plan
    • Each episode has a heading that summarizes what will be covered, then estimates time that will be spent on teaching and on exercises.
    • The exercises are outlined to make expectations concrete.

Stage 1 - Assumptions

Stage 2 - Desired Results

Essential Questions

How do I…

Concepts

Learners will know that…

Summative Assessment

Skills

Learners can:

  1. …run code interactively in the Jupyter Notebook.
  2. …run code saved in a file from the Unix shell.
  3. …create, index, and slice lists.
  4. …create and index dictionaries.
  5. …call built-in functions.
  6. …use help and online documentation.
  7. …import code from libraries.
  8. …read tabular data into arrays and data frames.
  9. …do collective operations on arrays and data frames.
  10. …create simple plots of data in arrays and data frames.
  11. …interpret common error messages.
  12. …create and run unit tests.
  13. …write functions with default parameter values.
  14. …download data from the web programmatically.

Stage 3 - Learning Plan

Basics (09:00)

Control Flow (09:25)

File I/O (09:45)

Libraries (10:00)

Coffee (10:20): 15 min

Writing Functions (10:35)

Defensive Programming (10:55)

Dictionaries (11:10)

Profiling (11:40)

Lunch (12:00): 60 min

NumPy Arrays (13:00)

Pandas (13:30)

Plotting (14:00)

Coffee (14:30): 15 min

Command-Line Programming (14:45)

Testing (15:10)

Getting Data From the Web (15:35)

Summary (16:00): 10 min