Urban Networks and Human Mobility

Course Code: 
DNDS 6003
Course Description: 

Proven proficiency with Python – read the “To satisfy the prerequisites” section at the bottom

Course Description

The challenges of urbanization are complex, difficult to handle, ranging from socio-spatial inequalities to serious environmental and sustainability issues. Together with the increasing volume and nature of big data sets in cities, these challenges call for a better understanding and modeling of the structure and dynamics of cities using state-of-the-art mathematical and data mining tools and network approaches. In this course, we will discuss the current understanding of networks and human movements in cities and learn about computational approaches to characterize them. Large data sets will be computationally investigated, in particular, infrastructure networks and patterns of movements, and the limits of the used tools and algorithms will be discussed. Besides the mathematical theory, the course will have a practical approach with hands-on classes, data visualization, and with the development of a project. During the class, all examples and sample codes will be provided in Python and Jupyter notebooks.

Course schedule

This course will take place twice a week during the first half of the fall term. Starting date: September 18, 2018.

Course Level

Master and PhD

Course Organization

Lectures: 12 classes of 100 min. Around two thirds of the classes will be theory only. The rest will include programming exercises or evaluation of data sets. Therefore, use of a computer will be required during some lectures. During class students can form groups and use their own laptops. Instructions on the required software will be provided during the first class.

Tentative classes
  1. A science of cities: classical and modern approaches to understanding urban systems
  2. Urban scaling laws and agglomeration economies
  3. Spatial networks and transportation networks; multiplex networks and multimodality
  4. Random walks on networks; routing algorithms and network flows; Braess’ paradox
  5. Mobility tools, measurements, and spatial interaction models: gravity, radiation
  6. Using python to analyze spatial/geo/mobility data
  7. Using the library OSMnx to scrape and analyze street and mobility networks
  8. Introduction to the QGIS geographic information system application
  9. Community detection and null models for human interaction and spatial networks
  10. Human mobility and urban mixing, epidemiology, polycentricity
  11. Shareability networks and maximum matching
  12. Project presentations
Textbooks and reading

Marc Barthelemy. The structure and dynamics of cities. Cambridge University Press 2016.

A list of papers and online resources will be provided during classes


In short: don't do it. You may work with others to help guide problem solving or consult stack overflow (or similar) to work out a solution, but copying—from friends, previous students, or the Internet—is strictly prohibited. NEVER copy blindly blocks of code – we can tell immediately. If caught cheating, you will fail this course. Ask questions in recitation and at office hours. If you are stuck with a programming task and cannot get help, write code as far as you can and explain in the code comments where and why you are stuck.

Further information

Further information, such as the course website, assessment deadlines, office hours, contact details etc. will be given during the course. The instructor reserves the right to modify this syllabus as deemed necessary any time during the term. Any modifications to the syllabus will be discussed with students during a class period. Students are responsible for information given in class.

Learning Outcomes: 

By successfully completing the course, students will be able to:

  • Learn how to perform data analysis in the investigation of urban transportation networks.
  • Scrape and analyze urban data with state of the art Python packages.
  • Learn how to make use of large sets of data for investigating networks observed in the field of human geography.
  • Have an overview about the emerging quantitative field of the science of cities.

What you will NOT learn in this course:

Fundamentals of coding and data visualization. This course has the prerequisite that you already have a basic proficiency with Python and will be able to develop and apply your skills towards data analysis and statistical visualization. For learning the basics to code (for-loops, lists, functions, reading and writing data from/to files, etc.), consider attending MATH 5016: Scientific Python or Data Management with Python. For learning to visualize data, consider attending DNDS 6002: Data and Network Visualization.


(1) Assessment type 1 (30% of the final grade). Attendance in at least 80% of classes, active cooperation: Students will get class assignments consisting of simple problems or urban data processing, which they will have to complete in groups.

(2) Assessment type 2 (70% of the final grade). In the final project work, students will have to perform a research project involving the investigation of a large urban network or mobility data set individually. The investigation and characterization of the data might include one or more of the following aspects: (i) scraping and analyzing infrastructure networks, (ii) analyzing mobility data, (iii) measuring and visualizing network metrics. Students will have to prepare a project presentation and a written notebook report.

Requirements for audit:

Attendance in at least 80% of classes, active cooperation, and completing the class assignments.

To satisfy the prerequisites:

Part of this course will apply scientific programming with Python for research. Since we need to pick one programming language for the course, we require students to prove proficiency with Python before the course starts, in one of the following ways:

a) Take in parallel or having taken for grade or audit the course MATH 5016: Scientific Python.

b) Take a MOOC course on programming with Python and show the certificate.

c) Show and discuss a project you developed in Python. Projects from someone else (web, friend, previous students) are not considered. The instructor holds no responsibility in case you do not satisfy the prerequisite and need to drop the course.