Foundations of Computation, Fall 2021
The basics
Who/what/where/etc
Jonathan Soma
Fall 2021, Columbia Graduate School of Journalism
Mondays/Wednesdays, 10am-1pm. Mondays in 607B, Wednesdays in Brown.
Slower responses at js4571@columbia.edu, faster responses on Slack
Zoom office hours available via calendly
Teaching assistants
- Duy Nguyen, dn2530@columbia.edu
- Jasen Lo, jl6156@columbia.edu
- Elisabeth Gawthrop, esg2145@columbia.edu
- Joy Harjanto, jh4514@columbia.edu
Office hours
Office hours will happen all of the time, you’ll want to check the office hours calendar here.
Most office hours will be hosted virtually on Gather, a spatial chat platform. It’s way more fun than asking questions on Slack! You can find our Gather link on our CourseWorks page.
In-person office hours will be specifically noted as happening IRL.
Grading
I don’t do quizzes or tests, so the breakdown looks like this:
- Class participation: 30%
- GitHub presentation: 20%
- Homework: 50%
Participation
Participating in class involves only slightly more than sitting behind a screen eating crumbs off of your keyboard. It can include:
- Asking questions in #foundations on Slack
- Going to office hours with instructors and TAs
- Attending homework review sessions
You will need at least two participation marks each week.
GitHub repos
GitHub is, more or less, the way you store all of your stuff on the internet. We’ll learn about it at the beginning of Week 3.
Along with (eventually) posting your homework there, you’ll also be doing something else. That something else can take a few formats, as long as it improves your online presence. Examples might be:
- Posting your project from Reporting II
- Cheat sheets
- Walkthroughs or tutorials for people learning anything you learned in (or outside of) class
- Keeping track of project ideas, data sources, etc.
Don’t worry about this requirement for now, we’ll talk about it when we start using GitHub.
Homework
You’ll have an infinite amount of homework. You don’t need to finish it all. If you finish 30% of it, you’re perfectly adequate.
See below.
Homework
You’ll have homework due before every class. There’s a lot of it, and generally speaking it can be difficult.
As I said above, you don’t need to finish it all. If you finish 30% of it you’ll be solid on the basics. You might have a difficult time adjusting to this approach mentally, but I have faith in you.
If you feel like you’re drowning in the first couple weeks, don’t worry. On Week 3 there’s a big reset (conceptually speaking, from a programming standpoint) and it’s kind of a fresh chance to start over.
Homework grading
Homework is graded on a 5-point scale. 3 points are for successfully completing the content, with 2 points additional points for style. Style includes things like naming variable names appropriately and putting parens in the right places.
Homework should be graded within a week of you turning it in. The feedback generally isn’t too specific because there will be a review session for each homework assignment.
Review sessions
Within a week of each homework assignment being turned in, a TA will host a review session where they go over the content. They’ll generally be recorded and posted to Panopto on CourseWorks.
After a review session, I recommend going back and doing the homework again. Even though you’ve alreay done it, you’ll get a lot out of it: I promise this is a nearly perfect way to learn.
Working in groups and also CHEATING
First: 150% you should work in groups. It’s how you survive. Hang out in rooms together, try hard to not catch COVID, scream about Python syntax errors, but please please please work together. Alternatively you can sit at home, hang out on Gather, easily avoid catching COVID, scream about Python syntax errors, etc.
Second: don’t cut and paste code from someone else and turn it in as your own, it’s a waste of everyone’s time. Why in the world are you going to make me read that? Why should we waste our time grading something you didn’t write and don’t understand? We want to grade your work.
So: if you don’t understand something, either ask a TA or just skip it. You’ll always be able to hang out at the homework review session and learn it for real instead of trying to fake your way through it. Remember how I said I don’t care if you do all of your homework? I mean it!
But, important note!!! You’ll definitely end up stealing code from the internet that you don’t understand. That’s perfectly fine, because trying to make it work is an awful experience that teaches you almost as much as doing it yourself.
Weekly Breakdown
Class 01: Command line, basic Python
Learning what to do after you turn on your computer.
Class links
- Python Wrangler will attempt to help us install Python in an incredibly specific way
- Visual Studio Code will be our text editor
- Cmder will be what Windows users will use for the command line. Mac users won’t need this!
Notes
Other Links
- Python’s Not (Just) For Unicorns, I hate all Python tutorials so I made this one part of your pre-work
- Terminus, to pretend the command line is fun part of your pre-work
- FILE NOT FOUND: A generation that grew up with Google is forcing professors to rethink their lesson plans, wherein people eager to capitalize on the popularity of “oh hey look at Gen Z!” pretend something incredibly common and practically universal is a generational thing
Class 02: Lists + dicts
Computer programs are great ways to make many mistakes, again and again, faster than you ever thought possible.
Notes
Class 03: APIs
Telling your computer to talk to other computers.
Class 04: git + Jupyter
Showing off to the public, becoming friends and enemies with members of the internet, making all of our awful code look much fancier.
Class 05: pandas
Visiting the Chengdu of Python, wrangling data, loving it, hating it.
Class 06: Cleaning data
It’s all we do to the point that it was even in the NYT like sixty years ago
Class 07-14: Descending into chaos, no order promised
- Mapping with QGIS
- “Fancy” scraping with
requests
andBeautifulSoup
- Automation with GitHub Actions
- Advanced/interactive scraping with Selenium
- Convering PDFs into a reasonable format