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.yml
I recommend setting the package channel to conda-forge as follows:
conda activate gus8066
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, begin creating epics and user stories
- Readings
- Week 3 - Classes and Object-Oriented Programming
- Readings
- 📕 WGPD Ch 4 - The object of conversation
- 🛠️ Workshop: Creating Classes in Python
- 🚀 Sprint 0 - Create epics and user stories
- Readings
- Week 4 - Time Complexity
- Readings
- 📕 ???
- 🛠️ Workshop: Timing and CPU Profiling
- 🚀 Sprint 0 (cont.) - Finish epics and user stories, populate epic backlog
- Readings
- Week 5 - Database Access
- Readings
- 📕 WGPD Ch 10 - Persistence is good: Databases
- 🛠️ Workshop: SQLAlchemy and Other Python Packages for Database Access
- 🚀 Sprint 1
- Readings
- Week 6 - Testing
- Readings
- 📕 ???
- 🛠️ Workshop: Python unittest
- 🚀 Sprint 1 (cont.)
- Readings
- Week 7 - GUI Design
- 🛠️ Workshop: PyQt and Qt Designer
- 🚀 Sprint 2
- Week 8 - Web Applications and Dashboards
- Readings
- 📕 WGPD Ch 6 - Sharing with the internet
- 📕 WGPD Ch 8 - Do I know you? Authentication (tentative)
- 🛠️ Workshop: Flask
- 🚀 Sprint 2 (cont.)
- Readings
- Week 9 - Documentation
- Readings
- 📕 Hillard 8?
- 🛠️ Workshop: Using Sphinx for Python Documentation
- 🚀 Sprint 3
- Readings
- Week 10 - Distributing Software
- 🛠️ Workshop: Packaging in Python
- 🛠️ Workshop: Freezing an Application with PyInstaller
- 🚀 Sprint 3 (cont.)
- Weeks 11-12 - Term Project
- 🚀 Sprint 4
- Weeks 13-14 - Term Project
- 🚀 Freezing/Packaging & Documentation