Motivating undergraduates in the geosciences to learn programming

Alain Plattner, Earth and Environmental Sciences, California State University-Fresno

Learning to write simple computer programs can have tremendous effects on students in the geosciences. Besides training their ability to formulate precise procedures, program- ming skills allow students to automatize lengthy processes and create reproducible data investigations.

The vast majority of our senior-level undergraduates and a significant number of graduate students (MS) that enter our program in Earth and Environmental Sciences at California State University Fresno lack experience in programming. This limits the scope of research projects in which the students can participate and puts them at a disadvantage when competing for jobs and spots at top-level PhD programs. However, many of our students do not by themselves put in the effort to learn how to program.

To motivate our students to learn how to program, I am in the process of incorporating classes in our curriculum and adapting teaching strategies that that aim at [1] showing our students that the ability of writing your own programs has significant advantages, and [2] give the students an easy path to learning how to program.

I started to implement part [1] in Fall 2015 by incorporating simple self-written programs into my teaching. The students do not require programming skills to use these programs but the programs allow the students to play with parameters and observe the effect of their choice. At this point I have included self-written programs into my class "Introduction to near-surface geophysics", which teaches the basics of seismic surveys, electrical resistivity tomography, and ground penetrating radar. I made these programs freely available on the GitHub repository The programs are simple enough to allow students to look inside and see what calculations are used and how they are used. My teaching activity submitted to this SERC meeting makes use of some of the programs that I wrote for this class.

I started implementing part [2] in Fall 2016 by teaching an introduction to Matlab for geoscientists. The class is at a level easy enough to not overwhelm the students and focuses purely on programming aspects with minimal use of mathematics. At the same time, the students learn enough tools and ways of thinking to independently solve a broad range of problems that arise in the geosciences. I am following the book "An Introduction to Matlab for Geoscientists" by David Heslop, which I found through SERC. The class is, at this point, limited to 15 students to allow interaction with each student during the lectures. In class we discuss the various parts of programming in detail (e.g. for-loops) including short in-class exercises that the students complete on-the-go to identify misconceptions and difficulties. Students then solve the exercises presented in David Heslop's book at home and their submissions are graded. David compiled a version of the book for me that does not contain the solutions to the exercises.

At this point I do not possess any data on the success of my implementations. I did observe a drastic change in the students' behavior in the Matlab for geoscientists class concerning the way they ask questions. Early in the class, students would simply say "I do not understand what I need to do". But after a few weeks, students would first attempt to solve exercises themselves and then approach me with specific questions about points they do not understand. In the future I am hoping to develop specific measures that allow me to measure the success of my approach and to further develop the curriculum.

Downloadable version of this essay

Motivating undergraduates in the geosciences to learn programming (Acrobat (PDF) 46kB Sep29 16)