DS4UX (Spring 2016)/Schedule

Week 1: March 28
Day 1 plan


 * Assignments due
 * fill out the pre-course survey


 * Agenda
 * Quick introductions — Be ready to introduce yourself and describe your interest and goals in the class.
 * Why Programming and Data Science for UX Research? — What this course is about
 * Class overview and expectations — We'll walk through this syllabus.
 * Group formation — We'll assemble in our peer programming groups for the first time.
 * Installation and setup — You'll install software including the Python programming language and run through a series of exercises.
 * Interactive lecture: programming concepts 1
 * Self-guided tutorial and exercises — You'll work through a self-guided tutorial to practice the basic concepts we introduced in the lecture.


 * Homework
 * Complete Self-guided tutorial and exercises (if you didn't finish this in class).
 * Complete CodeAcademy lessons


 * Resources
 * Python for Informatics: Preface and Chapter 1 Why should you learn to write programs?
 * Command line cheat sheet — covers basics like  and much more.

Week 2: April 4
Day 2 plan


 * Agenda
 * We will review the programming concepts introduced last week as a group.
 * We will introduce some new programming concepts into the mix.
 * We will play a guessing game (click here to download the code)
 * We will use what we have learned so far to cheat at Scrabble.
 * We will introduce our first set of Coding Challenges.
 * We will take a sneak peak at what a good final project looks like.


 * Homework
 * Complete the second set of CodeAcademy lessons
 * Work on the Week 2 coding challenges


 * Resources
 * Python for Informatics: Chapter 2 Variables, expressions and statements and Chapter 3  Conditional execution
 * Python data types cheat sheet
 * Python loops cheat sheet
 * Working within loops
 * Wordplay handout
 * cdsw-au2015-lecture1-20151010.ogv -- Mako Hill's lecture video from a previous course, which covers most of the concepts from my Week 1 and Week 2 lectures.

Week 3: April 11
Day 3 plan


 * Agenda
 * We will review your feedback from last week
 * We will walk through the solutions to the code challenges from last week
 * We will introduce some new programming concepts
 * We will walk through an example of programming in a UX Research context
 * We will begin working on a series of exercises using the Baby Names dataset


 * Homework
 * Day 3 coding challenges


 * Resources
 * go here

Week 4: April 18
Day 4 plan


 * Agenda
 * Week 3 code challenges — We'll briefly walk through the concepts and solutions to the Week 3 coding challenges as a group.
 * Day 3 follow up — We will cover some important concepts that we didn't have a chance to cover in depth last week.
 * Reading and writing files — we will learn how to read and write basic datafiles with Python.
 * Burke-Gilman traffic counter — we will start working with a dataset of bike and pedestrian traffic on the Burke-Gilman trail.
 * Wikipedia Notifications survey analysis — We will walk through a real life example that uses the concepts we've developed so far to answer research questions.


 * Homework
 * Day 4 coding challenges (Required) Turn in here!


 * Resources
 * Two video lectures by Mako Hill, which covers most of the concepts from NEXT week's lecture (as well as some useful review):
 * cdsw-au2015-lecture2-20151024.ogv
 * cdsw-au2015-lecture3-20151107.ogv

Week 5: April 25
Day 5 plan


 * Assignments due
 * Day 4 coding challenge Turn in here!


 * Agenda
 * Week 4 code challenge solutions — We'll walk through the concepts and solutions to the Week 4 coding challenges as a group.
 * Lecture 1: What is an API? — Ray will introduce us to APIs ("Application Programming Interfaces").
 * Exercise 1: PlaceKitten API — we will write our first API requests using the PlaceKitten API.
 * Lecture 2: Using data from APIs in Python — Ray will introduce us to JSON ("JavaScript Object Notation"), a type of data structure that is commonly used by APIs, which can be easily imported into Python and converted to a dictionary for analysis.
 * Week 5 project: Introducing the Wikipedia API — We will learn the syntax of the MediaWiki API (used by Wikipedia), as well as how to test API queries in a sandbox, and how to perform those queries in Python—in preparation for the Week 5 coding challenges.
 * We will go over a list of sample APIs, datasets, and research questions that will get you thinking about what research you want to conduct for your final class project.


 * Homework
 * Day 5 coding challenge (Update: NOT Required)
 * Final project ideas


 * Resources
 * Project Idea Assignment resources: some examples of APIs, datasets, and research questions to help you complete your Final Project Idea Assignment.
 * JSON formatter and validator: (useful for examining the structure of large/complex JSON blobs)
 * Hurl.it API sandbox: like the Wikipedia API sandbox, but can query many more APIs!
 * Two video lectures by Tommy Guy and Mako Hill, which covers most of the concepts from this week (as well as some useful review):
 * cdsw-au2015-lecture2-20151024.ogv
 * cdsw-au2015-lecture3-20151107.ogv

Week 6: May 2
Day 6 plan


 * Assignments due
 * Final project ideas (Turn in on Canvas)


 * Agenda
 * Panama Papers project — using Wikipedia APIs to gather information related to a breaking news event.
 * Click here to download the Panama Papers project


 * An interactive lecture introducing the concept of user-defined functions
 * Click here to download the lecture slides and code


 * Homework
 * Day 6 coding challenge (Required)


 * Resources
 * Click here to download the solutions to the week 5 coding challenges (the ones that weren't required)

Week 7: May 9
Day 7 plan
 * Assignments due


 * Day 6 coding challenges (Required)
 * Click here to download the week 6 challenge solutions


 * Agenda
 * Week 6 coding challenge solutions - Jonathan will review the solutions to the week 6 coding challenges and answer questions
 * Writing your own functions - Ray will give a lecture and lead us through a series of interactive exercises on creating custom functions to make our code simpler, clearer, and more flexible.
 * Click here to download the lecture slides and code


 * Working with location data - Jonathan will introduce some simple techniques for aggregating and visualizing datasets that have a location component, using a corpus of Seattle building permit data.
 * Click here to download the building permit code and data


 * Coding challenges
 * Day 7 coding challenges

Week 8: May 16
Day 8 plan
 * Assignments due
 * Final project proposal MOVED FROM WEEK 7
 * Agenda
 * Jupyter notebooks: intro and setup
 * paws.wmflabs.org
 * CLICK HERE to create a Wikipedia account
 * Jupyter intro notebook
 * Click here to download today's notebooks (I'm not 100% sure this will work)


 * Some new concepts:
 * Week 8 new concepts notebook


 * Functions II: walk through examples in Jupyter and terminal
 * Building permit notebook
 * Click here to download the wiki shows demo code
 * Wiki-shows notebook


 * Coding challenges
 * No coding challenges this week!


 * Resources
 * Data Science from Scratch, Joel Grus (O'Reilly)

Week 9: May 23
Day 9 plan


 * Agenda
 * We will review the requirements for the Final Presentation and Final Project assignments
 * We will review the course as a whole, and what we accomplished
 * We will go through 1-2 more examples of how to organize a program into functions
 * We will have an opportunity to review key Python concepts as a class
 * We will have plenty of time to ask questions about and work on final projects


 * Resources
 * What is 'if __name__ == "__main__"' for? (effbot.org)
 * What is use of main method in Python? Can someone explain with example? (Quora.com)


 * Free (mostly) Python 3 tutorials and reference works
 * Dive into Python3
 * Learn Python the Hard Way
 * Python-Course.EU
 * The Python Guru - Beginner's tutorial
 * GitBook Python 3 Basics Tutorial
 * WikiBooks Non-programmer's Python 3 tutorial
 * The Hitchhiker's Guide to Python (links to many different tutorials!)
 * DataQuest Data Analyst interactive course series
 * Python for Data Analysis (O'Reilly media book)

Week 10: June 3 (DATE CHANGE)
Please note that this class we will meet from 6pm to 9pm on Friday evening, rather than Monday evening, because of the Memorial Day holiday.


 * Assignments due
 * Final project presentation


 * Agenda
 * Final project presentations


 * Resources
 * one

Week 11: June 6
FINALS WEEK - NO CLASS


 * Assignments due
 * Final project report and code due by midnight on Wednesday, 6/8/2016