University of Alaska Fairbanks
Geophysical Institute

Beyond the Mouse 2010 - The geoscientist's computational chest.

Beyond the Mouse 2011 - The (geo)scientist's computational chest.
(A Short Course on Programming)

"Programming is legitimate and necessary academic endeavor."
Donald E. Knuth


In the (geo)sciences -as in many other disciplines- we collect data which need to be analyzed in ways that depend on the problem posed. The ability to modify your environment according to your needs instead of having it dictate how you approach a problem is invaluable. This is especially true in a setting that is supposed to generate fresh knowledge. Also, and this may be even more important, we are lazy people. We do not want to waste time by repeating the same steps again and again, and ... again. Such boredom causes errors. And being bored by such routines is totally legitimate. A computer (the machine, and earlier the person) exists to perform such routines reliably and repetitively: It takes in data, manipulates it following your commands (YEAH!), and gives the respective result. The point of writing computer programs is to automate an intellectual challenge that has been solved and make it reusable at all times - for yourself and ideally for others.

What this course is:

The intent is to hand you tools that will allow you to massage data in exactly the way you want it to be. We will start out manipulating your thinking, introduce you to programming in general, and then take off into specific working environments namely Unix/Linux and Matlab while teaching you how to map your data using GMT. We will cover many things in a short amount of time which means that we will give you many pointers which you can follow up on depending on your needs.

What it is not:



The class is pass/fail. Passing is based on mostly weekly homework assignments/lab exercises, and a final project (percentages of individual labs depend on total number of labs (max. 12)):

Labs+Homework+Project Presentation70%
Homework1/2 Lab
Project Presentation1 Lab
Final Project30%
Pass>= 50%

The homework exercises consist of:

The labs help you apply things taught in class. The complexity of the labs varies. Usually they consist of a simple introduction problem to get you used to the environment, understand new commands, etc. In a second part you will apply this in a slightly more complex way to data, or simply write more complex code.

The final project will (hopefully) be specific to your research project. We want to encourage you to set up an efficient and safe environment in which you apply the methods and tools introduced in class. In the beginning of the semester you will provide us with a snapshot of your project directory (If you don't have one, don't bother). Send rudimentary datafiles - scripts/programs should be executable. You will do the same at the end of the term. Our expectations include (further specification later in the term):

(tentative) Schedule:

The class meets: Mon (lecture+lab) + Tues (lab) 3:30-5:30 pm in REICH 316.

Sep 08IntroductionJeff Freymueller, Ronni Grapenthin
Sep 12,13Lecture 1: Thinking ProgramsRonni Grapenthin
 Lab 1: Organizing your ideas 
Sep 19,20Lecture 2: Fundamental Programming Principles I:
Variables and Data Types
Ronni Grapenthin
 Lab 2: Matlab and Variables 
Sep 26,27Lecture 3: Matlab I: (Advanced) Variables and functions Jeff Freymueller
 Lab 3: Matlab structs and functions 
Oct 03,04Lecture 4: Fundamental Programming Principles II:
Control Structures
Ronni Grapenthin
 Lab 4: Matlab flow control 
Oct 10,11Lecture 5: Matlab I/O IRonni Grapenthin
 Lab 5: Matlab I/O I (files) 
Oct 17,18Lecture 6: Matlab I/O IIRonni Grapenthin
 Lab 6: Matlab I/O II (plotting) 
Oct 24,25Lecture 7: Unix Tools IJeff Freymueller
 Lab 7: Unix Tools  
Oct 31, Nov 01Lecture 8: Unix Tools IIJeff Freymueller
 Lab 8: Unix Tools  
Nov 07,08Lecture 9: Live Shell ScriptingRonni Grapenthin
 Lab 9: Unix Tools  
Nov 14,15Lecture 10: Debugging / HTMLRonni Grapenthin
 Lab 10: Building a website  
Nov 21,22Lecture 11: GMT IBernie Coakley
 Lab 11: GMT  
Nov 28,29Lecture 12: GMT IIBernie Coakley
 Lab 12: GMT 
Dec 5-12 Independent Study: HTMLRonni Grapenthin
 Lab 13: Setting up a website for project presentation 

Prior to each lecture you will find handouts, examples, and problem sets here. The problem sets are supposed to get you started poking around on your system and/or change the way you approach problems. The handouts will form some sort of mini-handbook that could be placed next to your computer.

Mailing List:

To discuss issues with labs, projects and general programming issues with your fellow students, we set up the mailinglist:

btm2011 <at> gi <dot> alaska <dot> edu

Please sign up at and use this list first to ask your questions.


If you do not have access to a unix-linux-mac environment, I recommend a similar setup as we'll have in the lab. We will use virtualbox as a virtualization software which allows to run, say, a linux distribution within a running Windows (no rebooting required). Once virtualbox is installed you need to put a linux distribution of your choice (maybe ubuntu) on top of this. See Ronni (ronni <at> gi <dot> alaska <dot> edu) if you need help with that.


Ronni Grapenthin
Geophysical Institute
University of Alaska Fairbanks
903 Koyukuk Drive, P.O. Box 757320
Fairbanks, Alaska 99775-7320

email: ronni <at> gi <dot> alaska <dot> edu
phone: +1 (907) 474 - 7428

ronni <at> gi <dot> alaska <dot> edu | Last modified: November 28 2011 19:42.