Initial Publication Date: October 7, 2016
The skills gap between the graduates we produce and the graduate students we'd like to recruit (or, "How I bit the bullet and tried to teach computing.")
Gareth Funning, Department of Earth Sciences, University of California, RiversideI once overheard one of my graduate students, chatting to a visitor about his Masters research. "I think it's gone well," he explained, "since I learned to use the computer."
I work in the field of tectonic geodesy – a branch of geophysics – using measurements of surface deformation made using GPS or InSAR to estimate the rates of strain accumulation on faults, or the geometries of faults that failed in earthquakes. It is a sufficiently young field that few standard modeling codes exist – we have to write our own. This means that I am constantly on the lookout for potential graduate students who are interested in my field of study, and also have basic coding skills and familiarity with the Linux command-line.
I have a hard time finding them.
When I started in my faculty job, more often than not, I ended up taking on students who had broad geological training, and therefore interest in researching earthquakes, but found I had to spend six months to a year or more training them. To their credit, each of them rose to the challenge, although some certainly found it more of a struggle than others.
After a couple of years, this somewhat bespoke training I was providing to students was formalized into a graduate class in introductory scientific computing, drawing on students from across the Earth Sciences. I focus on a few skills that I consider foundational for graduate students in geophysics – simple shell scripting to manipulate files and reformat data, plotting maps and data using the Generic Mapping Tools, the basics of LaTeX, and linear inverse modeling using MATLAB. The students conclude with a project and report that encompass all of these new skills.
In this class, I have run headlong into the full gamut of student-computer issues. With a broader pool of students, I have to address a broader range of experiences. While some, mostly international students and/or students with backgrounds in other sciences, have coped without too much anguish, I have also encountered students who do not have experience in reading on-screen error messages, students who have very rusty (or absent) college level calculus or linear algebra, or students who have never operated outside of a GUI interface. I have also found several cases of students who cited experience of working in the terminal, or having taken a single class in programming (usually in C++), but were unable to transfer these skills to a new setting, as if a small deviation from the recipe that they had been following previously suddenly would throw them completely off-track. I have struggled to help students who seem to lack the computational vocabulary to describe the problems they are having, or to ask how to start.
These challenges suggest a gap between the preparation in technical computing that students receive at undergraduate level, and the skills they need coming in at graduate level. This realization has led to some soul-searching at my own institution, UCR, where we are in the midst of a comprehensive rethinking of our curricula. Do we prepare our students adequately for the 'big data' future? Are we, in fact, part of the problem?
At UCR, alongside more focused core curricula in Geology, Geophysics or Earth Sciences, we have attempted to address this skill gap in computing by implementing a new class, focusing on simple programming in MATLAB, and making it a requirement for all of our majors. This class was taught for the first time in Spring 2016. We are still in the process of understanding how best to pitch the instruction to our target audience, which is something I hope the workshop at Carleton College will help with. But the potential prize – of a cadre of graduates who know how to 'use the computer' – is certainly one worth pursuing.