University of St Andrews Module Visualisation


The aim of this project was to facilitate navigation and understanding of the University of St Andrews undergraduate course catalogue. In its current form, the course catalogue is a collection of PDF-documents split up by school and by sub-honours and honours level. This makes it difficult for students and advisers alike to figure out what modules students should be taking. Further complicating the matter is that the list of tables in the PDFs give no indication of what consequences module choices will have. For example not taking the 2000-level networking module in Computer Science leads to not being able to take CS3102, which further leads to not being able to take CS4103, CS4105, CS4302, and CS5022, due to the “chaining” of pre-requisites. This consequence of not taking a second-year, sub-honours module is cumbersome to figure out based on the PDFs, as one would need to look through all the honours modules in second year, well beyond the modules relevant for that year or even the next one, whichare listed in a separate document from the one the student would be looking at, i.e. the sub-honours document(s).

With joint honours, the difficulty increases even more, due to the large variety of required modules for the programme in combination with the requirements of other modules the student might be interested in.

This project aimed to solve these issues, or at least facilitate the planning process, by visualising the modules and their requisites as a network of nodes and edges respectively. It involved designing a database to store the module information in, since the university never responded to requests for access to their database. The database design was not trivial, as it had to be able to store requirements in Conjunctive Normal Form, something which it turns out relational databases do not lend themselves to nicely. The project also involved designing visualisations in order to best show the relationships between modules. In the end, a proof-of-concept was produced, along with an extensive report which should allow future students to extend the project.

The project can be found on GitHub and is licensed under GPLv3. The final report can be downloaded from GitHub or the top of this page.


  • Dr. Dharini Balasubramaniam, for creating and supervising this project
  • Dr. Ruth Letham, for help with the database design
  • Ms. Alice Lynch, for writing the base of the web-scrapers
  • Mr. Iain Carson, for help with D3 and the returnNodes method
  • Dr. Uta Hinrichs, for feedback and ideas concerning the visualisation designs
Thomas Ekström Hansen
Thomas Ekström Hansen
PhD student in Computer Science

My research interests include low-level programming, type systems, and formal methods.