Stacsnet: an e-learning platform for St. Andrews computer science students

** Updated 25th July 2025

The idea for this project came during my undergraduate degree in computer science at St. Andrews University. Stacsnet is a web platform for CS students with three main features:

  • View content (e.g lecture slides, graphics) for previous years as well as the current year for all available modules

  • See class averages, grade boundaries, variations, and marking trends, and grade boundaries for the selected modules over previous years.
    • The data servinh this feature is designed to be provided by submission from students, who would anonymously submit their grades for each module they took.
  • Upload and share your own files (videos, diagrams, lecture notes, exam scripts, resources from other universities, etc… )
  • All personally uploaded additional resources are tagged with one more modules and topics.
  • All personally uploaded additional resources are available to all users of the site.
  • A message board, categorised by module and topic.
    • Users can browse and contribute to previous conversation threads and reply to others posts
    • Ask specific questions on a particular module/topic, optionally tagging another user

St. Andrews already has a intranet called studres, where lecturers may upload lecture slides, examples, and other resources need to complete coursework assignments. Studres is OK, but it has its limitations. Only staff may upload on to studres, which generally happened at irregular intervals, and the content itself only contained the lecture slides themselves, which was generally limited and incomplete. Studres is also only accessible to matriculated St. Andrews computer science students. However, because the resources were often inadequate, many students also used lecture notes made publicly available from other universities. I definetely had some some favorite universities when it came to additional resources, and would of found a platform such as this very useful at the time.

When I first created stacsnet, around a year before writing the original post, it was slightly different from the version that is available now. Originally, stacsnet contained many of the features listed above, in addition to containing a synced copy of all files posted on studres. When i depolyed the original version, I was aksed to take it down, or at least remove the lecture content, due it being copywrighted material. I was surpried, since the lecture slides seemed mostly a copy of content other universities, but I took it down anyway.

Even though the current version of stacsnet does not contain copy over any studres content, I have implemented some authentication features to prevent public access to the site. In order to use most of the features stacsnet, you must create an account, and to do this you need to prove you have acceess to a valid @st-andrews.ac.uk email address. An email address under the st-andrews domain is given to each student when they matriculate. I couldnt find a similar method to restrict users to only computer science students, although I wasnt particularly interested in doing this anyway because whilst stacsnet was designed specifically for computer science students, it implements a framework that could easily be adapted for students studying other subjects or at other universities also.

The current authentication prevents the general public from being able to use the site, submit phony grades or post irrelevant questions and answers.

Its a bit of an understatement to say that St. Andrews didnt really put the student first, and marking of grades and exams was on occassion was blatantly absurd. I do recognise this to be a problem not just at St. Andrews but across almost all big univerities, and I envisaged a world in which multiple different universities would adopt their own version of this platform as a private intranet, and these networks could then be somehow linked together. Students across universities could collaborate with eachother and share resources, and see how each other are being marked and exactly what level of coursework and exams you could expect. I think not only would this improve student satisfaction but it would put pressure on the university teaching staff to deliver a better and more consistent educational service.

The screenshots below illustrate two of these features in further detail:

  1. Average grades for the module CS2002 in 2018, visualised as an interactive historgram. To preserve anynomity no data is displayed until at least 3 submissions have been made. When we hover over a part of the histogram, the individual marks of the exact grades that contribute to the mean score are displayed. Other statistical analysis metrics and measure of central tendency such as standard deviation and variance are also given.
Stacsnet average grade visulisations
Average grade visulisations
  1. When posting a question, you can either start a new thread, or reply to a previous post. There is no limit to depth of replies originating from the original question, and subthreads can branch of at any point. The interface is designed to be easy to navigate, and my implementation of how posts are logically persisted in database storage is simple and easily maintained. The screenshot below shows how you can tag your post with identifiers such as a module code or other keywords, and this can be included with post meta data to allow easy searching and filtering of previous posts.
Stacsnet average grade visulisations
Browsing messsage threads
Stacsnet average grade visulisations
Replying to questions

I wrote stacsnet using the MVC framework for ASP.NET core (C#). I used SQLite and entity framework core with for all querying and database functions, and theres a fair amount of Vue components/javascript in the Views.

I did deploy also the site for a while on a cheap linux VPS. The built-in server for MVC is called Kestrel and can only listen on localhost so I also had to set up an nginx reverse proxy. Unfortunately, the university didnt like this idea and wouldnt allow me to promote it, so eventually I took the site down, but ive open sourced it on my github page.