INFX 598i: Intro to Programming

INFX 598i: Intro to Programming


Just joining us? Start by doing the following:

  1. Fill out the intro survey
  2. Read through the course syllabus (this page) and the course policies
  3. Join the class Slack team! Feel free to say hello :)
  4. Read about the learning modules and then check out module 1 to set up your computer with required software.

Contact Information

Instructor Joel Ross
Email; Phone: (206) 685 1622
Office MGH 330C; Office hours: Mon/Wed 1:30p-3:30p, or by appointment

Reader Shrawan Sher,

Class meeting T/Th 8:30 am - 10:20 am (MGH 430)

Learning Modules (GitHub)

Q&A on Slack

Lecture Slides

Course Description

This course introduces fundamentals of computer programming as used for data science. It will provide a level of programming knowledge ("Programming 101") for graduate students who lack that background or who need a refresher. It will introduce programming concepts such as syntax, data referencing, control structures, functions, data structures, abstraction, and debugging, as well as development tools and technologies (such as the command-line and version control). The goal is to develop skills in algorithmic thinking, abstraction, and debugging. This course assumes no previous programming background, and is intended to act as a prepatory "on-ramp" for other technical INFX courses, particularly those focusing on data science and data visualization.

In short: the goal is to get you familiar with programming concepts and abstract thinking skills used in analyzing and visualizing data, so that you are better prepared for future courses and careers. We are here to support you in mastering the skills you need to improve.

Learning Objectives

After completing this course, students will be able to:

  • Navigate programming and scripting environments
  • Manage and organize computer code
  • Create computer scripts to analyze data and solve computational problems
  • Develop and implement abstract, algorithmic solutions for solving problems
  • Locate and resolve "bugs" in computer programs and procedures.
  • Manipulate basic programming data structures
  • Create and analyze program control flows
  • Efficiently model, interpret, and manipulate data
  • Programmatically generate data visualizations

Course Components


Class time is intended to provide an interactive environment for students to engage with both the material and one another. We will follow a mixed lecture/exercise format that allows students to experiment with techniques as they are introduced. It is an expectation that students are actively engaged in these activities, and assist their classmates when appropriate.

Technical Learning Modules

This course has a high expectation of independent learning. While core concepts will be discussed in lecture, you will be responsible for mastering some technical skills on your own. To facilitate your self-education, we have developed a series of learning modules which cover the necessary foundational skills to succeed in this course. While these will be discussed in lecture, you will be responsible for making sure you have the technical abilities you need to complete your assignments.


As with any skill, the best way to get better at programming is to practice—and this class will give you lots of opportunities to practice.

Students will complete a series of programming assignments that assess their progress throughout the course. Assignments will be a mix of focused "problem set"-like assignments to practice with particular concepts, and more open-ended "project"-like assignments to practice synthesizing these concepts. Following the "learn to learn" objective of the course, lectures and learning modules will provide the necessary background and practice that enables students to seek out solutions for the assignments—assignments will often require students to apply their skills beyond what was been explicitly covered in lecture! Assignments will include both individual and group assignments.

Find complete assignment details and due dates on the Assignments page.

Specific Rules and Policies

Course policies (including grading and late work policies) are on the Policies page.

Course Schedule

This course will cover topics following the approximate schedule below (subject to change):

Week Topic Learning Modules
1 Managing Computers & Code: Command-Line & Version control 0 – 4
2 Introduction to Python: Variables & Functions 5, 6
3 Program Flow: Logic & Loops 7, 8
4 Fundamental Data Structures: Lists, Dicts, & Tuples 9, 10
5 Processing Data: Functional Programming & Algorithms
6 Accessing Data APIs
7 Organizing Programs: Branches & Objects
8 Data Wrangling with pandas
9 Other Languages: JavaScript
10 Visualizing with D3

Course Summary:

Date Details
CC Attribution Non-Commercial Share Alike This course content is offered under a CC Attribution Non-Commercial Share Alike license. Content in this course can be considered under this license unless otherwise noted.