Introduction to GIS ProgrammingSkip to article frontmatterSkip to article content<br>Site not loading correctly? This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.
DownloadsDownload
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<br>assignments, syllabus, and schedule for the Fall 2026 offering. Everything here<br>is public, so you are welcome to work through it even if you are not enrolled.<br>Course at a Glance¶<br>Meetings Tuesdays and Thursdays, 12:55 to 2:10 p.m.Location Burchfiel Geography Building (BGB) 206Term August 17 to December 1, 2026Credit 3 hours, letter gradedInstructor Dr. Qiusheng Wu, BGB 309Office hours Wednesdays and Thursdays, 8:00 to 9:00 a.m., and by appointmentEmail qwu18@utk.edu<br>Start with the syllabus, also available as a<br>PDF,<br>and the weekly schedule.<br>What You Will Learn¶<br>GEOG 312 is a programming course taught through geography. No prior programming<br>experience is assumed. The first half of the semester covers Python itself. The<br>second half applies it to real geospatial data using the open source tools that<br>working analysts and researchers actually use.<br>By the end of the semester you will be able to:<br>Write, debug, and document Python programs using variables, data structures,<br>control flow, functions, and classes.
Read, write, and convert common geospatial formats such as Shapefile, GeoJSON,<br>GeoParquet, GeoTIFF, Cloud Optimized GeoTIFF, and NetCDF.
Perform vector and raster analysis, including spatial joins, reprojection,<br>clipping, zonal statistics, and terrain analysis.
Build interactive 2D and 3D web maps and publish them as reproducible<br>notebooks or dashboards.
Access and analyze cloud hosted geospatial datasets.
Course Materials¶<br>SectionWhat is in itCourse InformationSyllabus, schedule, textbook, instructorSoftware SetupInstalling Python, VS Code, Git, Colab, JupyterLab, DockerPython Programming FundamentalsVariables, data structures, strings, loops, functions, files, NumPy and PandasGeospatial Programming with PythonGeoPandas, Rasterio, Xarray, Leafmap, WhiteboxTools, MapLibre, geemap, HyperCoast, DuckDB, GDAL, Solara, SedonaLabsTen lab assignments and how to submit them<br>Textbook¶<br>The required textbook is<br>Introduction to GIS Programming: A Practical Python Guide to Open Source Geospatial Tools<br>by Qiusheng Wu (2025). Every code example from the book is free and runs in your<br>browser, so you can follow along from day one while you sort out where to buy a<br>copy. See the textbook page for print, PDF, and EPUB<br>options, and for the companion video tutorials.<br>Running the Code¶<br>Every chapter page has Open in Colab and Binder badges at the top. Click<br>either one and you are running the notebook in a few seconds with nothing<br>installed. That is the fastest way to start, and it is a perfectly good fallback<br>all semester if your laptop gives you trouble.<br>We will also set up a local environment together in Week 1, because being able<br>to run code on your own machine matters once your projects outgrow a browser<br>tab. See Software Setup.<br>If you prefer Docker:<br>docker pull giswqs/pygis:book<br>docker run -it -p 8888:8888 -v $(pwd):/app/workspace giswqs/pygis:book
Getting Help¶<br>Technical questions belong on the<br>GitHub Discussion board.<br>Installation problems, error messages, and “why does my code do this” are all<br>fair game, and posting there means everyone benefits from the answer. Up to 30<br>extra credit points are reserved for students who help answer classmates’<br>questions.
Private matters such as grades, accommodations, or family circumstances go<br>to qwu18@utk.edu with “GEOG-312” in the subject line.
Announcements, submissions, and grades live on<br>Canvas.
Office hours are Wednesdays and Thursdays, 8:00 to 9:00 a.m. in BGB 309.<br>You do not need a reason to come, though bringing broken code is a perfectly<br>good one.
License¶<br>Course materials in this repository are released under<br>CC BY 4.0. The text and figures<br>of the printed textbook are copyrighted by the author and are not reproduced<br>here. See the textbook page for details.
Course Information<br>Syllabus