Advanced Coding Interactive Stories Fall 2018

Instructor: Asst. Dean Jeremy Rue
Room: B1
Time: Thursdays 9:30 a.m. – 12 p.m.

Course Description

This course is an introduction to programming concepts as they relate to the journalism industry. The goal of this course is to equip students with a foundational computational literacy to construct interactive online stories such as data visualizations, infographics, maps, multimedia packages, games or innumerable other types of projects students may conceive.

Learning Objective

These skills and abilities allow students to think critically about how communicate on digital media platforms. Students will learn the basics of JavaScript — the language of the web. They will learn the fundamentals of prototypical object oriented programming, an important component in many web coding languages. The course will cover variables, typecasting, arrays, for-loops, conditional statements, comparison operators, functions, enclosures and cross-domain data requesting. This course will also cover popular data libraries like D3 and Leaflet. While these terms may seem esoteric to a layperson, they are quickly becoming a necessary part of the vocabulary of students wishing to enhance their abilities in this expanding area of journalism.

Students who have successfully completed this course in the past, along with the data journalism courses, have gone on to become web/graphic developers at major news organizations. These journalists tell visual and interactive stories. The New York Times publishes a yearly review of their interactive stories. These are good examples of the type of work you can aspire to after learning a coding language like JavaScript.

Recommended Readings

Every week, the course website will list free recommended readings. These are links to supplemental tutorials, articles, videos, or free e-books that will help you to better understand the material. Sometimes, others have come up with better methods of explaining arcane concepts, and I freely invite you to explore other material out on the web.

Attendance Policy

Simply notifying the instructor of an absence is welcome, but does not make it excused. Only legitimate excused absences per California Education Code (CEC). UC Berkeley Guidelines for Academic Accommodations. Three unexcused absences will result in lowering a half-letter grade. Four unexcused absences will lower you a full letter grade. If there are any more than four unexcused absences, the student must meet with the instructor or be in danger of failing the course.

Making up Missed Classes

As quoted by the UC Berkeley guidelines on absences:

Students are responsible for material covered during missed classes whether or not they have been formally excused; therefore it is the student’s responsibility to inform him/herself about the material missed....it is not the instructor’s or the GSI’s responsibility to tutor students in missed material. For this reason it is recommended that students absent from class for any reason make timely contact with several other students in the class to arrange for thorough briefing on the material they missed.

The instructor will make material available on the website as much as possible, and will attempt to help students to a reasonable extent. However, it is the ultimate responsibility for students to make-up missed work on their own.

Instructor Contact/Office Hours

Jeremy Rue
(510) 643-1927 (office number, no texting)
Office in room B1 of North Gate Hall

Office hours: Monday/Friday from 2 p.m. – 4 p.m. Appointments are highly encouraged as there are dates when I might not be present.

Grading Policy

Grading will be made up of four areas:

Quizzes, class assignments, attendance: 33%
Mid-term project: 33%
Final Project: 34%

Quizzes and class assignments will be given on bCourses. The mid-term project is an interactive web feature built using tools and code learned in class (usually a D3 chart). The mid-term can be done with tutorial material, or materials from another class. The final project is a full web-page interactive news package feature showcasing a story. This can be done with tutorial material given from the professor, or preferably with real materials. Double-dipping with other classes is allowed. The final project ideas should be approved beforehand.

Course Schedule

Aug 23
Learning the Terminal — This session will teach students how to use the command-line interface and navigate around the computer using the Terminal program. A brief lesson on bash scripting, and a tutorial on Regular Expressions (RegEx).
Aug 30
Workflow and Github — This session will cover the process of web programming, how to setup your work enviornment, keep track of changes, and publish your work. A large part of this course will center around Git, and using GitHub for posting future assignments.
Sep 6
Introduction to JavaScript Variables and Arrays — This session session will cover syntax, variables, operators, datatypes, concatenation, arrays, multidimensional arrays and displaying information in the console.
Sep 13
Objects — This session will cover JavaScript Object Notation (JSON) and how to both store and retrieve data using the different styles of notation (dot, square-bracket, and object literal).
Sep 20
Functions and Conditionals — This session will cover how to use functions to execute code blocks, send data to functions via arguments, return data from a function and how to use anonymous functions. Discuss how functions affect variable scope, and how to use encapsulation to avoid cluttering the global scope.
Sep 27
Introduction to SVG and Illustrator — This session will explore the building blocks of Scalable Vector Graphics (SVG) and how they can be maniuplated in JavaScript for producing interactive graphics.
Oct 4
Introduction to D3 — This session will cover an introduction to the D3 JavaScript library for manipulating the DOM. We will create SVGs from scratch, and then join data to the SVG in order to create basic charts.
Oct 11
Making Charts in D3 — This session will cover how to iterate through a dataset, like an array or object. We will then make some charts with D3 using this process.
Oct 18
Animation in D3 — This class session will cover basic animation methods in D3. We will also learn how to use Asyncronus JavaScript And XML (AJAX) to request data, and parse a CSV file. Students will learn additional D3 methods.
Oct 25
Mapping in D3 — This session will cover basic mapping concepts and how to create cartographic maps in D3. We will also study characteristics about mapping projections and geospacial coordinate systems.
Nov 1
For Loops (Mid-term Due) — This session will cover how to iterate through data using "for loops," and cover other syntax/operators that might still seem mysterious to people.
Nov 8
APIs, scraping, and OOP — This session will cover AJAX requests for querying web services for JSON data. Then we will parse the data, and display elements in the DOM. Class will also include an in-class written test on parsing JSON.
Nov 15
Python (Jupyter) Notebooks — This session will cover an introduction to Python (Jupyter) notebooks for some simple data analysis, and how similar Python commands are to JavaScript.
Nov 22
Thanksgiving Break — No class
Nov 29
Encryption Fundamentals — A basic understanding of hashing and encryption.
Dec 6
Final Assignment — Instructions for turning in the final assignment for the class.

Academic Dishonesty and Plagiarism

Students will abide by the Student Code of Conduct. There is a zero-tolerance policy for work that is submitted without proper attribution and that constitutes plagiarism. If students are unsure about the expectations regarding the Student Code of Conduct, please seek advice from the instructors.

Digital and paper trails are crucial elements of accountability in journalism. Students are expected to record all interviews with a digital recorder or their smartphone and keep an archive of them for the duration of the term. Students must also keep all reporting notes and completed assignments organized & accessible in Google Docs for the duration of the term. Students should be prepared to provide notes and/or recordings to instructors, if asked.

Disabled Student Services

If you require an academic accommodations for this course, you must follow the intake and accommodation procedure to obtain a Letter of Accommodation. Please contact Extension Disabled Student Services (EXDSS) at extensiondss@berkeley.edu or (510) 643-5732. If you already have a Letter of Accommodation from Extension Disabled Student Services for this course, please make an appointment with me to have a confidential discussion of what you will require for this course.