teaching machines

SENG 440: Lecture 15 – Camera

Dear students, We are back from a break. I hope you grew as a human being. I did, and I’m hoping to change things up a bit in this second half of the semester. The first half was largely me leading you on code adventures in lecture. I really don’t enjoy teaching in this tutorial […]

Machine Setup for Computational Music

This coming summer I’m leading a summer camp on digital music and sound generation. There are many steps to get the computers set up, and I record them here to share with helpful system administrators and my future self. Software to Install The following is a list of the base software that needs to be […]

Why 12?

We looked previously at how an octave—or doubling, as we called it—is partitioned non-linearly into intermediate tones. But we didn’t ultimately decide how many intermediate tones there should be. The pioneers of Western music converged on a 12-partition. But why not 8? Or 10? Or 11? Or 13? Ultimately, we want our instruments to sound […]


A year ago some students and I started designing programming languages for generating 2D vector art. I called my language Twoville, which pays homage to Seymour Papert’s metaphor of learning math in Mathland just as we learn French in France. The language is a place to learn about and forge 2D shapes. After the semester […]

SENG 440: Lecture 14 – Alarms and Notifications

Dear students, Today we examine some helpful utilities: notifications and alarms. We’ll write an app that prompts the user to accumulate memories by taking a photo each day. Today we’ll focus on the prompting side of things, saving the camera for later. Before we forget, here’s your TODO for next time: Read the project 2 […]

Five through Fifteen

On our walks home from school, my 8-year-old son has been telling me of a math problem that he has not been able to solve. Yesterday, after a week of not finding a solution, he wrote down the problem on paper for us to investigate together. Here is the task in my own words: Distribute […]

SENG 440: Project 2

See the PDF.

SENG 440: Lecture 13 – Object-Relational Mapping via Room

Dear students, Today we examine persisting data with databases. We will add a song database to our Rattler application. Initially we’ll just maintain an in-memory database, but then we’ll switch to long-term storage using Room, an object-relational mapping framework. Since ORM tools let us maintain our schema and forge our queries in our host language, […]