During my time with the Shapiro Design Lab during the 2019 school year, my primary job was to train and deploy a convolutional neural network model for camera trap images from wildlife areas across the state of Michigan. When I wasn’t doing that, I had another job, working for the Office of Academic Innovation assisting in the creation of a MOOC, a massive open online course. The title of the course is Python Project: pillow, tesseract, and opencv, the fifth and final component of the University of Michigan Coursera specialization called Python 3 Programming Specialization. Throughout the year, I worked with the lead professor, Dr. Christopher Brooks, on the course outline and direction. The goal of the course was nuanced; how can we encapsulate and build off of the previous 4 courses, providing students with a comprehensive final project that will test students and prepare them for advanced future applications of python? This was specifically a challenge due to my inexperience with the previous courses in the specialization—I knew python well, but I didn’t know what the students from the previous courses would be familiar with, and how much of the programming language they knew.
The first few months were a whirlwind of research: I scoured through the previous courses to get a direction of the specialization, then strategized with Dr. Brooks about what kinds of content would benefit the students in our course. We wanted students to be able to use Python to its highest capacity, and came to the conclusion that a firm understanding of python libraries and packages would give students the tools to attack any domain with the language. Computer vision and optical character recognition (OCR) are complex computer techniques that are increasing in popularity with the advent of self-driving cars and information digitization respectively, and we decided that exposing students to these techniques would empower them to reach new heights with their programming abilities. I spent months researching these methods and learning libraries to implement computer vision and OCR. I created lecture materials in the form of jupyter notebooks that would succinctly yet effectively teach students how to look at documentation and use libraries to solve all sorts of fascinating problems. Some of the work I did on a package called Kraken, which assists in the OCR process for two or three-column documents, was able to directly assist in a records project in the design lab!
The final component of the class was creating a final project for the entire specialization. Combining all the elements in the class, Dr. Brooks and I outlined a project that would have students create a searchable database structure for newspaper images, allowing users to search for a word and have the database return all images associated with that word in the newspaper collection. We didn’t know if the project would be possible to create using only the libraries we introduced in the course, and have it fall within the student’s python skillset. Building the project from scratch was a challenge, but successfully implementing it was one of the highlights of the experience.
One surprising moment was when I was asked to record lectures that would allow students to create their own programming environments—and thus run the libraries and code—on their own computers. I had never recorded a lecture before, and with the studio scheduling, had very little time to prepare for the session. Luckily, I didn’t screw up too badly, and was able to record the lectures on the first few takes.
The course was launched on Coursera last week, and it’s an unbelievable feeling to see the hard work from the year on display for students to learn and benefit from. Over 200,000 students have taken the previous 4 courses in the specialization. I can’t wait to see what the next generation of python programmers can accomplish.