Intro To Coding For Journalists
This repository will hold a growing collection of resources and links to repositories to support a semester-long college level course aimed at journalists who want to learn coding skills.
About this class
This class enthusiastically welcomes beginners. No coding experience is necessary. You will need to be able to install and run the required software for the course on a machine that you will have access to between classes. The list of required software is here. If you are taking an in-person class, we will spend time in the first class installing those tools.
We will be using Scott Murray's Interactive Data Visualization for the Web, 2nd Edition.
Readings and assignments
Readings and assignments for a week are due the week they are listed; so readings and assignments listed under Week 3 are due at the beginning of Week 3. If your assignments include code, your commits or pull requests must be complete before class time on the week they are due.
Diagnostics are quizzes done in class, typically at the beginning of class.
Labs are in-class exercises and activities. Each one is detailed in this repository with its own file, labeled like this:
If You Are A Self-Guided Learner
If you are working your way through this class on your own, thank you! Please see our Intro To Coding for Journalists: Self-Guided Tips here.
Coding For Journalists: A Course Outline
Week One: Why Code?/The Development Environment
We address the basic questions of 'why code' -- which go far beyond 'it will get me a job.' Accountability in our increasingly high-tech world requires more of us as journalists -- we want to have a working knowledge of the technologies that have an impact on public policy and the lives of individuals.
We introduce the idea of a 'development environment' -- the integrated suite of tools used by newsroom developers to create projects. Each student leaves with a working set of tools.
Week 1 Lab
Week 1 Readings
Week Two: Version Control: Git, Github
We introduce version control -- a core aspect of coding and collaborating. We connect to code repositories maintained by The New York Times, Washington Post, and The Guardian and 'clone' those onto our own machines.
Week Two Readings
Learn Version Control with Git, Chapter 2, Branching and Merging, and Chapter 3, Sharing Code
Week Two Diagnostic
You will have a diagnostic (quiz) on the basics of Git, Github, and the command line.
Week Two Lab
Week Two Assignment
See the end of Week 2 Lab for assignment details. Complete Week 3 Readings below. Assignment and readings must be completed by the beginning of class on Week 3.
Week Three: Bootstrap and Flat File Websites
We use Bootstrap -- a template language developed by Twitter -- to create a template for a simple flat-file website, which we store and host on Github.
Week 3 Readings
Interactive Data Visualization for the Web, Chapter 3
What Is Bootstrap and How Do I Use It?
Lessons from an Intermediate Programmer-Journalist, Michelle Minkoff, AP
Week 3 Diagnostic
You will have a diagnostic on the terms and concepts covered in Chapter 3 of Interactive Data Visualization for the Web, and terms and concepts covered in What Is Bootstrap and How Do I Use It?
Week 3 Lab
We will build a basic flat-file site in class. Find repositories and directions here: Week 3 Lab
Week 3 Assignment
See Week 3 Lab for assignment details. Your code must be committed by class time to get credit for your assignment. You will show your work in class at the beginning of class on Week 4. Complete Week 4 readings by Week 4 class time.
Week Four Readings
Interactive Data Visualization for the Web, Chapters 4 & 5
Data Journalism Must Live Up To Its Own Standards, Alberto Cairo, NiemanLab
Week Four Diagnostic
Week Five Readings
Interactive Data Visualization for the Web, Chapters 6-8
Week Five Diagnostic
You will have a diagnostic on Chapters 6-8 of Interactive Data Visualization for the Web.
Week Five Assignment
Fork and clone the D3http repository, and follow the instructions to make a simple scatterplot. Connect the scatterplot to a new datasource as noted in the instructions. Push to Github Pages and drop a link to your work in the #assignments channel of the class Slack workspace.
Week Six: Serving Data Visualizations to the Web
We will use the simple flat-file website we built in Week Three to 'host' our data visualization. Reviews key development skills such as using a local webserver to test our work, and then 'pushing' it live to the web using version control tools.
Week Six Readings
Grunt.js Taskrunner: Getting Started Read this and install Grunt via npm. Be sure you can 'spin up' a local webserver in a directory on your own machine.
Creating a website on Github Pages
Building News Apps on a Shoestring, Alan Palazzolo, ProPublica
Week Six Assignment
Fork and clone the Project Template repository,
npm install the components, and spin up a local webserver. View the index.html file. If you have an issue, remember to read the guide on how to file an issue and file an issue.
We take the basic D3 skills we have learned and, like art students, 'copy' a data visualization done by The Washington Post, and push it live to our own websites.
We also preview an app template -- either The Washington Post's Kyt or the NPR App Template, which will be used for a group project.
Week Seven Readings
Chapter 10, Interactive Data Visualization for the Web
What I Learned Recreating One Chart Using 24 Tools, Lisa Charlotte Rost, Source
Seeing Like A Geek, Tom Slee, Crooked Timber
Week Seven Assignment
For the remainder of the semester, you will be working on an immersive story of your own creation. See the Story Standards document for requirements for this assignment. Next week, you will come to class and make a pitch to me and your fellow students for your semester project.
Week Seven Diagnostic You will have a ten-question diagnostic on Chapter 9 of Interactive Data Visualization for the Web.
Week Eight: Project Pitches; Project Planning & Collaboration
We will begin with students pitching a project. Practicing all of these skills in a real newsroom environment means having excellent project management and collaboration skills. We learn basic aspects of the Agile tech project management methodology, learn how to build and manage a project card board, and practice splitting up projects, doing tasks, and merging and launching code when it's from multiple team members.
Week Eight Reading
Interviewing Humans: A Guide to User Research, Erika Hall
Painless Functional Specifications: Why Bother?, Joel Spolsky
We can draw school zones to make classrooms less segregated. This is how well your district does., Alvin Chang, Vox
Week Eight Assignment
Fork and clone the Scroll Driven Story repo. Review the code and the README. Visit the examples of scroll-driven stories in the Examples.md file. _Add your own link to the list of scroll-driven story examples, using the format you see there -- it can't be one that's already there, and it can't be one of the ones we will review in Week Nine. Do a pull request to add your link to the list of examples.
Week Nine: Scroll-Driven Storytelling & Other New Forms
We will take a look at three major new tech-driven news forms, including news apps, customizable stories, and scroll-driven stories. During this class, we will get a basic scrolling site up and running using the Scrollmagic.js library.
Week Nine Examples
Homan Square: A Portrait of Chicago's Detainees, The Guardian
Sin Luz: Life Without Power in Puerto Rico
Simone Biles, Gymnast
Bulger on Trial
Snowfall: The Avalanche at Tunnel Creek
Climate Change Claims a Lake and an Identity
Week Ten: Scroll Driven Storytelling Hands-On
We will work with the Scroll Driven Storytelling repository and explore additional project transitions and features of the Scrollmagic.js library that you will use to create your story's immersive site.
Week Eleven and Twelve: News App Project Workshop
Students will work together in teams and address issues they have encountered with their projects.
Week Thirteen: News App Project Presentation & Final Pull Requests
Students give a live presentation of their app and do a final pull request on the class's repository, adding a link to their project to our class's official list of work.