New Mexico Tech
Earth and Environmental Science

ERTH 401 / GEOP 501 - Computational Methods & Tools

ERTH 401 / GEOP 501 - Computational Methods & Tools for Geoscientists

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


Modern computational tools to organize, manipulate, analyze and plot data of various origins. The course begins with some background on how to break large tasks into manageable sub-problems, moves into standard features of modern programming languages, and familiarizes students with both Linux command line tools and a higher order programming language. Tools for map making and image manipulation are included as well as the generation of a basic website. ERTH401 and GEOP501 share lectures and labs. Graduate students are expected to work on a semester-long project with a final poster presentation.

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 Python 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:


Office Hours:

Susan BilekMSEC 358T 11-noon
Ronni GrapenthinMSEC 356TR 2-3PM
Zach ZensMSEC 196F 12-1PM


ERTH 401: 100% Lab exercises
GEOP 501: 80% Lab exercises + 20% Final Project.

Lab Exercises:

Each week we will introduce the tools needed for the exercises. During the afternoon lab period, we will work in the MSEC 345 computer lab to provide examples of the tools and simple use cases. The exercises will build on these tools, allowing you to use the tools to solve more complex problems. The majority of your course grade will be based on completion of these exercises.

Final Project:

The final component of the GEOP 501 course will be a poster presentation that shows an application of the tools developed in this class related to your thesis research. The last day of class will be devoted to a poster session where each student will present their poster to other members of the class. Feel free to use this poster session as a practice run for poster presentation for upcoming meetings if appropriate.

(tentative) Schedule:

The class meets: Mon (lecture) 11-11:50am in Bureau 111A and (lab) 14-16:55 PM in MSEC 345 (computer lab)

Aug 21Intro & Thinking like a ProgrammerLab 1 - setup.RG
Aug 28Variables, Data Types & LogicLab 2 - Python Examples RG
Sep 04 Labor Day
Sep 11Control StructuresLab 3 - Python Lists & Flow ControlZZ
Sep 18Functions (code)Lab 4 - Python dict, FunctionsRG
Sep 25Live PythonLab 5 - matplotlib with a sprinkle of numpyRG
Oct 02Advanced Data StructuresLab 6 - numpy, pandasSB
Oct 09Data I/OLab 7 - file i/o examples and overall reviewSB
Oct 16Unix tools ILab 8 - shellSB
Oct 23Live ShellLab 9 - shell scriptingRG
Oct 30Unix tools IILab 10 - awk, grep, sedSB
Nov 06Presentation / Figure manipulation ToolsLab 11 - illustratorSB
Nov 13The Internet & WebsitesLab 12 - make a websiteRG
Nov 20GMT ILab 13 - simple mapSB
Nov 27GMT IILab 14 - fancy mapSB
Dec 04Poster SessionPoster Session
Dec 11Finals Week / AGU

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.

Discussion Board:

To discuss issues with labs, projects and general programming issues with your fellow students, please use the canvas discussion board.


If you do not have access to a unix-linux-mac environment, I recommend 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 (rg <at> nmt <dot> edu) if you need help with that.

rg <at> nmt <dot> edu | Last modified: November 27 2017 18:18.