Introduction to GIS Programming
Introduction to GIS Programming
Fall 2026 · Department of Geography and Sustainability · University of Tennessee
This is the course website for GEOG 312. It holds the lecture notebooks, lab assignments, syllabus, and schedule for the Fall 2026 offering. Everything here is public, so you are welcome to work through it even if you are not enrolled.
Course at a Glance¶
| | | | ---------------- | ---------------------------------------------------------------------------------- | | Meetings | Tuesdays and Thursdays, 12:55 to 2:10 p.m. | | Location | Burchfiel Geography Building (BGB) 206 | | Term | August 17 to December 1, 2026 | | Credit | 3 hours, letter graded | | Instructor | Dr. Qiusheng Wu, BGB 309 | | Office hours | Wednesdays and Thursdays, 8:00 to 9:00 a.m., and by appointment | | Email | qwu18@utk.edu |
Start with the syllabus, also available as a PDF, and the weekly schedule.
What You Will Learn¶
GEOG 312 is a programming course taught through geography. No prior programming experience is assumed. The first half of the semester covers Python itself. The second half applies it to real geospatial data using the open source tools that working analysts and researchers actually use.
By the end of the semester you will be able to:
- Write, debug, and document Python programs using variables, data structures, control flow, functions, and classes.
- Read, write, and convert common geospatial formats such as Shapefile, GeoJSON, GeoParquet, GeoTIFF, Cloud Optimized GeoTIFF, and NetCDF.
- Perform vector and raster analysis, including spatial joins, reprojection, clipping, zonal statistics, and terrain analysis.
- Build interactive 2D and 3D web maps and publish them as reproducible notebooks or dashboards.
- Access and analyze cloud hosted geospatial datasets.
Course Materials¶
| Section | What is in it | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | Course Information | Syllabus, schedule, textbook, instructor | | Software Setup | Installing Python, VS Code, Git, Colab, JupyterLab, Docker | | Python Programming Fundamentals | Variables, data structures, strings, loops, functions, files, NumPy and Pandas | | Geospatial Programming with Python | GeoPandas, Rasterio, Xarray, Leafmap, WhiteboxTools, MapLibre, geemap, HyperCoast, DuckDB, GDAL, Solara, Sedona | | Labs | Ten lab assignments and how to submit them |
Textbook¶
The required textbook is Introduction to GIS Programming: A Practical Python Guide to Open Source Geospatial Toolsby Qiusheng Wu (2025). Every code example from the book is free and runs in your browser, so you can follow along from day one while you sort out where to buy a copy. See the textbook page for print, PDF, and EPUB options, and for the companion video tutorials.
Running the Code¶
Every chapter page has Open in Colab and Binder badges at the top. Click either one and you are running the notebook in a few seconds with nothing installed. That is the fastest way to start, and it is a perfectly good fallback all semester if your laptop gives you trouble.
We will also set up a local environment together in Week 1, because being able to run code on your own machine matters once your projects outgrow a browser tab. See Software Setup.
If you prefer Docker:
docker pull giswqs/pygis:book
docker run -it -p 8888:8888 -v $(pwd):/app/workspace giswqs/pygis:bookGetting Help¶
License¶
Course materials in this repository are released under CC BY 4.0. The text and figures of the printed textbook are copyrighted by the author and are not reproduced here. See the textbook page for details.
