UCL Information Services Division


Teaching for the future of scientific computing

6 February 2017

A new MSc program in Scientific Computing began at UCL this year with the aim of producing highly computationally skilled scientists and engineers who are able to tackle real life problems in a structured and rigorous way. James Hetherington from the Research Software Development Group has contributed significantly to the development of this course and his team are helping to deliver the core skills training in high performance computing and software development. James tells us how it’s going and why this course is important for delivering the research skills we’ll need in future…

Where did the idea come from to set up a Scientific Computing Masters?

Professor Jonathan Tennyson (Physics and Astronomy) and Dr Marta Betcke (Computer Science) were the main people who put it together. The course that’s been created has an emphasis on the kind of computing that’s relevant in the physical and engineering sciences, but I think there’s an aspiration to create some other courses down the line that focus on other areas of research as well. It brings together specific courses on other areas of computationally based research: advanced algorithm courses, all that kind of thing, together with the skills focussed courses on scientific and research software engineering. These are the modules that RITS is contributing in conjunction with Dr Matt Clarkson in Medical Physics.

At what point did you get involved?

We had our training courses for scientific computing that I’d been developing since RITS started, and one of the pieces of work that I was keen to do was to move those in the direction of forming a complete syllabus in how to be a person who contributes to science through computing. Part of that was converting some of them into more in-depth courses that could be taken by graduate students for credit. It wouldn’t be right to do that out of Professional Services, so we did it jointly with Matt Clarkson in Medical Physics. That allowed us to create these taught courses which are registered through Medical Physics, but which RITS’s unique experiences and skills were vital in creating.

When the Scientific Computing masters was mooted, it was quickly understood by everyone that in the two courses Matt and I had created, Research Software Engineering with Python and High Performance and Research Computing with C++, we had the nucleus for the skills based component of the MSc, on to which the electives could then build.

How does this relate to your ongoing mission to support the Research Software Engineering community and career path?

It’s obviously very important that we start to build the skills that we need to do computationally based research. And, as with everything in terms of high skilled knowledge, there just aren’t enough people, so the more training we do the better. With this course we’re training people who have a scientific background to treat programming as a serious and important part of producing reliable, reproducible, and efficient research. These skills are obviously good training for a PhD, but they’re also much sought after by employers outside the university sector.

In academia, most research software engineers will continue to work as research assistants/associates within individual research groups. The aspiration is not for my group in RITS to own all of the research software engineering that’s going on in college; that would be stupid. But, we’re helping to make that cohort of people who will go on to do PhD’s and eventually fill those postdoctoral positions where research software engineering is an important part of their work.

Helping to establish, what will hopefully become as time passes, a course with a great reputation will also be in our tactical interests given the recruiting challenges that we experience in RITS. As friends in the Edinburgh Parallel Computing Centre have pointed out to me on more than one occasion, their HPC masters course has been a fantastic source of future employees for the EPCC.

So you delivered the first module, the Python one, last term?

Yes. It’s not a Python programming course, it’s a course about scientific programming that happens to use the medium of Python for the purposes of illustrating the important points about scientific programming. Everyone always calls it the Python course and I always correct them.

And so this term it’s C++…

Not the C++ course… High Performance and Research Computing with C++

Oops sorry. Has there been a lot of interest in the course?

When I teach my module (research software engineering with Python), the intake comes not just from the Scientific Computing MSc, but from people who take the course through Doctoral Training Centres, so it’s difficult for me to put a precise figure on who’s come from where. I think we have in the order of ten students who have come from the MSc, and over forty people doing the module in total. That’s really exciting that it’s over forty this year. When we first delivered it as a taught course, we had about ten to fifteen people, and last year it was up to about twenty. The course scales really well with more demonstrators so who knows where we’ll be next year? If we’re going to meet the scale of the problem, then forty isn’t the end point. Hence one of our colleagues Samantha Ahern is undertaking a project to get all of the RITS courses ready for independent online learning so we can scale up that way too.

What have been the biggest challenges in establishing and teaching the course?

Taking the course through the assessment formalism with the registrars was very tricky; there are a lot of rules to comply with when setting up an assessed course. If a single piece of coursework is more than a certain amount of the assessment, there are more rules around that, so two 25% assessments and a 50% exam gave us a good balance between rigour and flexibility.  A challenge for us was that UCL rules seemed to say that you need to write a paper based exam, which is difficult for a course on computer programming. This is the last year we’re going to be doing that though as we’ve worked out a way to be able to do an exam in a cluster room where people will be able to actually do the exam with an interpreter available. So that will change in AY 17-18. One of the things that I hadn’t anticipated though is that, when you convert a training course into an assessed module, some of the things you want to use as teaching examples, you have to save for summative assessment.

As the number of students on the course gets bigger, no matter how strongly you state your pre-requisites, the spread between the most and least ready to learn (I don’t want to say cleverest) gets wider. So that was probably the biggest challenge this year relative to previous years – just the wider spread in terms of backgrounds. It’s the duty of the teacher to teach everyone, but it’s also your duty to teach the syllabus that you said you were going to teach; and this is a master’s level course. I think we managed that, but I always think we could do better.

How has feedback been so far?

It’s been lovely. The useful measures looking at whether we were going too fast or too slow, and the amount of content and so on indicated we seemed to have got the balance about right. Some of the individual comments were extremely heartening and one student said “James Hetherington is a blooming fantastic lecturer” on their feedback which I’ve cut out from the feedback form and pinned up on my desk!


Scientific Computing Masters

Research Software Engineering with Python course notes

Research Computing with C++ course notes