Course Syllabus

CP255 Urban Informatics and Visualization

Instructor: Paul Waddell (waddell at
GSI: Geoff Boeing (gboeing at
Scheduling: Fall, 2014.  Tuesdays and Thursdays, 11:00-12:30
Location: Wurster 214 Computer Lab
   Office Hours: T Th, 10-11 in the DCRP office
   Office Hours: T Th, 10-11 in 214 lab


This is a hands-on course that trains students to analyze urban data, develop indicators, and create visualizations and maps using the Python programming language, open source tools, and public data.  The course will first introduce the fundamentals of programming in Python before moving on to a survey of data analysis/visualization tools and technologies.  Classroom sessions will include lectures and workshops.  A series of assignments will reinforce the skills and topics being presented.

This course is designed to provide future city planners with a toolkit of technical skills for quantitative problem solving.  It requires some tolerance for experimentation, self-directed trial and error, and an interest in learning to write code.  If you are willing to roll up your sleeves and embrace some uncertainty, you will learn the fundamentals of urban spatial analysis and visualization, and might discover an entirely new lens through which to study, plan, and design neighborhoods, cities, and regions.

Topics to be covered include:

•    Fundamentals of programming with Python and IPython notebooks
•    Cleaning, manipulating, and analyzing urban data with Python’s pandas library
•    Visualizing data in Python with charts, graphs, and tables
•    Accessing public data from the web and APIs (including Twitter, Google, and census data)
•    Analyzing location accessibility and building simple regression models
•    Developing spatial indicators and mapping urban data with open source GIS tools, Mapbox, and TileMill


Some prior coursework (such as CP 204c) or basic experience using a GIS is required. Students are not required to have prior programming experience, although it will be beneficial. Python is an accessible language and the course will emphasize learning by doing.  Prior or concurrent course work in statistics and data analysis (e.g. CP 204A or 204D) is encouraged as this course will not provide the theoretical foundations of statistical analysis.

This course is open to students from across campus, but priority enrollment will be given to students in the Master of City Planning program.


Students will develop skills gradually through in-class exercises and tutorials, and graded assignments.  There will be numerous assignments, scheduled roughly every other week -- but no exams or final projects.  Assignments will typically involve writing some code and documenting it, using IPython Notebooks that can be shared and interactively run inside a web browser, and a writeup discussing the assignment and its results.

Exercises and Assignments will account for 90% of the course grade, and class participation for 10%.  Exercises will be smaller tasks that demonstrate a degree of mastery of skills on a smaller scale, and will be used mainly as a means of ensuring that students are keeping up with the material and not falling behind.  Assignments will be somewhat larger and more involved tasks, that require a higher degree of facility and independent work, putting pieces together to complete larger tasks.  Assignments will be given generally on a Thursday, and be due by end of the day on the following Monday.  Thursdays will generally involve more of a workshop format, with students working individually on exercises or assignments in class to have opportunities to interact with the instructor and GSI and classmates while gaining skills and confidence.

If a student wishes to undertake a larger project using the skills developed in this course, they may explore doing an independent study with the instructor.


This course does not use a book or assigned text, since so much of the material is based on emerging and rapidly evolving technology.  For the most part, the lecture notes, tutorials and examples provided on this website will provide a good foundation for the skills students will gain in thew course.  Some of the key packages we will be using have free documentation available, and you should make extensive use of these to help you climb the learning curve.

  1. Downey, Allen.  2013. Think Python: How to Think Like a Computer Scientist.  Green Tea Press.  Available as a free PDF download. This text provides a fairly comprehensive overview of Python as a programming language. 
  2. IPython Documentation. 2013. This online documentation explains what IPython is and how to use it.
  3. McKinney, Wes. 2012. pandas: powerful Python data analysis toolkit. Python for Data Analysis.  O'reilly. Available as an e-book from the library, and as a PDF.  You may also want to access the online Documentation available in pdf.  
  4. Statsmodels Documentation. 2013.  This is online documentation for the statsmodels library we will use for developing statistical models.
These e-books are available for free from the Berkeley library system and can be considered additional resources:

Course Summary:

Date Details