Skip to content
Urban Informatics and Visualization (UC Berkeley CP255)
Jupyter Notebook JavaScript
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
02-python-data-types updated first 2 weeks and removed obsolete files Sep 3, 2018
03-programming-logic updated and added links to open data portals Sep 10, 2018
04-wordpress-and-cartodb updated first 2 weeks and removed obsolete files Sep 3, 2018
05-files added missing worked example Sep 25, 2017
06-dataframes updated and cleaned up Sep 16, 2018
07-data-manipulation fixed a worked example Oct 5, 2017
08-apis updated the api demo Oct 8, 2018
09-data-visualization minor changes Oct 19, 2017
10-mapping updated and renamed geoprocessing notebook Oct 17, 2018
11-spatial-analysis adding blocks Oct 29, 2017
12-accessibility Updated to Python 3, fixed path error Nov 3, 2018
13-data-science-1/data Some cleanup of the first data science session Sep 30, 2017
13-geocoding updated geocoding Oct 15, 2018
Data testing a geojson file for mapboxgl use Dec 7, 2018
Other Materials
CP255-course-overview.docx renamed for clarity Jun 24, 2016 updated and added links to open data portals Sep 10, 2018
syllabus-2016.xlsx Moved API session back to Oct 3 Sep 23, 2016
syllabus.docx Updated syllabus Aug 20, 2016
syllabus.pdf renamed for clarity Jun 24, 2016

Urban Informatics and Visualization

University of California, Berkeley Department of City and Regional Planning

Professor: Paul Waddell

GSI: Arezoo Besharati Zadeh

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 exercises will reinforce the skills and topics being presented, and a final project will provide an opportunity for students to develop a more complete project from harvesting data from Open Data portals to synthesizing and analyzing those data to explore a question or problem, to communicating their results in a web map and blog, as well as a final presentation.


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'll learn the fundamentals of urban data 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 Jupyter notebooks
  • Cleaning, manipulating, and analyzing urban data
  • Visualizing data in Python with charts, graphs, and tables
  • Accessing public data from the web and APIs (including Twitter, Google, Census data, and the Open Data portals of cities)
  • Developing spatial indicators and mapping urban data with open source GIS tool

COURSE PREREQUISITES Prior coursework (such as CP 204c) and 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 exercises paced over the semester.  These will typically involve writing some code and documenting it, using IPython Notebooks that can Students will develop skills gradually through exercises paced over the semester. These 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 will generally be due Sunday night at 11:59pm.

Each exercise except the first one (5 points) will be worth 20 points and the final project/presentation will be worth 100. Exercises will be tasks that demonstrate a degree of mastery of skills, and will be used as a means of ensuring that students are keeping up with the material and not falling behind. All assignments will be marked down 20% for each day late, so please submit on time. Final projects will require harnessing the skills practiced in the exercises and developing a more independent work plan to accomplish an analysis of data.

Please make sure you arrive on time to class (we will start at 9:40 - please be in class by then). Due to the nature of the computer lab, it can be very distracting to have students trickling in after class has begun. Make sure you have a keycard with access to room 214 and please do not knock on the door to be let in after class has begun. If you are taking this class and are not a Master of City Planning student, you must sign up for a computer account and access to the 214 lab. This may require paying a fee. You can sign up in 477 Wurster Hall. 


There will be a reading or set of short readings required for most class sessions. These are essential for coming prepared as the lectures will proceed under the assumption that everyone has already read the assigned reading materials. Most class sessions will begin with a quick discussion of the reading material, and you will have the opportunity to ask us questions about anything you didn't understand.

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 software packages we will be using have free documentation available, and you should make extensive use of these to help you climb the learning curve.

Downey, Allen. 2013. Think Python: How to Think Like a Computer Scientist. Green Tea Press. This text provides a fairly comprehensive overview of Python as a programming language.

IPython Documentation 2017. This online documentation explains what IPython is and how to use it.

McKinney, Wes. 2012. Python for Data Analysis. O'reilly. Available under Files > Reading Materials. You may also want to access the online Documentation available in pdf (Links to an external site.)Links to an external site..

This course requires a lot of experimentation and trial-and-error. Google is your best friend! Google your questions, Google any error messages, and if you can't find an answer, email Paul and Geoff. When you email us, tell us what you Googled and what you've discovered, and include screenshots and error messages. The key to success in this course has been repetition: keeping up on the readings, writing lots of code over and over, and stretching to figure out "what next".

The course website is online through bcourses, accessible here:

You can’t perform that action at this time.