We publish free and open earth data science textbooks and courses as open education resources. We want to help you learn the skills that you need to develop a career in earth data science. Many of our Earth Data Science courses, are developed and taught as a part of the professional Certificate and Masters program in Earth Data Analytics offered by Earth Lab at the University of Colorado - Boulder.

Check out our new Earth Data Science Textbooks

Introduction to Earth Data Science Textbook.

Introduction to Earth Data Science Textbook

Learn about using core data science tools including Python programming, Git, GitHub and Bash to support developing scientific data workflows in Open Source Python.

Start Learning

Intermediate to Earth Data Science Textbook.

Intermediate Earth Data Science Textbook

Dive into working with different types of data including GIS, remote sensing, twitter data and more. Explore different data types and structures including geotiff, HDF, CSV, & JSON.

Start Learning

Python Open Source Plotting Guide for Scientists

Python Open Source Plotting Guide for Scientists

Plotting different types of data can be tricky. Learn how to create maps, plot time series data and more in this open source Python plotting guidebook.

Start Learning

Check out our Earth Data Science Courses These are the courses that we teach in our program. They are supported by the companion textbooks listed above.

Earth Analytics Bootcamp Course

Earth Analytics Bootcamp Course

This course, aimed at beginners, provides an introduction to core scientific programming skills in Python, version control using Git and GitHub and command line using Bash.

View Course

Earth Analytics Course

Earth Analytics Course

This course focuses on data intensive approaches to science challenges. The second in a series of 3 courses that make up our professional program.

View Course

Earth Analytics R Course

Earth Analytics R Course

The original earth analytics course was taught in the R programming language.

View Course

Earth Data Science Course Modules

Want to improve your earth data science skills? Complete a set of short, self-paced technical lessons that together create full courses. Following the materials available online for each module, you will learn how to perform a specific workflow using a specific tool that is commonly used in the earth data science field.

Introduction to the netcdf 4 File Format in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 16 Oct 2020

Learn how to work with MACA v2 climate data stored in netcdf 4 format using open source Python and the xarray package. read more. Last updated: 12 Nov 2020

lessons: 6, presentations 0

Practice Your Python Plotting Skills

This teaching module is a part of the scientists-guide-to-plotting-data-in-python-textbook course. Last taught: 24 Jun 2020

This chapter provides a series of activities that allow you to practice your Python plotting skills using differen types of data. read more. Last updated: 15 Sep 2020

lessons: 3, presentations 0

Spatial Data Formats for Earth Data Science

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 19 Jun 2020

There are two primary spatial data formats that are useful for earth data science, vector and raster. Learn about these two common spatial data formats for earth data science workflows. read more. Last updated: 23 Sep 2020

lessons: 4, presentations 0

Introduction to the HDF4 File Format in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 02 Mar 2020

MODIS is remote sensing data that is stored in the HDF4 file format. Learn how to open and manipulate data stored in the HDF4 file format using open source Python. read more. Last updated: 19 Jan 2022

lessons: 2, presentations 0

MODIS, Landsat and the Normalized Burn Ratio Index (NBR) in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 02 Mar 2020

MODIS is a satellite remote sensing instrument that collects data daily across the globe at 250-500 m resolution. Learn how to import, clean up and plot MODIS data in Python read more. Last updated: 19 Nov 2021

lessons: 2, presentations 0

NAIP, Landsat, MODIS and Vegetation Indices in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 17 Feb 2020

Learn how to calculate vegetation indices from multispectral remote sensing data in Python. read more. Last updated: 28 Jan 2021

lessons: 3, presentations 0

Use Time Series Data in Python With Pandas

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 19 Nov 2019

Python provides a datetime object for storing and working with dates. Learn how to handle date fields using pandas to work with time series data in Python. read more. Last updated: 19 Jan 2022

lessons: 6, presentations 0

Introduction to Functions in Python

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 05 Nov 2019

A function is a reusable block of code that performs a specific task and can help you to eliminate repetition and improve efficiency in your code through modularity. Learn how to write functions in Python... read more. Last updated: 28 Jan 2021

lessons: 3, presentations 0

Introduction to Loops in Python

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 22 Oct 2019

Loops can help reduce repetition in code by iteratively executing the same code on a range or list of values. Learn how to write loops in Python to write Do Not Repeat Yourself, or DRY,... read more. Last updated: 28 Jan 2021

lessons: 5, presentations 0

Introduction to Conditional Statements in Python

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 22 Oct 2019

Conditional statements help you to control the flow of code by executing code only when certain conditions are met. Learn how to use conditional statements to write Do Not Repeat Yourself, or DRY, code in... read more. Last updated: 03 Sep 2020

lessons: 2, presentations 0

GitHub for Collaboration

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 02 Oct 2019

GitHub is a website that supports git version control and also collaborative project management. Learn how to use git and GitHub to collaborate on projects in support of reproducible open science. read more. Last updated: 02 Oct 2020

lessons: 6, presentations 0

Work with Scientific Data Using Pandas Dataframes

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 23 Sep 2019

Pandas dataframes are a commonly used scientific data structure in Python that store tabular data using rows and columns with headers. Learn how to import data into pandas dataframes and how to run calculations, summarize,... read more. Last updated: 15 Sep 2020

lessons: 4, presentations 0

Work with Scientific Data Using Numpy Arrays

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 23 Sep 2019

Numpy arrays are a commonly used scientific data structure in Python that store data as a grid, or a matrix. Learn how to import data into numpy arrays and how to run calculations, summarize, and... read more. Last updated: 15 Sep 2020

lessons: 4, presentations 0

Introduction to Working with Files, Directories, and Paths in Python

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 17 Sep 2019

Writing code that opens files using paths that will work on many different machines will make your project more reproducible. Learn how to construct paths in your Python code that will work on any machine... read more. Last updated: 23 Sep 2020

lessons: 3, presentations 0

Import and Install Python Packages for Earth Data Science

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 17 Sep 2019

The Python programming language provides many packages and libraries for working with scientific data. Learn how to import and install Python packages for earth data science. read more. Last updated: 28 Jan 2021

lessons: 3, presentations 0

Custom Plots in Python

This teaching module is a part of the earth-analytics-python course. Last taught: 11 Sep 2019

This tutorial covers the basics of creating custom plot legends in Python read more. Last updated: 21 Jan 2022

lessons: 2, presentations 0

Introduction to Plotting with Matplotlib

This teaching module is a part of the scientists-guide-to-plotting-data-in-python-textbook course. Last taught: 11 Sep 2019

Matplotlib is the most commonly used plotting library in Python. Learn how to get started with creating and customizing plots using matplotlib. read more. Last updated: 02 Sep 2020

lessons: 3, presentations 0

Learn to Write Clean Code and Literate Expressive Programming

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 04 Sep 2019

Clean code refers to writing code that runs efficiently, is not redundant and is easy for anyone to understand. Learn best practices for writing clean, expressive code in Python. read more. Last updated: 03 Sep 2020

lessons: 4, presentations 0

Get Started with Variables and Lists in Python

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 03 Sep 2019

Python is programming language that emphasizes the readibility of code and provides many packages and libraries for working with scientific data. Learn how to get started with writing Python code. read more. Last updated: 23 Sep 2020

lessons: 5, presentations 0

Text File Formats for Earth Data Science

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 29 Aug 2019

There are many text file formats that are useful for earth data science workflows including Markdown, text (.txt, .csv) files, and YAML (Yet Another Markup Language). Learn about these common text file formats for earth... read more. Last updated: 23 Sep 2020

lessons: 3, presentations 0

Jupyter For Python

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 19 Jul 2019

This chapter teaches you how to use Jupyter Notebook, an interactive environment where you can write and run code such as Python and add text that describes your workflow using Markdown. read more. Last updated: 03 Sep 2020

lessons: 6, presentations 0

Bash

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 15 Jul 2019

Bash or Shell is a command line tool that is used in open science to efficiently manipulate files and directories. Learn how to use Bash to access and move files and directories. read more. Last updated: 14 Sep 2020

lessons: 2, presentations 0

Open Reproducible Science Workflows and Tools

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 01 Jul 2019

Open science involves making scientific methods, data and outcomes available to everyone. Learn why open reproducible science is important. Discover tools that support open science including Shell (Bash), git and GitHub, and Jupyter. read more. Last updated: 03 Sep 2020

lessons: 3, presentations 1

Customize Plots of Spatial Vector Data in Python

This teaching module is a part of the scientists-guide-to-plotting-data-in-python-textbook course. Last taught: 29 Jan 2019

When making maps, you often want to create legends, customize colors, adjust zoom levels, or even make interactive maps. Learn how to customize maps created using vector data in Python with matplotlib, geopandas, and folium.... read more. Last updated: 21 Jul 2020

lessons: 4, presentations 0

Spatial Vector Data Processing in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 29 Jan 2019

Common spatial vector data processing tasks include reprojecting data to a different coordinate reference system (CRS), clipping data to a specified boundary, and joining data based on spatial location and attributes. Learn how to process... read more. Last updated: 11 Sep 2020

lessons: 6, presentations 0

How To Design and Automate a Workflow

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 21 Oct 2018

Designing and developing data workflows can help you complete your work more efficiently by allowing you to repeat and automate data tasks. Learn how to design and develop automated workflows using the example of calculating... read more. Last updated: 11 Sep 2020

lessons: 3, presentations 0

An Overview of the Impacts and Study of Wildfire

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 04 Oct 2018

The Cold Springs wildfire burned 528 acres near Nederland, Colorado, in July 2016. Learn about how scientists study the impacts of wildfire using field surveys and remote sensing. read more. Last updated: 11 Sep 2020

lessons: 3, presentations 0

Git/GitHub For Version Control

This teaching module is a part of the intro-to-earth-data-science-textbook course. Last taught: 06 Sep 2018

A version control system allows you to track and manage changes to your files. Learn how to get started with version control using git and GitHub.com. read more. Last updated: 30 Mar 2021

lessons: 6, presentations 0

Git/GitHub For Collaboration

This teaching module is a part of the earth-analytics-bootcamp course. Last taught: 13 Aug 2018

This tutorial teaches you how to undo changes using Git and helps you practice collaborating with others on GitHub.com. read more. Last updated: 08 Dec 2020

lessons: 2, presentations 0

Customize Plots of Raster Data

This teaching module is a part of the scientists-guide-to-plotting-data-in-python-textbook course. Last taught: 05 Feb 2018

When plotting rasters, you often want to overlay two rasters, add a legend, or make the raster interactive. Learn how overlay rasters to create visualizations and how to make interactive plots. read more. Last updated: 21 Jul 2020

lessons: 5, presentations 0

Intro to Lidar Data

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

This tutorial covers the basic principles of LiDAR remote sensing and the three commonly used data products: the digital elevation model, digital surface model and the canopy height model. Finally it walks through opening lidar... read more. Last updated: 11 Sep 2020

lessons: 4, presentations 0

An Overview of the 2013 Floods in Colorado, USA

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

In this module you will learn about the causes and effects of floods as seen during the 2013 Colorado floods. You will learn how streamflow, precipitation, drought, and remote sensing data are used to better... read more. Last updated: 11 Sep 2020

lessons: 5, presentations 0

Introduction to using Twitter Social media data in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

Social media data can be used to address many social and environmental issues and challenges. Learn how to use Twitter social media data combined with basic natural language processing techniques to better understand the social... read more. Last updated: 11 Sep 2020

lessons: 6, presentations 0

Introduction to programmatic data access in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

In this module, you learn various ways to access, download and work with data programmatically. These methods include downloading text files directly from a website onto your computer and into Python, reading in data stored... read more. Last updated: 01 Apr 2021

lessons: 4, presentations 0

Raster Data Processing in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

Common raster data processing tasks include cropping and reprojecting raster data, using raster math to derive new rasters, and reclassifying rasters using a set of values. Learn how to process raster data using open source... read more. Last updated: 05 Nov 2020

lessons: 5, presentations 0

Fundamentals of Raster Data in Python

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

The GeoTIFF file format is often used to store raster data. Learn how to to open and explore raster data stored as GeoTIFF files in Python. read more. Last updated: 05 Nov 2020

lessons: 7, presentations 0

Use Vector Spatial data in Open Source Python - GeoPandas

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 05 Feb 2018

Vector data are composed of discrete geometric locations (x, y values) known as vertices that define the shape of the spatial object. Learn how to work with spatial data in vector format in Python, including... read more. Last updated: 11 Sep 2020

lessons: 4, presentations 0

Understand Disturbance with Data - Flooding and Erosion

This teaching module is a part of the earth-analytics-python course. Last taught: 05 Feb 2018

This module uses time series data to explore the impacts of a flood. Learn how to use Google Earth imagery, NOAA precipitation data and USGS stream flow data to explore the 2013 Colorado floods. read more. Last updated: 27 Jan 2022

lessons: 3, presentations 0

Introduction to using Twitter Social media data in R

This teaching module is a part of the earth-analytics course. Last taught: 19 Apr 2017

This module explores the use of social media data - specifically Twitter data to better understand the social impacts and perceptions of natural disturbances and other events. Working with social media requires the use of... read more. Last updated: 30 Mar 2020

lessons: 6, presentations 0

Introduction to programmatic data access in R

This teaching module is a part of the earth-analytics course. Last taught: 05 Apr 2017

In this module, you learn various ways to access, download and work with data programmatically. These methods include downloading text files directly from a website onto your computer and into R, reading in data stored... read more. Last updated: 30 Mar 2020

lessons: 8, presentations 0

Don't Repeat Yourself: Remove Repetition in Your Code Using Functions in R.

This teaching module is a part of the earth-analytics course. Last taught: 08 Mar 2017

This module will overview the basic principles of DRY - don't repeat yourself. It will then walk you through incorporating functions into your scientific programming to increase efficiency, clarity, and readability. read more. Last updated: 30 Mar 2020

lessons: 8, presentations 0

Clouds, shadows & cloud masks in R

This teaching module is a part of the earth-analytics course. Last taught: 01 Mar 2017

In this module you will learn more about dealing with clouds, shadows and other elements that can interfere with scientific analysis of remote sensing data. read more. Last updated: 30 Mar 2020

lessons: 6, presentations 0

Refine Plots & Add Variables to Rmarkdown Reports

This teaching module is a part of the earth-analytics course. Last taught: 01 Mar 2017

This tutorial set covers some basic things you can do to refine your plots in Rmarkdown document. It covers plotting in grids, adding titles to plotRGB() plots and refining the width and height of plots... read more. Last updated: 30 Mar 2020

lessons: 5, presentations 0

R Source Functions - Efficient Programming

This teaching module is a part of the earth-analytics course. Last taught: 22 Feb 2017

Learn how to source a function in R by saving the function in another R script. read more. Last updated: 30 Mar 2020

lessons: 1, presentations 0

Multispectral imagery in R - Fire & Remote Sensing Data

This teaching module is a part of the earth-analytics course. Last taught: 22 Feb 2017

In this module, you will learn how to use multispectral imagery, a type of remote sensing data, to better understand changes in the landscape and how to calculate NDVI using various multispectral datasets You will... read more. Last updated: 30 Mar 2020

lessons: 6, presentations 0

Uncertainty and Metadata

This teaching module is a part of the earth-analytics course. Last taught: 15 Feb 2017

In this module, you will learn the concept of uncertainty as it relates to both remote sensing and other data. You will also explore some metadata to learn how to understand more about your data.... read more. Last updated: 03 Sep 2019

lessons: 3, presentations 0

Spatial Data in R and Remote Sensing Uncertainty

This teaching module is a part of the earth-analytics course. Last taught: 15 Feb 2017

This tutorial covers the basic principles of LiDAR remote sensing and the three commonly used data products: the digital elevation model, digital surface model and the canopy height model. Finally it walks through opening lidar... read more. Last updated: 30 Mar 2020

lessons: 6, presentations 0

Lidar Raster Data R

This teaching module is a part of the earth-analytics course. Last taught: 01 Feb 2017

This module introduces the raster spatial data format as it relates to working with lidar data in R. You will learn how to open, crop and classify raster data in R. Also you will learn... read more. Last updated: 13 Mar 2020

lessons: 6, presentations 0

Intro to Lidar Data

This teaching module is a part of the earth-analytics course. Last taught: 01 Feb 2017

Lidar is an active remote sensing technique that measures vegetation height. Learn more about discrete and full waveform LIDAR and how to use LIDAR data. read more. Last updated: 30 Mar 2020

lessons: 3, presentations 0

Basemaps in R

This teaching module is a part of the earth-analytics course. Last taught: 01 Feb 2017

This module covers using ggmap to create basemaps in r / rmarkdown and how to overlay raster data on top of a hillshade. read more. Last updated: 30 Mar 2020

lessons: 2, presentations 0

Work with Sensor Network Derived Time Series Data in R

This teaching module is a part of the earth-analytics course. Last taught: 25 Jan 2017

This module covers how to work with, plot and subset data with date fields in R. It also covers how to plot data using ggplot. read more. Last updated: 30 Mar 2020

lessons: 6, presentations 0

Get to Know R

This teaching module is a part of the earth-analytics course. Last taught: 25 Jan 2017

This module introduces the R scientific programming language. You will work with precipitation and stream discharge data for Boulder County to better understand the R syntax, various data types and data import and plotting. read more. Last updated: 30 Mar 2020

lessons: 6, presentations 0

Clean Code & Getting Help

This teaching module is a part of the earth-analytics course. Last taught: 25 Jan 2017

This module covers how to write easier to read, clean code. Further is covers some basic approaches to getting help when working in R. Finally it reviews how to install QGIS - a free and... read more. Last updated: 30 Mar 2020

lessons: 2, presentations 0

Lidar Compared to Human Measurements: Uncertainty and Remote Sensing Data

This teaching module is a part of the intermediate-earth-data-science-textbook course. Last taught: 06 Dec 2016

Uncertainty quantifies the range of values within which the value of the measurement falls - within a specified level of confidence. Learn about the concept of uncertainty as it relates to both remote sensing and... read more. Last updated: 02 Feb 2021

lessons: 4, presentations 0

Understand Disturbance with Data - Flooding and Erosion

This teaching module is a part of the earth-analytics course. Last taught: 06 Dec 2016

This module uses time series data to explore the impacts of a flood. Learn how to use Google Earth imagery, NOAA precipitation data and USGS stream flow data to explore the 2013 Colorado floods. read more. Last updated: 30 Mar 2020

lessons: 3, presentations 3

Link data, processing and results using R Markdown and knitr

This teaching module is a part of the earth-analytics course. Last taught: 06 Dec 2016

This module reviews how to use R Markdown and knitr to create and publish dynamic reports that both link analysis, results and documentation and can be easily updated as data and methods are modified /... read more. Last updated: 30 Mar 2020

lessons: 8, presentations 1

Set up R, RStudio and your working directory

This teaching module is a part of the earth-analytics course. Last taught: 04 Dec 2016

This module walks you through getting R and RStudio set up on your laptop. It also introduces file organization strategies. read more. Last updated: 30 Mar 2020

lessons: 5, presentations 0