← go to syllabus

Foundations of Computation, Fall 2021

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

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.

  • 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

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 and BeautifulSoup
  • Automation with GitHub Actions
  • Advanced/interactive scraping with Selenium
  • Convering PDFs into a reasonable format

← go to syllabus