One of the joys of teaching mathematics at George School is seeing students take an idea and run with it. Indeed, one of the best ways to truly learn a topic, to make the knowledge one’s own, is to dig in and to try to see it on one’s own terms. This can happen when projects are assigned, but it is particularly exciting to see student-generated interests flourish into independent projects they embark on out of pure curiosity and a commitment to learning for learning’s sake.
In the Discrete Mathematics and Number Theory class, students learn combinatorial thinking, graph theory, and explore the many intricacies of numbers. We all have familiarity with numbers, but the deep structure of how numbers are put together is ultimately shrouded in mystery. Sometimes seeing this involves working with gigantic numbers, way beyond our abilities to compute by hand. Because the school also offers great computer science and robotics classes, students have had the opportunity to delve deeply into coding. This leads naturally to putting the two topics together—using computation to explore and check facts about numbers—HUGE numbers!
At the beginning of the year, one of my classes was exploring one of these huge theoretical numbers whose existence we could prove but was too hard to find by hand. Curious as to whether he could use his computer science knowledge to find the number itself, my student Ryan Bencivengo, took his own time to write a program that did just that! He brought in his program to show our class, and together we were able to see firsthand how computer programming could verify the existence of this number that otherwise was only an abstract theoretical possibility to us.
Excited by his innovation, I decided to make more space in this class for students wishing to apply and deepen what they are learning in math, and I created a Module for Discrete Mathematics and Number Theory students in which they could post their creations. So far, students have written programs hunting for numbers satisfying certain divisibility conditions, they have implemented the Euclidean algorithm, and written perfect number generators. The languages used were Python, Java, and C++.
What is particularly exciting as a teacher is that this was completely student-generated, and it is a testament to student ingenuity and drive to learn and apply their knowledge across different disciplines. As a teacher, my duty is not just to teach mathematical concepts, but to inspire curiosity and demonstrate how what we are learning inside the classroom has application outside of the classroom and outside of my discipline. Programming can be a way of making mathematics come to life, and it is a joy to see students take the initiative in this way.
A member of the Math Department, Hamilton also is a swim coach who “loves seeing students (athletes!) put their mind to something and improve.” Outside of working with students, he enjoys playing with his own children, walking his dog, gardening, and experiencing the changing seasons. He has a BA from New York University and an MA from the University of Virginia.