Honour's Projects in Web and Mobile Applications and Computer Music Applications etc.

last updated summer 2018

Note: I'm currenly restricting myself to projects based on web and mobile applications because there is a shortage of supervision in that area. Please don't propose java desktop apps -there are others that can supervise those.

I tend to supervise projects that involve exploratory construction of applications. By exploratory I mean we are not just building apps from technologies that are already fully covered in existing courses. The apps should not seem like an assignment for an existing course. Often we build apps similar to things done in courses but with technologies we are considering as replacements for existing ones.

I generally supervise projects that relate to web or mobile design, user interface design, databases, and applications related to music.

Note all projects are subject to the SCS honour's project guidelines at:


See some recent project reports here: recent_honours_projects.


SVG vs HTML5 Canvas

In COMP 2406 we use the HTML5 canvas for apps that involves drawning and mouse events. This project would be to replace our Canvas based content with SVG (scaled vector graphics) instead. In particular to demonstrate taking advantage of zooming with SVG's and the fact that mouse event handlers can be attached directly to SVG elements. The project would involve developing tutorial material the help students learn to use SVG in their web app development.

Replacement of Java with Kotlin:

Currently our 1601 mobile app development course runs on Java but Kotlin is now an officially supported language for Android. This project would be to rework some of our existing java content and see what it looks like in Kotlin and to investige what issues arrise if we replace Java with Kotlin in some of our first or second year courses.

User Interfaces:

Touch screen technology has created new opportunties for user interfaces. We are interested in using these capabilities for editing music scores and chord/lyric charts. Essentially entering music with simple hand, or handwriting gestures. This project would involve investigating and protoyping such solutions. An important goal is to build a user-interface based application that could serve as a code base for students to modify in courses like 3008.


SQLite has become a true competitor for traditional data structures. We want to provide infrastructure code an tutorials to be able to incorporate it into our existing courses that otherwise might not use a database. For example encorporating a memory-resident SQLite database in the COMP 2402 data structures course. The project would be to develop tutorials and code assets and examples, for doing this.


Others database related projects:

ER-diagram compiler that allows students to draw ER diagrams from which we produce SQL to create the database.

Database normailization: we want to investigate building an app that would guide a database designer through the steps of normalizing their database.

Comparing Relational and JSON databases. Create a running example the can be used to illustrate and explore the trade-offs in using an SQL database like SQLite or MySQL with a JSON database like MongoDB. In particluar to address how to think about normalization when using a non-relational database like MongoDB.

ER Modelling (Databases):

I have a javascript web application for normalizing functional dependenies. database normalizer. This app should really have a ER-Diagram Editor in front of it. This project would be to build and ER model editor in javascript/web technolgies that students could use and modify in courses like the COMP 3005 database course.

The editor would presumably be built using HTML5 canvas or SVG technologies and be deployed as a client-side javascript applicationb.


COMP 3005 demo database app using Node.js and javascript. Traditionally in COMP 3005 I have used a SQLite database wrapped in a java/Swing app as the basis of course assignments. Many students are more interested in using SQLite wrapped as a Node.js/javascript application. This project would be to convert the current demo database, or new one, in the COMP 2406 technologies with the purpose of serving as a demo app for COMP 3005 assignments etc.

Node.js based Servers and Web apps:

Node.js has become a very popular platform for building simple internet servers and web applications. It currently is the platform of the COMP 2406 web apps course. This project would be to develop content and tutorial material for building a substantial app using this platform. This platform has the promise of being able to provide us with easily building apps that all students in the class can interact with -at the same time. The specific app must be of value as an educational demo.

Node.js Server Hosting:

In COMP 2406 we do most of your classroom and tutorial code demos to connect a client to a local server at http://localhost or hosting on our own openstack linux images. However there are an increasing number of ways to host a server on a remote machine through hosting services. This project would be to investigate some of the alternatives and develop specific tutorial materials that would allow students to set up server apps that can be accessed from remote machines. This tutorial material could be useful for any course or project that requires students to put up a publicly visible server.

Music Related:

App control of Behringer XAir mixers

Behringer's XAir series of mixers (XR18, XR16, XR12) are very popular and controlled entirely by iPad, Android, PC or Mac applications (the mixers have no physical controls). They have also made public the Midi and OSC protocol allowing third parties to write their own apps. This project would be to develop such and app as a demonstration. (A few years back with did some similar projects for the poplular Yamaha 01v mixers which was quite successful.) We have a first pass at this project which was implemented this basic capabiliy from an IOS app. This project would be to continue that work and address specific tasks that users might would want to perform with the mixers.

MP3 player/PDF viewer

Musicians use many PDF charts or chord sheets to play from. This project would be to build an MP3 player that can be synched with the PDF page to allow pointing parts of at the PDF chart and resuming play from that point. It would be an interesting project to see how the playback and PDF document can be combined. One possiblity is to play the mp3 through once and "learn" how it corresponds to different locations on the document.

iRealBook Editor

iRealBook is a popular iPad, iPhone app that displays chord charts for musicians. It uses a very simple but proprietory encoding of charts. There are simple, but clumbsy, editors, available for building charts as well. This project would be to build a useful editor and that would also represent charts in a more general XML format, and then also allow translation to the iRealbook format.

Web-based Score Editor

This project would be to commence on an web-based score editor based on the arborsong score editor that I have developed for PC. The initial part of this project would probably involve mostly graphics rather than music notation. Once the graphics portion is complete the music scoring can be added on that base. We want to build a web-based graphics framework that other projects could build off. In particular it should incorporate our own fonts and zoom capability.

Fake Book Library:

A Fake Book is a book of music charts used by jazz musicians, for example, on gigs. A chart is a one or two page score that can be used during improvisation. There are currently about a dozen volumes of fake books in popular use. Each consists of about 300 to 500 songs. (let's say 5000 songs). These fake books are currently available in .pdf volumes. In a previous project we have extracted individual songs in .pdf form and created a database to search and display individual songs. This project would extend the effort. The current one uses an http server and web pages to talk to an sqlite database. A java based (non web) version is also desireable. In addition to extending the catalog of actual songs, there are also many other extensions, including synchronizing the library with mp3's and other representations of the chord charts.

XML music representation

My own score editor, Arborsong,  currently uses a proprietory  XML language to represent music. This project would be to investigate the proposed MUSIC XML standard and build a translator that can translate Arborsong XML to MUSIC XML and vice versa.

Band In A Box import/export

Band In A Box is probably the most popular piece of software for automatically generating play-along music from chords input by the user. However we want to be able to programmatically generate data for this app. The app has limited import capability but on possiblity is midi. The project would be to develop an editor that output a midi file suitable for import in to Band In A Box.


Music Entry in Scoring Programs

One of the tricky problems of writing software to represent music scores is "how do you get the music into the score?" Different program use different approaches. This project is to do a thorough investigation of the techniques currently being used and to make recommendations for our own score editor.

A popular format of songs is chord/lyric sheets represented in chordpro files which imbed the chord symbols in the lyrics. Often the chord positioning is wrong and needs to be edited quickly. Also it would be highly desirable to be able to indicate bars. That is, to show the a piece of music is 12 bars long and which chords and lyrics go in which bar. This project would be to investigate an editor and storage format that would make this quick and convenient.

Design of a Jazz-Style Music Font.

Our prototype score editor uses a "hacked and modified" version of a commercial music font. We would like our own music font which looks better and is more appropriate for the application. The project would be to create our own music font. It would be of interest to people with both computer and illustration/artwork interests.

Midi based-time analyser:

A few years back we built a Mac-based timing analyser that turned out to be a helpful diagnostic tool for fixing timing problems for performing musicians. It created a useful graph which displayed tendencies to rush or drag when playing, or when certain figures were causing timing problems. This project is to implement a PC version which would incorporate the lessons learned from the original prototype.