Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
homework Week 5 Homework Jun 25, 2014
mapping ok Jul 9, 2014
week_1 nbviewer link and control structure notes May 30, 2014
week_2 note about cutting and pasting ipython Jun 4, 2014
week_3 Typo Jun 13, 2014
week_4 re-adding Jun 19, 2014
README.md Ditch Twitter from Census week Jun 23, 2014


title date time affiliation instructors location
Foundations of Computing
5/28/14 - 7/14/14
M & W 10am - 1pm
Columbia University, Lede Program
Jonathan Soma, Dennis Tenen
601b Pulitzer Hall*

* We will be meeting in room 601b for the first week or so and then according to the room schedule.

An introduction to the ways in which the computer and data technologies can be partners in creative practices. We will emphasize writing code over point-and-click interfaces, presenting the computer as a programmable object. Through a series of projects, students will move from exploratory sessions, to writing small programs, to sharing code with others in class. They will learn by making, and in the process master a "scripting language" like Python or Ruby. Projects will examine and extend existing technologies in the digital humanities, computational journalism, architecture, and design; and will likely deal in text and images, in human relationships as exhibited through social networks, in map-making, and in reporting.

Week 1: Intro to Python

Focus: Get comfortable running Python at the command line and understand that seeking out help is 90% of coding

Wednesday 5/28

Course philosophy
Course tools: iPython notebook, bash, Piazza, IRC, GitHub

Introduction to pseudocode
Python hello world:

  • print, # comments
  • int, str, list, dictionary, tuple
  • variables
  • basic operators
  • basic control structures
  • loops and logic
  • iterables

TODO: Lab notebooks. File cleanup. Posting to Piazza.

Week 2: Terminal Basics

Focus: Learn to read and write basic (clean, commented, beautiful) Python.

Week Inspiration: Dogs of NYC

Monday 6/2

  • Algorithmic thinking with Dogs of NYC data

  • Writing readable code

  • Dictionaries (csv.reader vs. csv.DictReader)

  • for...in

  • Functions

  • Programmer's mindset

  • Getting help: living with syntax errors, docstrings, SE, IRC

  • Terminal bash basics: (pwd, ls, cd, cat, man, cp, mv, touch, nano, flags, pipes, cd ~, cd /)

  • Exploring your file system (files and folders). Binary, text, hex.

Wednesday 6/4

  • more on the Programmer's mindset
    • divide and conquer
    • be lazy
    • no black boxes
    • python specific stuff
  • text and data workflows
  • language interpreters
  • taking control of IDE
  • Lab notebooks
  • code and data
  • Markdown
  • Pandoc
  • Version control
  • Github workflow
  • finish going through the Dogs code

Resources: Sustainable Authorship in Plain Text

Week 3: Functions and GitHub

-Week Inspiration: Quakebot

Monday: 6/9

  • Installing GitHub, pushing and pulling
  • Writing your own functions

Wednesday 6/11

  • Physical deconstruction (or construction!) of computing concepts
  • More on functions, implementing baby Quakebot

Homework: Earthquakes

Week 4: Working with the Census and an introduction to APIs

Focus: Use another library, a simple key-based API, understand Census data

Week Inspiration: Almost every story ever uses ACS data. Quakebot

Monday 6/16 + Wednesday 6/18

  • APIs
  • The census package from Sunlight Labs
  • Census terminology
    • FIPS codes
    • Blocks, tracts
    • MSAs
    • etc

Week 5: Networking

Monday 6/23

  • superpowers: code, terminal, server, network
  • communication theory: sender, message, transmission, noise, channel, reception, receiver
  • Inventing the internet
  • ping, traceroute
  • connection, packet switching, datagram
  • layers and protocols: physical (wi-fi, bluetooth), data (bits into packets), network (ip), transport (tcp, udp), session, presentation (ascii, midi, mpeg), application (http, bittorrent)
  • mac, dns, ip address
  • ports, firewall
  • Cloud computing w/ aws
  • Moving files: ssh, scp, rsync, wget

Wednesday 6/25

  • pretty good privacy (PGP)
  • public and private keys
  • Send an encrypted email message
  • tor, vpn, ssh tunnels
  • bitcoin

Resources: Cyberspace Atlas; How PGP Works; Mailvelope, Keybase; https://emailselfdefense.fsf.org/; Chapter 1 from TCP/IP Illustrated by W.Richard Stevens, Second Edition.

Week 6: Data Visualization

Focus: Make visuals of your data

Week Inpiration: How FiveThirtyEight Got the Nigerian Kidnappings Analysis Wrong

Resources: Statistics Done Wrong, Demystifying Networks, Introduction to social network methods

Monday 6/30

  • Bad stats
  • Tufte
  • Working with data
  • Data visualization
  • Matplotlib
  • EDA

Wednesday 7/2

  • Matplotlib
  • Bokeh
  • Google TakeOut

Week 7: Mapping

Focus: Making non-interactive and interactive maps (matplotlib and TileMill, respectively)

Monday 7/7

  • Shapefiles
  • Joining data (Join with week 4 via FIPS?)
  • Color schemes
    • diverging, sequential, qualitative
    • color blindness
    • RGB vs HSB
  • Geocoding points

Wednesday 7/9

Week 8: Physical Computing

Monday 7/14

  • Physical computing
  • Sensor tech
  • Drone control

Lab: Phidget music machine.

Resources: Take the Linux Filesystem Tour