Body Sorter

Back to Projects

Matt's Classroom Console

Teacher's digital markbook and all-round time-saver - last updated April 2021

When I started teaching, I quickly noticed that there were many aspects of my job that involved manual data analysis. I was told that I needed to send an email to a student when they didn't hand in their homework on time through Google Classroom, chasing them up about it. If students got behind by a few weeks, then I needed to include their parents in the email. And the body of the email itself needed to change depending on how behind the student was to impress the importance of catching up.

I started off doing this manually, then using Classroom's feature to export the assignment markbook into a spreadsheet with conditional formatting to help me see how far which students were behind. It was a chore manually importing the most recent week's mark data though. It was then that I found out about the Google Classroom API. I could write a program which accessed the same data I was manually exporting each week, and then do any analysis I wanted. After a few months of work, Matt's Classroom Console was born!

I wrote this program as a VB.NET Console Application (as a way to practise learning more about the programming language that I was teaching my students at the time). It started out as just the markbook, with the ability to compactly view the scores given to each student in a class for all the assignments. Google later released their own markbook on the main Classroom website. However, by this point, MCC already had some cruicial additional features:

My VB.NET skills improved greatly through this project. I learnt how to use multithreading (using the Task Parallel Library) and the asynchronous programming paradigm. As time went on, the number of features in MCC grew. The first major update saw additional data sources being accessed and combined with the Google Classroom data. Working with colleagues in the MIS department, I enabled my program to securely access student names and email addresses, as well as the email addresses of their parents/guardians. This led into the second major update: email generation.

I sort of created my own programming language for email templates. There were template parameters which were replaced by information such as a student's name, or how many Homework assignments they had missing that I wanted them to submit. There were commands for editing email headers such as the subject line and To, Cc and Bcc fields. There were even simple If statements to change the generated email based on any piece of data about that student. This email generation system meant that I could write a template once, then trigger it for all students who didn't hand in their homework with one command. It would personalise all emails (mail-merge style), and decide whether to Cc their parents depending on how behind they were with their homework. If I wanted, a copy of the email would also automatically be saved to the college's notes system for that student. I went on to extend the email generation system to work with HTML email templates, to make professional-looking homework reports to send to parents. Some even believed that these were generated by Google and wondered why they hadn't received them from their child's other subjects!

Then the pandemic happened and everyone was forced to work from home. I could still use MCC just fine with my Windows PC at home but, by this point, I had a small user base of colleagues in the Maths department. They were working from a range of devices, and specifically Chromebooks that the college supplied for us. This made me realise that I needed to create a web version of MCC. After a few months of hard work and botching together some Javascript and PHP, Matt's Classroom Console Online had been launched!

Ugly at first, the web-based UI quickly became far more user-friendly than the retro-looking console version. You could click buttons and use drop-down menus rather than having to type commands into a terminal. Checkboxes could be used to select students and, using Javascript, it was much easier to deal with all of the asynchronous API calls in the background. Fast forward about a year, and MCC Online has a modest but slowly growing user base of 9 regular users (mostly Maths and Computer Science teachers). I continue to improve and add to this system which is now allowing other teachers to also save valuable time for the jobs that really matter.

MCC Online now has more features than the legacy MCC console version (which still more or less works, by the way!). These include:

It was when finalising this timeline feature that I realised I had created what I initially set out to achieve: multiple data sources that were always accessible were now collated, analysed and represented in a useful way. I had not only optimised the automatable parts of my job (the initial goal of chasing students about their homework), but I had also created a system that helped me to be a better teacher. My colleagues and I noticed that we could now spot when students were falling behind sooner, before it became too late. We noticed that we could conduct more useful conversations with parents about their children because we had a rich timeline at the click of a mouse. And we noticed that timelines for multiple students could be aggregated to view recent updates across all the classes we taught in one place.

So, what's next for MCC Online? Well, the system is currenly in a pretty stable state. I am very busy with, you know, the global pandemic. Occasionally bug reports come in for me to fix, but I use the system daily as part of my job. At the moment, I can see one of two future paths for this system.

The first is that it gets even smarter. Perhaps I could create some algorithms to spot hidden patterns in the data and generate meaningful alerts to the teacher. Maybe one of my colleagues will suggest an incredible new feature. Or maybe the number of colleagues using the system at the college will grow and grow, and I'll be battling with their competing requests for features that fit their styles of working.

The second option is that it could die a painful death. With any system that combines data from multiple other systems, it only takes one of those to fail for huge parts of my site to become useless. The most likely of my data sources to change soon is the college's systems, which are currently undergoing an overhaul. I'm hoping to make a Google-only version of the site in time for any major changes to the college systems so that I can switch to it without having to take the site down. This would still ruin a number of the current features, including the email generation, timeline and timetable. The markbook and to-do list would still work though.

Regardless of whatever fate lies in store for this jumble of code that I have sunk hundreds of hours into, I have learnt so much from making it. From databases to Javascript, multithreading to managing a user base, I have got just as much out of making this as I put in and I look forward to seeing where these skills take me next.