Intermediate Data Programming
University of Washington, Spring 2023
This is CSE 163 Spring 2023 at the University of Washington. Looking for Summer 2023?
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:
- More advanced programming concepts including how to compose programs with multiple modules.
- How to work with different types of data: tabular data, text data, image data, geospatial data, etc.
- Data science tools and libraries including Jupyter Notebook, scikit-image, scikit-learn, and Pandas.
- Software engineering skills including asymptotic analysis, data settings, and data ethics.
This course is designed to support students who have completed:
- CSE 160: Data Programming
- Know control structures, file I/O, and data structures in Python. Your first weeks will be a review.
- CSE 122: Introduction to Computer Programming II
- Know control structures, file I/O, and data structures in Java. Your first weeks will focus on learning these concepts in Python.
What will you learn?
Python
Python Fundamentals
- 3/27
- Welcome
- 3/29
- Control Structures
- 3/30
- SecGetting Started
- 3/31
- Strings and Lists
- ChkPython Fundamentals
- AsmStartup
- ChkPython Fundamentals
Data Structures and Files
- 4/3
- File Processing
- 4/5
- Data Structures
- 4/6
- SecData Structures and Files
- 4/7
- CSV Data
- ChkData Structures and Files
- AsmPrimer
- ChkData Structures and Files
Pandas
Pandas Fundamentals
- 4/10
- Data Frames
- 4/12
- Groupby and Apply
- 4/13
- SecPandas Fundamentals
- 4/14
- Time Series
- ChkPandas Fundamentals
- AsmPokemon
- ChkPandas Fundamentals
Data Science Libraries
- 4/17
- Data Visualization
- 4/19
- Machine Learning
- 4/20
- SecData Science Libraries
- 4/21
- Model Evaluation
- ChkData Science Libraries
- AsmEducation
- ChkData Science Libraries
Software Engineering
Object-Oriented Programming
- 4/24
- Objects
- 4/26
- More Objects
- 4/27
- SecObject-Oriented Programming
- 4/28
- Search
- ChkObject-Oriented Programming
- AsmSearch
- ChkObject-Oriented Programming
Program Quality
- 5/1
- Asymptotic Analysis
- 5/3
- Data Settings
- 5/4
- SecProgram Quality
- 5/5
- Data Ethics
- PrjProject Proposal
Applications
Geospatial Data
- 5/8
- Geospatial Data
- 5/10
- Dissolve and Join
- 5/11
- SecGeospatial Data
- 5/12
- Indexes and Trees
- ChkGeospatial Data
- AsmMapping
- ChkGeospatial Data
Image Processing
- 5/15
- NumPy
- 5/17
- Convolutions
- 5/18
- SecImage Processing
- 5/19
- Neural Networks
- ChkImage Processing
Project
Case Studies
- 5/22
- Interactive Data Programs
- 5/24
- GPT in 60 Lines of NumPy
- 5/25
- SecProject
- 5/26
- Data Projects and Generative Programming
Conclusion
- 5/29
- Holiday
- 5/31
- Office Hours
- 6/1
- SecProject
- 6/2
- Next Steps
Why should we learn?
The education you receive in this course can help prepare you for programming jobs, but this isn’t the only purpose for learning computer science.1 Education is not only about yourself and your personal gain, but also about all of us and our capacity to live together as a community.
The University of Washington acknowledges the Coast Salish peoples of this land, the land which touches the shared waters of all tribes and bands within the Duwamish, Puyallup, Suquamish, Tulalip and Muckleshoot nations. Among the traditions of the Coast Salish peoples is a value for the connectedness between all living things and a recognition of the unique ways that each of us comes to know something.2
Modern education has the idea that we all need to know the same thing. At the end of the lesson, everyone will know the same thing. That’s why we have tests, that’s why we have quizzes, that’s why we have homework: to ensure we all know the same thing. And that’s powerful—that’s important—within a certain context.
But for native culture, the idea that each listener divines or finds their own answer, their own meaning, their own teaching from the story is equally powerful—that each person needs to be able to look at the world and define it for themselves within their culture and then also find a way to live in that world according to the teachings of their people in their culture.
Our course emphasizes the following values and policies.
- We are responsible for each others’ success
- Everyone has a right to feel like they belong in this course. We’ll need to act with compassion and caring to collaborate with each other. Although we will need more than just unexamined commitments to collaboration, listening, empathy, mindfulness, and caring,3 the following guidelines offer a starting point for ensuring compassion toward each other.4
- Listen with intention to understand first and form an opinion only after you fully understand.
- Take responsibility for the intended and unintended effects of your words and actions on others.
- Mindfully respond to others’ ideas by acknowledging the unique value of each contribution.
You should expect and demand to be treated by your classmates and teachers 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 everyone has unique circumstances
- Do not hesitate to contact the instructor by private discussion post or appointment. The sooner we are made aware of your circumstances, the more we can help. 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.
- 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.
- We believe everyone wants to learn
- Education is about shaping your identity as much as it is about learning things. In school, the consequences of making mistakes are relatively small. But the habits you form now—repeated over days, weeks, months, or years—determine who you will be in the future. Now is the best time to practice honest habits.
- We ask that you do not claim to be responsible for work that is not yours. When you receive substantial help from someone else, include a citation. Don’t request a copy of someone else’s work, don’t provide your work to another student, and don’t post your solutions publicly.
- Academic honesty reflects the trust (or the lack thereof) between students and teachers. We do our best to design the course in ways that ensure trust, but we know our systems are not perfect. If you submit work in violation of these policies but bring it to the attention of the instructor within 72 hours, you may resubmit your own work without further consequence. Rather than blame students, we want to fix or replace broken systems that compel students to lose trust.
- We ask that you do not claim to be responsible for work that is not yours. When you receive substantial help from someone else, include a citation. Don’t request a copy of someone else’s work, don’t provide your work to another student, and don’t post your solutions publicly.
How will you learn?
In a traditional classroom, you attend class while a teacher lectures until time is up. Then, you go home and do the important work of applying concepts toward practice problems or assignments on your own. Finally, you take an exam to show what you know.
Today, we know that there are more effective ways to learn science, engineering, and mathematics.5 Think of learning computer science as learning how to ride a bike. Quite a few people know how to ride a bike. But how many of them learned to ride a bike through 50 minutes of lecture three times a week? Probably no one—learning to ride a bike requires riding an actual bike!
Likewise, learning computer science requires deliberate practice: a learning cycle that starts with sustained motivation, then presents tasks that build on prior knowledge, and concludes with immediate, personalized feedback. Each module in the course will involve several different activities that are designed so that we can make the most of our class time together.
- On your own before class, prepare for learning.
- Lessons are designed to introduce all the concepts for the entire week’s classes.
- In Ed before class, complete the Lesson Preparation before class.
- During class, collaborate on the in-class guided practice.
- Class meetings are designed to deepen, complicate, and connect ideas across the course.
- At the end of each class, reflect on your learning and submit a Burning Question.
- On your own after class, practice applying what you learned.
- In Ed after class, demonstrate your learning by completing a weekly Checkpoint quiz.
- In Ed after class, demonstrate your learning by completing a weekly Assessment program.
Expect to spend 4 hours in class and 8 hours outside of class working on this course. Some weeks may require more or less time than other weeks. If you find the workload is significantly exceeding this expectation, talk to your TA.
- 8:30 AM
- 9:00 AM
- 9:30 AM
- 10:00 AM
- 10:30 AM
- 11:00 AM
- 11:30 AM
- 12:00 PM
- 12:30 PM
- 1:00 PM
- 1:30 PM
- 2:00 PM
- 2:30 PM
- 3:00 PM
- 3:30 PM
- 4:00 PM
- 4:30 PM
- 5:00 PM
- 5:30 PM
- 6:00 PM
- 6:30 PM
- 7:00 PM
Sunday
- Office Hours9:30 AM–11:30 AMZoom
Monday
- Office Hours1:30 PM–2:30 PMCSE 560 or Zoom
- Lecture3:30 PM–4:30 PMGUG 220
Tuesday
- Office Hours11:30 AM–5:30 PMMEB 234 or Zoom
Wednesday
- Lecture3:30 PM–4:30 PMGUG 220
- Office Hours5:30 PM–7:30 PMLOW 202 or Zoom
Thursday
- Sections8:30 AM–4:30 PM
- Office Hours1:30 PM–3:30 PMSAV 156 or Zoom
Friday
- Lecture3:30 PM–4:30 PMGUG 220
- Office Hours5:30 PM–7:30 PMLOW 202 or Zoom
The purpose of the lesson preparations, in-class guided practice, and checkpoints are for you to learn the course concepts, not to prove that you already know them. Working with a team and discussing problem solving approaches is an effective way to learn. You can expect to receive substantial assistance from other students and the course staff before, during, and after class.
In contrast, assessments are not only for learning but also for evaluating 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.
- Encouraged
- Discussing examples shown in class. These examples are part of the course’s learning materials.
- Working with a TA to improve your understanding of a task and resolve a particular problem.
- Communicating with other students without sharing code or exact details to reproduce a solution.
- Working with a TA to improve your understanding of a task and resolve a particular problem.
- Prohibited
- Looking at someone else’s checkpoint or assessment in any form for any reason at any time ever.
- Giving or receiving a walkthrough or solution to a checkpoint or assessment from anyone else.
- Posting solutions to a checkpoint or assessment in a public place even after the course is over.
- Giving or receiving a walkthrough or solution to a checkpoint or assessment from anyone else.
There are many resources for helping students learn in this course. Reach out to the course staff for assistance on checkpoints and assessments. Since learning takes time, all checkpoints and assessments can be resubmitted to proficiency with learning objectives. Instead of turning to prohibited resources, it’s a much better idea to submit something not yet complete and revise your work later.
How is this course graded?
Grading in this course encourages learning through deliberate practice by emphasizing revision and resubmission of work. All coursework is designed around feedback loops where you try something, get feedback, then try again. Grades are based on what you eventually learn through this process. Only the requirements listed under a Canvas module count toward your final grade.
- 1.0 or greater
- Completion of all requirements in the Python module.
- Completion of all requirements in the Pandas module.
- 2.0 or greater
- Completion of all requirements in the Python module.
- Completion of all requirements in the Pandas module.
- Completion of all requirements in the Software Engineering module.
- Completion of all requirements in the Applications module.
- Completion of all requirements in the Pandas module.
- 3.0 or greater
- Completion of all requirements in the Python module.
- Completion of all requirements in the Pandas module.
- Completion of all requirements in the Software Engineering module.
- Completion of all requirements in the Applications module.
- Completion of all requirements in the Project module.
- Completion of all requirements in the Pandas module.
- 4.0
- Completion of all requirements in the Python module.
- Highest marks across all work in the Pandas module.
- Highest marks across all work in the Software Engineering module.
- Highest marks across all work in the Applications module.
- Highest marks across all work in the Project module.
- Highest marks across all work in the Pandas module.
Mark Guzdial. 2021. Computer science was always supposed to be taught to everyone, and it wasn’t about getting a job. ↩
Roger Fernandes. 2012. Roger Fernandes: Artist/Storyteller/Educator. ↩
Brian Arao and Kristi Clemens. 2013. “From Safe Spaces to Brave Spaces: A New Way to Frame Dialogue Around Diversity and Social Justice” in The Art of Effective Facilitation. ↩
Asao B. Inoue. 2019. “Sample Charter for Compassion” in Labor-Based Grading Contracts: Building Equity and Inclusion in the Compassionate Writing Classroom. ↩
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. ↩
Table of contents
- Quality - How to assess and evaluate code quality.
- Staff - All the teaching and learning assistants.