teaching machines

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, […]

Twelve Steps

Music theory is a daunting subject, built out of centuries of mathematical analysis and aristocratic pride. Sometimes I think I’d be better off reinventing it than trying to learn it at this late stage of its maturity. Here’s how I might get started. One day I’d be absently fooling around with a bit of wire, […]

SENG 440: Lecture 12 – Media Player and Ringtones

Dear students, Most of the big ideas of mobile computing are behind us. We’ve discussed the event-driven model of computing, offloading tasks from the main thread onto background threads, persisting data, connecting to web services, and the service-oriented architecture of mobile devices. For the rest of the semester, we just have fun. Today we have […]

SENG 440: Lecture 11 – Resources

Dear students, Today we wrap up our Lately app by presenting its master+detail UI on tablets as a single screen, showing both the list of headlines and the selected article. We’ll also add some labels to the UI to explain the widgets. Both of these tasks will accomplished with the help of Android’s resource system. […]