Chapter 1: Welcome to the course!

Welcome to INFO-201, Technical Foundations of Informatics. This is a course at the University of Washington’s Information School, and these materials were co-developed by Michael Freeman and Joel Ross. The purpose of this course is to teach students the necessary technical skills to begin writing code to work with data. While these resources are built for students currently enrolled in the course, they have been structured to be an online resource for anyone hoping to learn to work with information using programmatic approaches.

1.1 Expectations

Given the ever-changing nature of the coding world, students will be responsible for independent learning, both in terms of managing their own pace, and seeking out new skills. These modules have been designed to provide an overview of core concepts necessary for success in the course.

1.2 Organization

This organization has a separate repository for each learning module. Each module contains the following:

  • A tutorial on the specified skill(s)
  • Links to supplementary learning materials
  • Exercises for practicing the skills

All exercises provide an instructional template, as well as the completed version of the exercise. More specifically, each learning module with exercises has both master and complete branches (more on this later). To view the complete branch on GitHub, you can easily use the UI to change branches:



You can also access the code on your computer by checking out the branch via your terminal (more on this in module-3):

# Clone your fork of the repository
git clone

# Checkout the `complete` branch:
git checkout complete

The complete branch of each repo has the completed exercises. While these were included for your benefit, I strongly suggest you complete exercises for topics that you aren’t completely comfortable with. Assignments will presume you have mastered the skills of corresponding modules.

1.3 Contributing

If you would like to contribute to this repository by adding an exercise, making an edit, or suggesting a new module, please create an issue, or make the change in a fork of this repository and submit a pull request. I expect these resources to be continually improving.