Welcome to Lede 2018: Foundations of Computing


  • Instructor: Jonathan Soma, js4571@columbia.edu
  • Dates: Mondays and Wednesdays, 5/21-7/11 (Holidays: Monday 5/28, 7/4)
  • Class: 10am-1pm, World Room
  • Lab: 2pm-5pm, World Room
  • Slack channel: #foundations

Course Overview

By the end of this course you’ll have the flexibility to find and execute solutions to most any coding- or data-related problem you run across. In theory we’re focusing on Python in general, the data package pandas, and comfort with the command line.


On many, many assignments, I will give you:

  • More homework than you can reasonably accomplish
  • Homework that involves googling answers
  • Homework that requires thinking through problems and answers in complicated and specific ways

What’s this mean? It’s going to be hard.

If you find yourself falling down a black hole: just take a break. Or stop altogether! Don’t worry about it - ask people near you or TA’s for guidance.

Oh, and most importantly: if you can’t finish? Not a problem. It’s far more important to not get burned out and discouraged.


This is a rough outline, and will absolutely change very, very often.

Week 1: Introduction to Python and the command line (5/21 + 5/23)

In our first week we’ll take a look at the insides of our computers using the command line, with tools like cd, grep, and cat. Learn to navigate your computer and run basic Python scripts.

Week 2: Navigating APIs (5/30, Wed only)

No class on Monday due to Memorial Day

Become more comfortable with data types in Python by consuming data from APIs - dynamic sources of information that are easily understandable by Python. Learn the joys of Jupyter Notebooks.

Week 3: Analyzing structured data with Pandas (6/4 + 6/6)

Begin work with pandas, a data analysis library that runs circles around Excel.

Week 4: Obtaining data through scraping (6/11 + 6/13)

Using our Python skills to scrape web sites with BeautifulSoup, along with advanced scraping such as form submission and using the browser automation tool Selenium.

Week 5: Dealing with text-based data in pandas (6/18 + 6/20)

How to take semi-structured text data and clean/extract the parts we’re interested in.

Week 6: Visualization and dealing with missing and dirty data (6/25 + 6/27)

Taming troublesome datasets with format conversation, filling in and ignoring “bad” values.

Week 7: Geographic analysis with QGIS (7/2, Monday only)

No class on Wednesday due to Memorial Day

Become familiar with different geographic data types, geocoding, the limitless power of column and spatial joins.

Week 8: Float (7/9 + 7/11)

Left empty to allowing some cushion in topic coverage. We’ll probably cover more QGIS,