Intermediate Data Programming

University of Washington, Spring 2021

This is CSE 163 Spring 2021 at the University of Washington. Looking for Summer 2021?

The world has become data-driven. Domain scientists and industry increasingly rely on data analysis to drive innovation and discovery; this reliance on data is not only restricted to science or business, but also is crucial to those in government, public policy, and those wanting to be informed citizens. As the size of data continues to grow, everyone will need to use powerful tools to work with that data.

In this course, students will learn:

  1. More advanced programming concepts including how to compose programs with multiple modules.
  2. How to work with different types of data: tabular data, text data, images data, geospatial data, etc.
  3. Data science tools and libraries including Jupyter Notebook, scikit-image, scikit-learn, and Pandas.
  4. Data programming analysis skills including algorithmic complexity and memory management.

This course is designed to have students from:

CSE 160: Data Programming
Know control structures, file I/O, and data structures in Python. Your first weeks will be a review.
CSE 142: Computer Programming I
Know control structures, file I/O, and arrays in Java. Your first weeks will focus on learning these concepts in Python.
CSE 143: Computer Programming II (and beyond)
Know data structures, objects, and recursion in Java. Course concepts will complement and expand your programming skills.

Deliberate practice

In a traditional classroom, you attend class where a teacher lectures until the end of the session. Then, you go home and do the hard work of actually applying course concepts toward practice problems or assignments. Finally, you take an exam to show what you know.

Research shows that this doesn’t work for science, engineering, and mathematics.1 Think of learning any science, engineering, or mathematics as learning how to ride a bike. Quite a few people know how to ride a bike. How many of them learned how to ride a bike through traditional lecture three times a week and a quiz section once a week? Probably no one—learning to ride a bike requires riding an actual bike! Learning computer science likewise requires deliberate practice.

  1. Sustained motivation.
  2. Tasks that build on prior knowledge.
  3. Immediate, personalized feedback on tasks.
  4. Repetition of all of the above.

Deliberate practice is about taking on the right challenge with the right support. We’ll learn new concepts each week in the following manner.

  1. Before each MWF class meeting, prepare for learning by completing the pre-class preparation.
  2. During each MWF class meeting and Th quiz section, collaborate on the in-class guided practice.
  3. After Th quiz section, complete the checkpoint assessment individually. Ask for help in office hours!

The pre-class preparation, guided practice, and checkpoints develop your data programming skills by focusing on many small and highly-similar problems. To apply your learning to larger questions and datasets, a take-home assessment is assigned at the end of each week.

The end-of-course project is your opportunity to create something new that you want to share with the rest of the world. The nature of your project is entirely up to you so long as it is sufficiently complex. All that we ask is that you build something of interest to you, that you solve an actual problem, that you impact campus, or that you change the world. Strive to create something that outlives this course!

Community of learners

This course is more than concepts and learning objectives. We are a community of learners defined by how we conduct ourselves, how we communicate with each other, and how we care about each other. We believe everyone can succeed and grow as a whole human being together in this course. But to realize this vision, we’ll need to work together to act compassionately and treat all others as we wish to be treated ourselves: to think first of others, their benefit, their well-being, and their learning. We are only as good as we are to each other.

In western tradition, learning is for individual gain to help you achieve your goals. This is not necessarily a bad thing, but if the only reason we bother to learn things is to help ourselves, then why should we bother collaborating with others? If deliberate practice concerns how learning works, we should also consider the more fundamental question: why learn at all?2

Cartesian Dualism
I think, therefore I am
Mind/body separation
Learning for individual gain
Measures intelligence against a single norm

In the real world, it’s hard to say if an answer is right or wrong. It’s only when we define the problem in a certain way that we limit our thinking to certain kinds of answers. An answer is only ever wrong because the question was designed to accept only a single—oftentimes predetermined—answer. We recognize the values contradiction in this approach that views learning as the reproduction of certain forms of valuable knowledge.

Not all traditions regard learning for individual gain. Inlak’esh is a Mayan culture that regards learning for collective benefit.

I am you and you are me
Body/mind/spirit = integrated
Learning for collective benefit
Values multiple ways of knowing

Science and engineering knowledge alone can’t answer many of the most challenging questions of our time. Collaboration is not just desirable but rather necessary to improve society. Therefore, learning can’t just be about individual gain. Learning must also be about connecting and better understanding each other to help everyone grow. The following specific actions and behaviors we pledge to do in order to encourage compassion toward each other in this class.


We welcome students of all backgrounds. The computer science and computer engineering industries have significant lack of diversity. This is due to a lack of sufficient past efforts by the field toward even greater diversity, equity, and inclusion. The Allen School seeks to create a more diverse, inclusive, and equitable environment for our community and our field. You should expect and demand to be treated by your classmates and the course staff with respect. If any incident occurs that challenges this commitment to a supportive, diverse, inclusive, and equitable environment, please let the instructor know so the issue can be addressed. Should you feel uncomfortable bringing up an issue with the instructor directly, meet our advisors during quick questions or contact the College of Engineering.

We recognize that students come from varied backgrounds and can have widely-varying circumstances affect them during their time in the course. Please do not hesitate to contact the instructors by appointment or via private discussion post. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances include work-school balance, familial responsibilities, religious observations, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.

It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law. If you have already established accommodations with Disability Resources for Students (DRS), activate your accommodations via myDRS so we can discuss how they will be implemented in this course. If you have a temporary health condition or permanent disability that requires accommodations, contact DRS directly to set up an Access Plan.

Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.


Checkpoints and final project components are graded Satisfactory (S) or Not yet (N). Assessments are graded Exemplary (E), Satisfactory (S), Not yet (N), or Unassessable (U) across these 4 alignments.

Does the input and output functionality of the program meet the specification?
Does the code effectively and appropriately use the Python language or libraries?
Does the code meet the code quality guidelines and documentation standards?
Does the unit testing suite ensure the correctness of the code across inputs?
Does the writeup demonstrate critical thinking about data and modeling?

An important part of learning is about improving your work. All assessments can be revised and resubmitted to demonstrate mastery of the learning objectives. Each revision counts towards a weekly resubmission limit so it’s best to revise and resubmit assessments sooner rather than later.

Assessment submission
A best-effort initial submission for each assessment must be made by its 11:59pm Wednesday due date Anywhere on Earth. Up to 1 additional assessment may be resubmitted each week. Each assessment undergoes code review, which takes one week to return.

Your final grade in the course is determined by the quantity of work submitted. All criteria for a grade must be met in order to earn that grade. These grade criteria capture the learning objectives in the course. Intermediate grades will be determined at the instructor’s discretion.

S on 6 checkpoints.
S or better on 7 alignments across Startup and Primer.
S or better on 15 alignments across Pokemon, Education, Search, and Mapping including E on 12 of these alignments.
6 on the project.
S on 6 checkpoints.
S or better on 7 alignments across Startup and Primer.
S or better on 15 alignments across Pokemon, Education, Search, and Mapping including E on 4 of these alignments.
No project.
S on 4 checkpoints.
S or better on 5 alignments across Startup and Primer.
S or better on 11 alignments across Pokemon, Education, Search, and Mapping.
No project.

Academic honesty

Learning cooperatively is different from sharing answers.

We encourage discussion and collaboration on pre-class preparation and in-class guided practice. The purpose of each lesson is for you to learn the course material, not to prove that you already know it. Working with a study group and discussing problem solving approaches is an effective way to learn. You can expect to receive substantial assistance from other students in class and the course staff.

In contrast, checkpoint assessments and take-home assessments are not only for learning but also for evaluating mastery of learning objectives. You may discuss general ideas of how to approach an assessment but never specific details about the code to write. Any help you receive from or provide to classmates should be limited and should never involve details of how to code a solution.

Discussing examples from the lessons. Lessons are designed to prepare students for assessments.
Working with a TA to improve your understanding of a task and resolve a particular problem.
Communicating in natural language with other students on the course forum without sharing code.
Looking at someone else’s assessment solution in any form for any reason at any time ever.
Giving or receiving a walkthrough or completed solution for an assessment from anyone else.
Posting solution code to any assessment in a public place even after the course is over.

If you are unsure if you are following the policy, ask.

There are many resources for helping students learn in this course. Reach out to the course staff for assistance on assessments. Since learning takes time, all assessments can be resubmitted to demonstrate improved mastery. Instead of turning to forbidden resources, it’s a much better idea to submit something not yet complete and revise your work later.

Regret clause
If you submit work that is in violation of the academic honesty policy but bring it to the attention of the instructor within 72 hours, you may resubmit your own work without further consequence except in cases of repeated misconduct or abuse.

If you are retaking the course, you may resubmit a previous solution unless that program was involved in an academic misconduct case. If misconduct was found, you must write a new version of that program.

A parting thought

Grades and penalties aren’t the purpose of this course. We really just want you to learn. The entire staff is very excited to be teaching everyone this quarter and we’re looking forward to meeting everyone in this amazing learning community. We want all of you to be successful here. Welcome to CSE 163!

  1. Scott Freeman, Sarah L. Eddy, Miles McDonough, Michelle K. Smith, Nnadozie Okoroafor, Hannah Jordt, and Mary Pat Wenderoth. 2014. Active learning increases student performance in science, engineering, and mathematics

  2. Jess Cleeves. 2020. Can Learning be Fair?: Explicit Acknowledgment of Structural Oppression as a Teaching Tool

Table of contents