New tools like the IPython notebook can enhance both lectures and textbooks, by making class time and individual study more interactive through the inclusion of executable code and animations. I will demo some materials and activities I've provided for students using the IPython notebook. I will focus on practical issues I've faced that are particular to this teaching approach.
Traditional university teaching is based on the use of lectures in class and textbooks out of class. The medium (lecture or book) discourages the natural curiosity that can lead to deeper understanding by investigating the result of changing a parameter, or looking at the full results of a time-dependent simulation.
The IPython notebook provides a single medium in which mathematics, explanations, executable code, and animated or interactive visualization can be combined. Notebooks that combine all of these components can enable new modes of student-led inquiry: the student can experiment with modifications to the code and see the results, all without stepping away from the mathematical explanations themselves. When notebooks are used by students in the classroom, students can quickly share and discuss results with the instructor or other class members. The instructor can facilitate deeper learning by posing questions that students may answer through writing appropriate code, during class time.
For the past four years, I have taught a graduate numerical analysis course using SAGE worksheets and IPython notebooks. I will show examples of the notebooks I've developed and successfully used in this course. I will describe some practical aspects of my experience, such as:
- Tradeoffs between using IPython and SAGE
- Experiences with use of cloud computing platforms
- Dealing with students' installation issues
- Quickly getting students up to speed with the Python language and packages
- Testing and evaluating homework in a math course that is programming-intensive