J233: Advanced Coding Interactive Stories Fall 2019

Instructor: Jeremy Rue, continuing lecturer
Room: B1
Time: Tuesdays 10 a.m. – 1 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 other types of projects students may conceive.

Learning Objective

This course teaches students code literacy. Beyond the specific skills they learn, students will have a more well rounded understanding of a crucial technologies that influence the news industry in innumerable ways. They become better decision makers when working with technologists, and will help to forge the future of the journalism industry. This class covers prototypical object oriented programming, an important component in many web coding languages. Topics covered include 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 Pandas.

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 national 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

Only legitimate excused absences per California Education Code (CEC). UC Berkeley Guidelines for Academic Accommodations. Two unexcused absences will result in lowering a half-letter grade. Three 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: Wed from 10 a.m. – 1 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

Sep 3
Command Line Interface — 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).
Sep 10
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 17
Introduction to variables, arrays, JavaScript Object Notation. — This session session will cover syntax, variables, operators, datatypes, arrays, lists, multidimensional arrays, JavaScript object notation, and displaying information in the console.
Sep 24
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.
Oct 1
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. We will use Illustrator to create locator maps.
Oct 8
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 15
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 22
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 29
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 5
One-on-one Meetings — This week, we will be having individual meetings with the instructor to get your mid-term portfolios ready. Please sign-up on the Google Spreadsheet.
Nov 12
APIs — This session will cover REST requests for querying web services for data. Then we will parse the data for a variety of purposes when building web app tools. Class will also include an in-class written test on parsing JSON.
Nov 19
Python (Jupyter) Notebooks — This session will cover an introduction to Python (Jupyter) notebooks for some simple data analysis, and how to use Python for scraping websites, wrangling data, and running various web apps relevant to journalism.
Nov 26
Machine learning — This is a lesson on using Jupyter notebooks to make a couple of machine-learning models.
Dec 3
Encryption — A basic understanding of encryption, hashing functions, checksums, integrity verification, and how such tools are being utilized in the journalism industry.
Dec 10
Workshop Session — During this session, I will work with students indiivdually to get their portfolios ready for the final project submission.

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.