Our interactive Python trinkets were designed to be used in the classroom but users are finding many other creative ways to use them! In this interview, Mike Molony describes how he’s been steadily working his way through Project Euler, a set of mathematical programming challenges, and blogging his interactive solutions using Trinket. Enjoy!
This is part of a periodic series of interviews we’re doing of educational innovators. An archive of previous interviews can be found here.
Elliott: Your blog has over 130 Python solutions (and counting!) to the 470+ Project Euler Problems listed on projecteuler.net. Could you briefly explain the Project and describe what inspired you to start blogging your way through it?
Mike: Project Euler (www.projecteuler.net) is a fantastic resource that provides problems, mostly with a mathematical tone, that helps teach you programming by solving problems. It wasn’t long before I discovered that most submitted solutions were 50-200 lines of code and took hours to execute. I wanted a forum that shared solutions taking fewer than 15 lines of Python and running in a fraction of a second. And, as I had hoped, I get many comments on how to improve my solutions even further. So, blogging my solutions has been a learning experience for me also.
Elliott: We’ve been very excited to see you using our Python trinkets in ways we hadn’t imagined. Your blog does a great job of teaching both Python and computational thinking. What reactions have you gotten from visitors on the new interactive solutions you’ve added?
Mike: The response has been outstanding and I am moving all my solutions to trinkets. Live interaction with Python programs allows anyone to experiment with the results by changing a few parameters, and helps them discover new methods they hadn’t thought of before. My site’s traffic has doubled so far and is breaking records every month since installing trinkets. This has been a very exciting improvement in both exposure and blog usability.
Elliott: Do you have a favorite Project Euler solution that you’d like to share and/or explain briefly?
Mike: I wish I had a more graphical solution to share as that is much more eye-catching that the typical printed results. I do plan on adding graphics to augment my collection but if I had to pick just one, then my solution to Problem 31 would win. It gets over 2000 visits per month and is a classic example of solving counting problems using dynamic programming. In some ways, trinkets have become online calculators for specialized problems where parameters can be changed, such as the ‘coins’ array in Problem 31, and view the results instantly. Here’s the trinket:
Mike Molony’s Project Euler Problem 31 solution. See Mike’s original post here.
Elliott: How did you first get into programming? And how did you pick Python as a language?
Mike: I started programming in the 1970s using Fortran II and assembly language in high school and soon realized the cycle of typing source on paper tape, compiling/linking and running only to find a syntax error was getting old quickly. So I discovered BASIC and fell in love with the instant response of interpreted languages. Years later I discovered Perl and migrated to Python which is simply one of the best languages to learn and develop with. Python offers a rich scope of programming models and can solve complex problems in a concise and easy-to-understand way.
Elliott: What advice do you have for teachers who are interested in using Project Euler in their classrooms?
Mike: The Project Euler problems start out very easy and gradually get more complicated. They teach simple numerical analysis, computer science and, indirectly, programming. As a problem set, they have enough for every skill level and programming language to keep things interesting. It’s a great way to introduce gamification in the problem solving arena by having badges and levels awarded for students’ performance.
Elliott: What’s next for you and your blog? Any other projects you’d like to share?
Mike: I have committed to publishing once a week. I have solved over 450 of the problems (originally in Perl) and pick one randomly to write about. I am currently developing a device that provides biometric identification using the dorsal hand vein pattern. It is algorithmically intensive and very rewarding to work on.
Elliott: Where can users find you if they have questions or suggestions for you?
Mike: My Twitter handle is @betaprojects