# PPDE642: a graduate urban analytics course that runs entirely in the cloud

> PPDE642 is the second half of a two-course urban data science series from the University of Southern California, taught with Python and Jupyter notebooks that students run in the cloud. It covers spatial analysis, network analysis, spatial models, and applied machine learning on urban data, and it presumes the first course has already been completed.

**gboeing/ppde642** — USC urban data science course series in Python

- Repository: https://github.com/gboeing/ppde642
- Website: https://geoffboeing.com
- Stars: 1,323 · Forks: 484
- Language: Jupyter Notebook
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/gboeing-ppde642

## The second course assumes you finished the first

PPDE642 is the second part of a two-course series on urban data science taught at the University of Southern California's Department of Urban Planning and Spatial Analysis. The prerequisite is stated without hedging: PPDE642 assumes you have completed PPD534 or its equivalent.

That framing does more work than a prerequisite line usually does, because the two courses are deliberately different in level. The first course, PPD534, starts with the basics of coding with Python, then moves to data loading and analysis, then to descriptive statistics, then to inference and the scientific method, and finishes with a critical assessment of smart cities and urban informatics. The series as a whole presumes no prior knowledge, since it introduces coding, stats, spatial analysis, and applied machine learning from the ground up.

The second course then builds on those topics rather than repeating them. It introduces spatial analysis, network analysis, spatial models, and applied machine learning, and it also digs deeper into the tools and workflows of urban data science in both research and practice.

Two things follow from that structure. The first is that this repository is not a self-contained curriculum. A reader who starts with PPDE642 will meet material that assumes statistical literacy and Python fluency, and the first course is where those are installed. The second is that the pairing tells you the level of rigour: a two-course sequence covering the scientific method before spatial models is a sequence designed for people who will be doing research, not a tutorial.

Both courses are open. PPD534's lecture materials are on GitHub and interactively on Binder, and PPDE642's lecture materials are in this repository and interactively on Binder as well, so the two halves are available as a sequence to anyone who finds them.

## The notebooks are the course, and the cloud is the classroom

The primary language of the repository is recorded as Jupyter Notebook, and that single fact tells you the delivery mechanism. A notebook is a document that holds both prose and executable code, which is exactly the format a lecture on data analysis needs: the explanation, the data loading, the statistics, and the plot all sit in one document the student reads top to bottom.

The execution environment is the other half. The course uses Python and Jupyter notebooks to introduce coding and statistical methods that students can reproduce and experiment with in the cloud, and the Binder link in the project header points at a lab instance built from the repository's main branch. Binder takes a repository, builds an environment from it, and serves a JupyterLab session pointing at the notebooks, so the student does not install Python, does not resolve a dependency tree, and cannot accidentally break the environment that the course was written against.

That reproducibility is the point, and it is a teaching decision as much as a technical one. A student who cannot install the environment cannot get to the lesson, and a student who installs a slightly different environment gets different numbers in the exercises and loses confidence in the lesson. Cloud execution removes that whole category of failure.

It also has a cost, and the repository structure shows how the course handles it. There is a `software/` directory at the root, which is where the supporting code for the course lives, and a `modules/` directory, which holds the module material in the sequence it is taught. The `assignments/` directory holds the student work, and the `syllabus/` directory holds the course structure. An `environment.yml` at the root is the conda environment definition, and the presence of a `.pre-commit-config.yaml` and a `LICENSE.txt` shows the repository is maintained with the same tooling discipline as a software project rather than as a folder of documents.

## What the topics reveal about the course's intellectual commitments

The subject list is what makes the course distinctive, and it is worth reading as a statement about how urban data work should be done.

The project topics include urban-analytics, urban-informatics, urban-planning, urbanism, transport, transportation, spatial-analysis, network-analysis, statistics, data-science, and cities. The pairing of urban-planning with urban-informatics, rather than one replacing the other, is the point. The first course ends with a critical assessment of smart cities and urban informatics, which means the critical reading comes before the technical tooling, not after it.

That ordering shows up in the mission statement the project puts in front of non-enrolled readers. The invitation is for people who want to use data science and spatial analysis to improve urban transportation around the world, to critically interrogate how big data reshapes housing affordability, or to use technology for better city planning. Three framings, and the middle one is the sceptical one.

The two skill directions are also symmetric and deliberately so. For an activist or urbanist with no tech experience, the course teaches data and tech skills to apply existing knowledge to serve the community. For a coder or scientist interested in urbanism and planning, it teaches how to apply those skills toward more equitable cities. That is a course designed on the assumption that technical skill and subject knowledge are separable and both necessary, which is a rarer position than it sounds.

The topics also include city-government, which points at the institutional dimension. A course for urban analysts that includes how city government works is teaching the thing the data is about, not just the machinery.

And the `software/` directory deserves a mention for what it implies. Shared course software in a repository like this usually means the same analysis code is reused across modules, so a student who learns the helper functions once uses them for the rest of the term.

## The course is designed for people who are not in the room

The section addressed to readers who found the course on GitHub is short and unusually candid about who the course is really for.

The heading addresses readers who are not USC students, and the answer is an invitation to apply to the urban planning master's or PhD programs at USC, with a link to the instructor's lab page. Then it states the recruitment aim directly: the program seeks students from all backgrounds, and it pairs two profiles that are usually treated as opposites. An activist or urbanist with no tech experience will be taught data and tech skills to apply their existing knowledge. A coder or scientist interested in urbanism and planning will be taught how to apply those skills toward more equitable cities.

What makes this interesting for a reader outside the programme is that it describes the pedagogy. The course is not positioned as training technical people in a subject, or as training subject people in a tool. It is positioned as closing a gap in both directions, which is a claim about how much of the difficulty in urban data work is technical and how much is about knowing what questions the data can answer.

The two-course structure, the critical framing of smart cities at the end of the first half, and the focus on housing affordability and transportation as the substantive examples all point the same way. The subject is not data science in the abstract applied to cities. It is urban problems, with the data work in service of them.

For an outside reader, the practical consequence is that the notebooks are usable as a curriculum rather than only as a record of one term. The materials are published, the environment is defined, the cloud path removes the setup barrier, and the sequence is documented in the syllabus directory.

## Where this repository will not take you

There are clear limits, and they come from the nature of the artefact rather than from gaps in the course.

First, this is a course, not a library. The `modules/` directory holds material in teaching order, and the `assignments/` directory holds exercises designed to be graded against a rubric and a deadline. A learner working through it independently gets the content and the exercises, but not the feedback loop, and for a subject like spatial models that is a real loss.

Second, the entry point is wrong for a complete beginner. The series presumes no prior knowledge at the PPD534 level and PPDE642 presumes that course. Someone who has never written Python and wants to analyse city data should start with the first course, and the honest reading of the two-repository structure is that they are two halves, not one.

Third, the cloud workflow has an offline failure mode. The whole design assumes an environment that can be built and a machine that can fetch data. If your network cannot reach the data sources, the notebooks will fail on the load step rather than on the analysis, and the failure will look like a code error when it is an environment one. Building the `environment.yml` locally is the alternative, and it is a heavier path than clicking the Binder link.

Fourth, the specificity of the examples is both a strength and a constraint. Course material on transportation and housing affordability carries the assumptions of the instructor's discipline and the region the data comes from. A learner in a different city will find the methods transferable and the specific analyses less so, and the data will need to be replaced.

Fifth, and worth being plain about, the course content is licensed MIT but it is a course rather than a maintained software product. There are no GitHub releases, the last push was on 2026-07-21, and the repository is a snapshot of a term's teaching rather than a library that gets patched.

## Conclusion

PPDE642 fits a self-learner who already writes Python and wants a rigorous, reproducible introduction to spatial and network analysis applied to cities, and it fits an instructor who wants a course structure they can read before building their own. It is the wrong starting point for someone who has never programmed, because the first half of the series exists for that. Check three things before working through it: that you have the equivalent of the first course, PPD534, since the course explicitly presumes it, that the environment file at the root matches your local setup or that you intend to use the Binder link instead, and that the notebooks assume a cloud workflow where the data is fetched rather than bundled, so an offline environment will not behave the way the course expects.

## FAQ

### What is PPDE642 and who teaches it?

PPDE642 is Advanced Urban Analytics, the second part of a two-course urban data science series taught at the University of Southern California's Department of Urban Planning and Spatial Analysis. It takes a computational social science approach to working with urban data, using Python and Jupyter notebooks.

### What does PPDE642 cover and what do I need first?

It introduces spatial analysis, network analysis, spatial models, and applied machine learning, and digs deeper into the tools and workflows of urban data science in research and practice. It assumes you have completed the first course, PPD534, or its equivalent, which covers Python basics, data loading and analysis, descriptive statistics, inference and the scientific method, and a critical assessment of smart cities.

### How do I run the PPDE642 notebooks without installing Python?

The course materials are available interactively on Binder, with the link in the project header pointing at a lab instance built from the repository's main branch. The repository also ships an `environment.yml` at the root and a `software/` directory with the supporting code, so a local conda environment is the alternative route.

### Can someone outside USC use this course material?

Yes. The lecture materials for both PPDE642 and the first course PPD534 are published on GitHub and interactively on Binder, and the project explicitly invites non-USC readers to consider applying to the urban planning master's or PhD programs. The materials are MIT licensed.

## Sources

- [gboeing/ppde642 on GitHub](https://github.com/gboeing/ppde642)
- [Issues](https://github.com/gboeing/ppde642/issues)
- [License: MIT](https://github.com/gboeing/ppde642/blob/main/LICENSE)
- [Project website](https://geoffboeing.com)
- [README](https://github.com/gboeing/ppde642/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/gboeing-ppde642
