In order to give a bit of background on the origins of the PyCav project, I’m attaching the application that John and I made back in January to the Teaching and Learning Innovation Fund.
The goals of PyCav are:
- To put the one or two rather powerful computers that a typical undergraduate carries with them into service in the teaching and visualization of key physics concepts.
- To dramatically raise the computer literacy of our undergraduates.
Physics research is a quantitative discipline that relies heavily on computational tools to run experiments, gather and analyze data, and build theoretical models. The benefits of computation to the teaching of physics in Cambridge are, in our opinion, equally great, but at present only partially realized.
Because physicists have historically been early adopters of new technology, our current computational curriculum is fragmented across multiple platforms, so that a typical student does not achieve fluency in any one language. This creates a vicious circle in which lecturers do not feel empowered or motivated to add more computation to their courses, and students lack enthusiasm for what will almost certainly be an important part of their later careers, whether in business, industry, or academia.
PyCav will address this need by developing a coherent cutting edge curriculum for computational physics. We propose to integrate computational physics into the existing physics lecture courses, and use a modern computing language (Python), which has the benefits of openness, wide adoption in physics research and commercial environments, graphical richness, and rapid development using high-quality existing libraries.
PyCav will consist of four streams, to develop:
- A set of computational physics investigations related to some of our major Physics lecture courses, which allow our students to explore and visualize complex physical phenomena beyond the analytic examples given in lectures. We will initially target examples for our own lectures courses in Optics (Richer) and Theoretical Physics (Lamacraft).
- Dynamic web pages which host these problems, and provide solutions or hints for student self-evaluation. We will also investigate methods for automatic code validation, as used in the Computer Science Tripos.
- Lecture “demonstrations” in Python for a small number of lecture courses.
- Python tools for data manipulation, data analysis and plotting in the undergraduate practical classes.
TLIF funding will be used to pay four summer students, each assigned to one of the above streams. Current or recently graduated physics students are the ideal staff for this project, because they will bring their own experience of the undergraduate course, ensuring that materials are developed at the right level. A high level of physics understanding is key to the success of the project, and we expect several of our own Part II and III students, and perhaps some from Computer Science, will be very interested in these summer jobs.
The PIs will evaluate and choose the best Python distribution and platform for our teaching. We have established links already with a local Python distributor, Enthought, and had an initial meeting with them to discuss our plans. We will evaluate their distribution Canopy, alongside that from Anaconda, python.org, trinket.io, and others. Both PIs are expert in computational physics, and in Python (Richer has professional experience as a software engineer).
Looking back, it’s odd that Jupyter notebooks and the surrounding technologies don’t even get a mention, given the dominant role they’ve come to have in the project.