William Graham

Profile picture

Mathematician turned Research Software Developer.

View My GitHub Profile

External Links

Teaching Experience


I find teaching and tutoring to be a rewarding experience in of itself, and consequentially have been heavily involved in a number of teaching activities and roles since the third year of my undergraduate degree. My teaching and teaching-adjacent experience, in no particular order, include:

You can read more about my teaching experience below.

Teaching Software

As part of UCL-ARC (University College London)

After joining ARC, my time was split between software projects and the education team, responsible for the delivery of ARC training courses to the rest of the UCL community. During this time, I completed by Software Carpentries instructor training, and became the organiser for the annual cycle of Software Carpentry workshops that ARC offers - numbering between 5 and 6 workshops each academic year. My second year at UCL was also when I first lead a postgraduate-level module; “Introduction to Research Software Engineering with Python”, which expanded my responsibilities to writing assessments, holding office hours, and delivering course content in lectures.

2022 - present, Software Carpentries Organiser, UCL-ARC

2023 - present, Module Lead, UCL-ARC

During my PhD (Uni of Bath)

For the final three years of my time in SAMBa I was been involved with preparing (writing, rendering, reviewing) the material for, and demonstrating at, the SAMBa induction sessions at the beginning of the academic year. In 2020, I oversaw the process of reviewing the course material and organising the induction sessions. Also from 2019 till 2022, I got involved with the delivery of the university’s introductory software training program - a course that essentially followed The Carpentries’ material. This was the start of my experience in teaching programming and software-related content - a very different experience to the classroom-style mathematics tutorials I was also running alongside my PhD. It was also my first time hearing about the title of “Research Software Engineer” - the (note, “the” as in singular person) RSE at Bath was in charge of running the Doctoral Skills sessions.

Demonstrator for the Doctoral College

2019 - 2022, Doctoral College, University of Bath.

Doctoral College Demonstrators Part of the Doctoral College's role at the University of Bath is to provide courses for postgraduate students to develop their skills as a researcher. As such, the College offers a number of introductory and intermediate programming skills sessions (focusing on Python and the UNIX command line) to all research students at the University, running one programme of these courses each university term. Demonstrators during these sessions are required to support the learning of attendees by answering any questions that arise whilst students work through the course material. They may additionally take on the "lead" instructor role for a session, whereby they are responsible for leading the teaching portion of the session, in addition to the previous responsibilities.


Producing Training Material

2018 - 2021, SAMBa CDT, University of Bath.

Induction Training at SAMBa A core pillar of the training provided by SAMBa in the MRes year is to provide students with experience and familiarity with how computing is used to enhance or support mathematical research, which encompasses a wide range of applications and hence programming languages. SAMBa provides a short, self-paced introductory course for each of the languages that students are expected to use at some point during their MRes year (at least one of which is likely to be used during their PhD). This material is produced, organised, and maintained by SAMBa students who are currently in the PhD years of the SAMBa programme, and is reviewed each year to ensure that changes to the SAMBa program are reflected in the training that is provided. Unlike more general courses in programming, these courses provide a background that leans heavily on the techniques that a student will be expected to employ whilst using each language: the MATLAB course focuses on array manipulation, efficient programming, and iterative methods, for example, because this encompasses the ways in which MATLAB is employed in the respective MRes units.


Teaching Mathematics

Tutor for the Dept. of Mathematical Sciences

This was my first “official” teaching role of any kind. Our circle of friends at uni had always been active in helping each other out since we shared a lot of overlap between our various degrees, but this was the first time I’d ever had to prepare material up front, and was expected to be the “expert in the room”. After completing my undergraduate degree I moved into the maths department properly, and continued in this role alongside my PhD. Over the 7 years and (\approx) 25 groups; I learnt how to properly prepare myself for these sessions, anticipate potential questions or problems that students might raise in the sessions, and how to guide students towards an answer, rather than spoon feeding it to them. It is also very rewarding to be able to help a group of people understand a topic that you yourself struggled with during your education - it seemed to go down well as I was nominated for a teaching award twice during the seven years, and received consistently positive feedback from my students.

2015 - 2022, Dept. of Mathematical Sciences, University of Bath

Tutor Responsibilities Tutors for the Department of Mathematical Sciences take between 1 and 3 groups per teaching term, for a one hour session each week that focuses on one of the modules those students are studying as part of their degree. In this session tutors are expected to answer questions from their students about the material from the lectures of that module, and cover example questions to support the students learning. Tutors are also expected to mark and provide feedback on the work produced by their students, and to spend up to one hour preparing the material for each tutorial.