Purposefully re-inventing the wheel: teaching computational models through shared, open examples

Sketch of impulse talk I planned to deliver at Monte Verita Workshop

When it comes to teaching computational musicology, there is almost always a skills gap between the technical, scientific tools needed to complete a task and what a student is able to do. Students who want to become involved with computational musicology often realize they need to learn programming if they want to pursue questions they find meaningful. Learning to code is almost never done as part of their coursework and the best we as educators can do is point them to the (dated?) resources that we (as self-taught programmers) found helpful when we were in their shoes.

Further, within these pedagogical resources (which, to be fair, are increasing in quality and quantity very rapidly!) there is a gap between the toy examples used to demonstrate basic concepts and writing your very first computational model. This pedagogical problem is not exclusive to computational musicology.

If you read around on message boards and forums where people are teaching themselves to code (often in attempts to change careers), this land of intermediate-ly challenged tasks is a common gripe. Without a more graded path to more complex scenarios, we lose potential colleagues, and frustrate our students.

So how do we fix this problem?

What we need is materials that fill the void between an online course that is domain agnostic and just focuses on a language (learning R or learning Python) and trying to get something like IDyOM installed and running on your computer in order to maybe tweak it to maybe have it do a task that you think it might be able to do.

We have a situation where often self-taught programmers (us) are teaching others without any formal training in best practices ourselves, often outside of any formalized pedagogical structure.

Luckily computational musicology is not the first group of people to run into this problem and this exact type of problem is the subject of books in the technology education space.

I think we can learn from texts such as Greg Wilson’s Teaching Tech Together. Specifically, I am thinking of the emphasis in this style of teaching where we avoid giving people blank screens and ask them to “start coding” and providing students with an assortment of example models and algorithms from the music cognition literature, written in various languages that we often use to all tackle the same problem.

I dream of a big page that lists an area of research (e.g. calculating an expectancy metric), and within that page are several of the models from the literature, written in a few of the common languages we use.

Something like Rosetta Code but for computational musicology.

Were we to have this, we would have a simpler point of entry for people to read more complex code, in a domain that is personally meaningful. Seeing several languages over several examples will show those we want to teach important concepts of how to abstract ideas. Often our students want examples, this would be a great way to given them examples.

Of course this requires the long term technical infrastructure to maintain, but were we to have it, I think we’d be in a great position in 20 years time.

Comment on this post on Twitter