Few industries change faster than computer science, with programming languages emerging, evolving, and even disappearing at a dizzying clip. The key to keeping up is knowing how to think about coding and organizing data, which is exactly what Matthew Singer instills in the students clamoring to take his computer science classes at Commonwealth School.
Whether students arrive totally unfamiliar with programming or with a few coding projects under their belts, they leave with the foundational skills they’ll need to thrive in almost any development environment. (And perhaps with a newfound love of modern cinema.) Learn more about Mr. Singer and his approach to teaching computer science (CS) below.
Getting to Know You
What's bringing you joy right now?
So, this is a little corny, but the students. The fact that they're still so engaged, despite everything that's going on in the world, is bringing me a lot of joy.
There are also my cats, Hazel and Henry. Coffee is a very immediate flip-on-the-joy switch. I also cook a lot; some recent favorites were a Chinese mustard chicken and beef stroganoff.
When I really need to unplug, TV is my go-to. My favorite show of all time is Mad Men. I could watch that for hours and hours and not get bored.
What is your favorite book (or book you've re-read)?
A Storm of Swords by George RR Martin. The Game of Thrones books are so good. I’m desperate for The Winds of Winter to come out; how amazing would that have been for quarantine?
What was your favorite class in high school?
English with Ms. DeMare, because she was a little off the wall in the best way. We would get into fun arguments. It was a great, lively class.
Describe Commonwealth students in three words or less.
Curious, funny, and memorable
Working at Commonwealth
What led you to teaching and to Commonwealth in particular?
I've always loved teaching; even when I was in middle school and high school, I liked helping other kids with their assignments. Then I became a tutor, and I also worked as a teacher’s assistant all throughout college.
After college, I worked in the field as a software developer, so I was building new features, participating in code reviews, and, of course, doing plenty of refactoring and debugging. (It's the amount of time spent doing the latter that really shapes the emphasis of my courses, because the “bugs” are unavoidable, but we can take steps to minimize them.) In the end, though, while I loved writing software, it didn't drive me like teaching did. So I came back to teaching at Northeastern, helping them run their Fundamentals of Computer Science courses full time.
Someone referred me to Commonwealth when the school was looking for a computer science teacher in 2019, and I fell in love with the school on my first day. Recess was a real standout to me. Seeing how the students were allowed to just speak, I was blown away by the trust in them and how mature they had to have been for that to be the case.
What courses do you teach, and how did you develop them?
Computer Science 1 and 2 are essentially college introductory courses. Computer Science 3 (The Theory of Computer Science) also draws heavily on college-level theoretical course work, and Computer Science 4 (Advanced Topics in Computer Science) is currently an independent project workshop, where students also present their findings to each other. Over the summer of 2021, however, I will be developing it into an "applied algorithms" course, which will touch on fields like artificial intelligence and data mining.
The introductory courses are challenging but open to all students, whether or not they have programmed before. I address the different levels of experience using a student-centric language that the vast majority of students just don’t discover on their own. It’s related to Racket (a programming language), and it helps level the playing field.
The methodology and ethos behind CS1 (The Design of Computer Programs) is to help students understand that programming is not just about getting something to work; it's about writing an artifact other people can understand. Software is written once and read hundreds or thousands of times, and if you write code that is hard to read and understand, you are potentially costing people thousands of hours down the line. Learning how to organize our code enables us to solve really interesting problems, because we know how to not get lost in our own logic. I actually asked students what they thought about this approach to the class, and one first-year student said she's programmed before, but that her perspective on coding has gone from “pure chaos dumpster fire to beautiful and seamless organization,” which I just love. I promise I didn’t pay her to say that.
In CS2 (Designing with Classes), we basically take all the core lessons from CS1 and apply them to Java, which is an industry-standard programming language. We see that even in a very different programming language, the same core concepts and design techniques still apply. Then we learn about more complex ways of programming, ending in an exciting project, like coding an AI-powered chess game.
What do you hope students get out of the computer science program at Commonwealth?
There are a million different technologies and frameworks and programming languages. But if you have a strong core practice—if you really know how to think about programming and understand how to design and manipulate data—then you can go into any job and essentially pick up whatever language or framework you're dealing with.
Both CS1 and CS2 teach very systematic problem-solving frameworks that you can then apply to other fields. And with CS3, I hope students walk away with an appreciation for the beauty and the depth and the complexity of trying to prove things about programming. I want my students to be able to slip into almost any development environment with these fundamentals.
What does success look like in your classes?
Success looks like being willing to attempt difficult problems, asking for help when you need it, and knowing that encountering difficulty is part of the learning process. If you can do all that, then odds are you're going to succeed.
You recently taught Understanding Cinematic Storytelling for our Dive In Commonwealth summer program, and you’re a well-known cinephile around school; can you tell us more about that?
Well, I love movies. I'm just a huge fan. But that part of my life kind of fell apart with the pandemic, and it’s been hard to get excited about movies without the ritual of going to a theater. I haven’t been following all the movies released digitally, and when I do watch movies at home, I find focusing a lot harder. Going to the movies, especially with friends, is one thing I’ve definitely missed a lot. Now that I’m vaccinated, I can start to think about going to the movies again, but that’ll probably be a focus for the summer.
I'm dying to teach a 21st-century film course class at Commonwealth too. Our students end up watching a lot of old movies while they're here, and they’re great, important films. But my computer science students were telling me about how much they loved Ex Machina (2014), because it featured the Turing Test. There’s relevance. The people who say there are no good movies nowadays aren’t going out and looking for them. So many come out every year!
What are some of your favorite movies?
Oh boy, I love this question, even though it’s like asking me to pick a favorite finger. Right now, The Witch by Robert Eggers comes to mind. It may not be one of my all-time favorites, but I think it's basically a perfect film. The Rocky Horror Picture Show is absolutely a top-tier movie for me. For a true favorite movie, let's say Black Swan.
Anything you’d like to add?
The only thing I would add is that I love teaching and working at Commonwealth because the people around me are so excited and passionate not just about what they're teaching and learning but also a bunch of other things. It's an infectious environment, and I think it's a genuinely special place.