An important skill that students in solid Earth physics need to acquire is the ability to write computer programs that can be used for the processing, analysis, and modeling of geophysical data and phenomena. Therefore, this skill (which we call “computational geophysics”) is a core part of any undergraduate geophysics curriculum. In this Forum, we share our personal experience in teaching such a course.
Computational Geophysics Courses
While developing and teaching an introductory course in computational geophysics at the University of Bergen, we encountered two specific challenges. First, traditional teaching methods, consisting of 1- or 2-hour lectures supplemented with lab/exercises, do not work well. Learning computational geophysics is like learning how to drive a car: One learns only by doing. This requires not only the use of computers in classrooms but also the adoption of different teaching methods.
Second, there appears to be a lack of textbooks aimed specifically at first- and second-year students that jointly introduce programming and geophysics. Many solid Earth geophysics textbooks that have appeared in recent years contain computer programs and subroutines. Examples include books by Stein and Wysession , Shearer , Gerya , Ismail-Zadeh and Tackley , Schuster , Aster et al. , Menke , and Turcotte and Schubert . These books, and the programs they contain (mainly in MATLAB or Fortran), are very useful for intermediate and upper-level courses. They seem less useful for students who have no programming skills and little or no prior knowledge of geophysics.
Another category of books, dedicated to specific seismic processing methods [e.g., Helffrich et al., 2013; Scales, 1995; Forel et al., 2005], contains a wealth of programming resources. However, these are also aimed at students who have some prior knowledge of geophysics.
We therefore developed our own teaching material for our course, assuming that the students had no programming skills and minimal knowledge of geophysics.
Our course, which has been given every year since 2010, typically consists of 25–35 students. This number could be increased to 50 or 100 in principle. However, this has not been done because the classroom we use accommodates only 22 computers (with two screens each).
The students are expected to have basic knowledge of geophysics (exploration seismics, earthquakes, global seismology, gravity, heat flow, and plate tectonics) and mathematics (univariate calculus and linear algebra). No programming knowledge is required in this course.
In practice, about 80% of the participants are second-year geophysics students, with the remainder of the students being undergraduates in geology and physics.
We found that a natural framework for teaching computational geophysics is provided by the “active learning” approach [e.g., Prince, 2004]. There are many definitions of active learning. We prefer to use a quite general definition: Active learning is any instructional method that actively engages students in the learning process.
In practice, this means that each class session is divided up into three parts. First, there is a question and answer session, which gives the students an opportunity to ask questions about the previous lecture. After that, one to three new concepts are introduced and explained, often with the help of a computer program.
This sets the stage for the third part of the class session, during which the students work on exercises related to the new concepts. Students work on exercise sets either in pairs or on their own. Having students work in groups of three or more does not work well, in our experience, as the weaker students tend to copy from the other students. Also, if students work in pairs, then there is considerably more interaction between the participants.
The instructor and, ideally, several teaching assistants walk through the classroom to assist the students. Their main role is to help students understand the exercises and give hints wherever needed. Explicit answers are not provided.
There are a total of 5-8 exercise sets, each containing about 10 exercises that the students have to hand in. All exercise sets are graded pass/fail, and students need a pass on all exercise sets to take the final exam.
Although the setup described above works reasonably well, we implemented a set of additional classroom activities to help improve the students’ skills. We briefly describe three of these activities here.
In the first activity, students are shown a program on the screen. This program contains a number of errors. The students, working in groups of three or four, are asked to find these mistakes. A representative from each group then lists and discusses a number of these mistakes in front of the class.
A second activity consists of a quiz (covering, for example, the material of the previous 2 weeks). The students then grade one another’s quizzes and discuss their answers. In the third activity, the students are asked to name a concept covered in one of the previous classes that they found difficult to understand. This concept is then discussed by the instructor in front of the class. This typically involves a sample computer program. The students are then divided into small groups to discuss the new information and come up with an example of a computer program that illustrates this concept.
Many variations on these activities are possible. For example, in the first activity, the students can also suggest improvements to the computer program. In the second activity, the quiz can be done either on the computer or on paper. We found that the students generally learn from these activities (they are forced to think about the program, have to explain in their own words to their peers how and why they came up with a solution to a certain problem, become more adept at finding mistakes, etc.) and enjoy them.
Because the students are hesitant to speak up in class in front of all the other students as well as the instructor and teaching assistants, we found that small-group activities work best. A practical disadvantage is that the classroom is relatively small, and it is therefore difficult to form groups that contain more than four students.
Programming skills are developed from scratch in the course, and most of the programming exercises contain geophysical applications. Material covered in the class includes basic concepts from earthquake seismology (computation of epicentral distance, computation of seismic moment given a slip distribution on a fault, etc.), exploration seismics (e.g., computation of travel time and amplitude as a function of distance for simple layered models), and gravity.
The mathematical/programming concepts used include definition of variables; array and matrix manipulation; linear algebra; functions of two or three variables; plotting of functions of one, two, or three variables; linear interpolation; one-dimensional (1-D), 2-D, and 3-D integration; 1-D and 2-D differentiation; for and while loops; basic statistics; functions; program structure; and commenting of the programs.
Feedback and Resources
We found the teaching strategy described above to be an attractive alternative to the more traditional approach of “formal lecture plus practical exercises,” especially in the case of computational geophysics courses. Computational geophysics is a relatively new and rapidly evolving topic, and for us, finding the manner in which it can best be taught will require more experimentation and an exchange of ideas with other instructors.
Courses in computational geophysics (or, more generally, computational geosciences) are offered in many, if not most, departments of Earth sciences worldwide. A cursory Internet search returns a number of university websites providing outlines and learning objectives for courses in computational geophysics. Moreover, a tremendous amount of work has been accomplished by the National Association of Geoscience Teachers’ “NAGT On the Cutting Edge” project to organize workshops, compile information about geosciences courses, and provide teaching tools to instructors (including active learning techniques) in geophysics (see http://serc.carleton.edu, especially, http://serc.carleton.edu/NAGTWorkshops/geophysics/index.html).
Despite all these available resources, we struggled to find sites that shared personal experiences (from the perspective of both instructors and students), actual teaching methods, and/or teaching material (especially exercises) for introductory-level courses in computational geophysics. Therefore, we would like to invite anyone with an interest in teaching computational geophysics to share with us their personal experience, as well as any other material/methods/needs and comments they find relevant, via the email address indicated below.
If there is enough interest, we plan to publish these resources in a dedicated website and organize a session on the topic at the 2015 AGU Fall Meeting.