Schedule of workshops for a graduate course in application development focusing on GIS and geospatial applications.
This course makes use of The Well-Grounded Python Developer by Doug Farrell (Manning Press).
The easiest way to get all packages necessary for these workshops is to download the conda environment file gus8066-environment.yml and run the following command in the Anaconda Prompt:
conda env create -f gus8066-environment.ymlI recommend setting the package channel to conda-forge for all repos, including future repos, with:
conda config --add channels conda-forge
conda config --set channel_priority strict
We will be using Visual Studio Code in this class. If you prefer working with Jupyter notebooks you can install it after creating the environment with conda install jupyterlab notebook.
- Week 1 - Introduction & Version Control
- Readings
- 📕 WGPD Ch 1 - Becoming a Pythonista
- 📕 Agile vs. waterfall project management
- 📕 Agile workflows
- 🛠️ Workshop: Introduction to Git and GitHub
- 🚀 Introduce project topics, discuss student interests
- Readings
- Week 2 - Project Management & Programming Building Blocks
- Readings
- 📕 WGPD Ch 2 - That's a good name
- 📕 WGPD Ch 3 - The API: Let's talk
- 📕 Stories, epics, and initiatives
- 📕 Agile epics: definition, examples, and templates
- 📕 User stories with examples and a template
- 📕 Story points and estimation
- 🛠️ Workshop: Functions and Modules
- 🚀 Finalize project teams
- Readings
- Week 3 - Programming with LLMs
- 🛠️ Workshop: Claude Code
- 🚀 Sprint 0 opens - Create epics and user stories
- Week 4 - Classes and Object-Oriented Programming
- Readings
- 📕 WGPD Ch 4 - The object of conversation
- 🛠️ Workshop: Creating Classes in Python
- 🚀 Sprint 0 - User story review and feedback
- Readings
- Week 5 - Testing
- Readings
- 📕 WGPD Section 12.1 - "Testing" (very short)
- 📕 Effective Python Testing With pytest - focus on "What Makes pytest So Useful?" and "Paremetrization: Combining Tests"
- 🛠️ Workshop: Unit testing with pytest
- 🚀 Sprint 0 - Finalize user stories
- 🚀 Sprint 1 opens
- Readings
- Week 6 - Time Complexity
- 🛠️ Workshop: Timing and CPU Profiling
- 🚀 Sprint 1 code review
- Week 7 - Database Access
- Readings
- 📕 WGPD Ch 10 - Persistence is good: Databases
- 🛠️ Workshop: Introduction to SQLAlchemy
- 🚀 Sprint 1 PRs due
- 🚀 Sprint 2 opens
- Readings
- Week 8 - GUI Design
- 🛠️ Workshop: PyQt5 and Qt Designer
- 🚀 Sprint 2 code review
- Week 9 - Web Applications and Dashboards
- Readings
- 📕 WGPD Ch 6 - Sharing with the internet
- 📕 WGPD Ch 7 - Doing it with style
- 🛠️ Workshop: Flask
- 🚀 Sprint 2 PRs due
- 🚀 Sprint 3 opens
- Readings
- Week 10 - Documentation
- Readings
- 📕 "Authoring and maintaining documentation", Hillard Ch 8, provided by professor
- 🛠️ Workshop: Using Sphinx for Python Documentation
- 🚀 Sprint 3 code review
- Readings
- Week 11 - Distributing Software
- 🛠️ Workshop: Packaging in Python
- 🛠️ Workshop: Freezing an Application with PyInstaller
- 🚀 Sprint 3 PRs due
- 🚀 Sprint 4 opens
- Week 12 - Term Project
- 🚀 Sprint 4 code review
- Week 13 - Term Project
- 🚀 Sprint 4 PRs due
- 🚀 Project packaging and documentation begins
- Week 14 - Term Project
- 🚀 Product demos
- 🚀 Documentation review and feedback (time permitting)
- Finals Period
- 🚀 Documentation due