I recently used Python in a new required graduate level chemical reaction engineering core course. The course was taken by 60 Master's students with a broad set of educational backgrounds and programming experience. Several factors contributed to the success of this course, which I will present and discuss. Based on my experience, it is feasible to use Python in engineering courses.
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.