Joe Raciti, an instructor for the Coding in Python elective in Millbrook’s Math Department, has a modest goal for the course: “I want this to be the most important class they take in their whole lives.” Raciti, on loan from the Music Department where he is the vocal music director, began teaching Python, a flexible and widely used computer programming language, about three years ago.
Physics students have used C, another common programming language, in designing and conducting experiments, so Raciti decided to offer Python as a more versatile alternative. “It’s a good general-purpose language,” he said, “It’s intuitive, clear, strategic, and very useful in artificial intelligence and machine learning.”
As with many of Millbrook’s upper-level electives, the basic subject matter belies a larger lesson. In the Python class students discover that computer programming is about solving problems and not only about the particular language used to make a computer perform a task. By using concrete examples, lightly disguised as logic problems, the class can assess whether a given challenge can be solved more quickly or accurately using a computer script. If so, students are encouraged to use Python to work out a solution.
Computers often use known data to predict unknown outcomes. These algorithms are frequently based on natural patterns and occurrences, and in this vein Python can use genetic algorithms. Raciti is quick to remind students that much of the work that Python can do is based on “nature’s own problem-solving expertise.” This concept also encourages students to look to the natural world for answers.
Classes have written code for a variety of applications both at Millbrook and in the world at large. They have investigated fantasy football, economic predictions, and Formal Dinner seating arrangements. The latter topic is especially interesting, given Millbrook’s pride in the collegial atmosphere of the campus and, especially, in how well the faculty know each and every student. Assigned seating at formal dinners has never been done randomly, but Raciti suggests that a genetic algorithm would be an efficient and thorough means of maximizing the intermingling of students and faculty at formal dinners.
In coding, and in life, it is crucial that students are always aware of the correlation of action to reaction. Writing code can be a trial-and-error process, and Raciti encourages students to work independently and to be fearless of failure.
Coding in Python produces students who leave class knowing an intricate and useful programming language and with a sense of how to include coding in other areas. Raciti’s goal is to give his students another tool to “make life better by generating high-probability correct answers.” With a lifetime of decisions ahead of them, Millbrook’s coding students will be better-informed problem solvers.