Matt's Classroom Console
Teacher's digital markbook and all-round time-saver - last updated April 2021When 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:
- conditional formatting based on my own way of teaching and marking
- the ability to hide and categorise assignments, and only view certain categories (e.g. Homework, Classwork, Assessments, ...)
- linking assignments
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:
- To-do list - A huge improvement on the default Google Classroom to-do list in that it only looks at the current category (e.g. Homework) and only looks through classes marked as 'favourites'. This is a huge time-saver because I can see when students resubmit work for the assignments and classes I care about, without having to wade through a sea of Classoom notification emails. You can also add custom items to the to-do list with deadlines, and cross them off when complete. I no longer use a separate to-do list, with this one being 'semi-smart' in that it automatically populates it with any homework marking tasks for me to do.
- Email templates centre - Email templates can now be shared publicly by colleagues and comes complete with a syntax checker and integrated help file.
- Sharable Timers - Useful during lessons (which have been three hours long during the pandemic) to set breaks for students. It generates a QR code to a shared webpage that students can scan using their phone. They'll see the timer on their phone without having to synchronise their own clocks.
- Timetable - more integration with the college's systems led to accessing the teacher's timetable. It combines this information with stored information about Classroom courses. This gives super-quick access to a class's markbook or the link to take the register.
- An issue tracker - With multiple users, it quickly became annoying receiving emails about bug reports or feature requests. So I built this into the website, allowing me to see these in my own time. Alongside this, I made a simple patch notes screen.
- Gmail integration - Emails were already sent using the GMail API in the old version. But, now, a small amount of recent emails are searched (when requested) to see correspondence between students and teachers, and their parents. This has allowed me to create an automatically generated timeline for each student, which chronologically lists events for a particular student from three sources: recent emails relating to that student, notes added onto the college system about that student, and when they handed in their Classroom assignments (and when I marked them).
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.