Video recording and production done by Enthought.
Historically, Matlab has been the primary math software tool used in our courses on Chemical Engineering. Last year, I taught the first course in the department using Python. In this talk I will present how I did that, and why it was possible. The first step was demonstrating that Python + numpy + scipy + matplotlib can solve all the problems we used to solve with Matlab. This was documented in a project called PYCSE through a series of over one hundred blog posts and organized in a web site (1). Second, the development of Python distributions such as Enthought Canopy made it possible to students to easily install and use Python. I had to augment this with some additional functionality with PYCSE (2) which adds some statistical analysis, differential equation solvers, numerical differentiation functions and a publish function to convert Python scripts to PDF files with captured output for grading. The only feature of Python missing is a robust units package; several partial solutions exist, but none solve all the needs of engineering calculations. Third, Emacs + org-mode enabled me to write the course notes with integrated Python code and output. These notes were provided to the students in PDF form, and annotated during lecture using a tablet PC. Finally, the course was administered with box.com and a custom python module to automate assignment collection and return (3). An integrated grade widget in the PDF files that was created when the students published their assignments was used to aggregate the grades for the gradebook. I used an innovative homework schedule of one problem every 2-4 days with rapid feedback to keep students using Python frequently. We used timed quizzes and online exams to assess their learning. Overall, the course was successful. Student evaluations of the course were as good as courses that used other software packages. Based on my experiences, I will continue to use Python and expand its role in engineering education.