Intermediate Data Programming
University of Washington, Winter 2025
Alessia S Fitz Gibbon
she/her
Hi there! I absolutely love teaching and helping people learn, and have taught to a wide range of people. Off campus, you’ll find me cuddling with my pets, playing games with my partner and friends, or walking around Greenlake! I always enjoy a good conversation, so come by and say hi!
Kevin Lin
he/him
If I’m not working on this class, you can probably find me looking around for travel and restaurant deals, experiencing the latest indie movies at SIFF cinemas, introducing guests to our underwater neighbors at the Seattle Aquarium, or designing new methods to empower students through education.
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:
- How to work with different types of data such as text, tabular data, images, and geospatial data.
- Data science tools and libraries such as Jupyter Notebook, pandas, seaborn, and scikit-learn.
- Software engineering skills such as data structures, object composition, and runtime analysis.
- Information representation skills such as visualization principles, 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.
This course is divided into 5 modules: Python, Pandas, Software Engineering, Applications, and Project. Assignments are often due on Wednesdays and Thursdays. Most coursework is designed to be completed in JupyterHub. However, materials are also available for working outside JupyterHub.
Search to find relevant course materials.
Python
Python Fundamentals
- Jan 6
- Welcome
- Jan 8
- Control Structures and Exit Ticket
- Jan 9
- Section Python Fundamentals
- Slides Section 1
- Jan 10
- Strings and Lists
Data Structures and Files
- Jan 13
- File Processing
- Jan 15
- Data Structures and Exit Ticket
- AssessmentPrimer due Jan 22, reply by Feb 4
- Jan 16
- Section Data Structures and Files
- Slides Section 2
- Jan 17
- CSV Data
Pandas
Pandas Fundamentals
- Jan 22
- Data Frames and Exit Ticket
- AssessmentPokemon due Jan 29, reply by Feb 11
- Jan 23
- SectionPandas Fundamentals
- Jan 24
- Groupby and Indexing
Information Representation
- Jan 27
- Data Visualization
- Jan 29
- Data Settings and Exit Ticket
- AssessmentEducation due Feb 5, reply by Feb 18
- Jan 30
- SectionInformation Representation and Project Ideation
- Jan 31
- Objects
Software Engineering
Object-Oriented Programming
- Feb 3
- Objects (continued)
- Feb 5
- Objects (conclusion) and Exit Ticket
- AssessmentSearch due Feb 12, reply by Feb 25
- Feb 6
- InterviewEducation during section
- Feb 7
- Asymptotic Analysis
Machine Learning
- Feb 10
- Learning Algorithms
- Feb 12
- Model Evaluation and Exit Ticket
- ProjectProposal due Feb 19
- Feb 13
- SectionMachine Learning and Project Planning
- Feb 14
- Model Evaluation (continued)
Applications
Geospatial Data
- Feb 19
- Geospatial Data Frames and Exit Ticket
- AssessmentMapping by Feb 26, reply by Mar 11
- Feb 20
- SectionGeospatial Data
- Feb 21
- Dissolve, Intersect, and Join
Computer Vision
- Feb 24
- NumPy
- Feb 26
- Convolutions and Exit Ticket
- Feb 27
- InterviewMapping during section
- Feb 28
- Neural Networks
Project
Language Models
- Mar 3
- Neural Networks (continued)
- Mar 5
- Language Models and Exit Ticket
- Mar 6
- ProjectCheck-in during section
- Mar 7
- Large Language Models
Conclusion
- Mar 10
- The End of Knowledge
- Mar 12
- TA Panel and Exit Ticket
- Mar 13
- ProjectCheck-in during section
- Mar 14
- 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 computing education.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.
- 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 post your solutions publicly. Most importantly, don’t deprive yourself or others of the learning opportunities that we’ve created in this course.
- 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 post your solutions publicly. Most importantly, don’t deprive yourself or others of the learning opportunities that we’ve created in this course.
How does learning occur?
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 Learning skills like software engineering and algorithm analysis 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.
- Before lecture, preview the notebook and ponder nuances that might be raised in class.
- Optionally, in Ed Discussion, write your questions and reflect on what you see.
- During lecture, collaboratively learn and support each other on the notebook coding activities.
- In PollEverywhere, participate in the practice questions and random call activities.
- If you can’t make a lecture, submit a lecture absence and watch the Panopto recording.
- After lecture on Wednesdays, complete the exit ticket to prepare for the upcoming section.
- In Canvas, submit your answers to the exit ticket before attending your section.
- During Section on Thursdays, practice appyling and explaining what you learned each week.
- Sections on Thursday will extend the exit ticket and prepare you for code interviews.
- On Interview weeks, complete an in-person code interview during section on Thursday.
- If you can’t make an interview, make-ups will take place in-person during final exams week.
- On Interview weeks, complete an in-person code interview during section on Thursday.
- Show what you learned by completing the individual assessments and presenting a team project.
- In Canvas, submit a PDF printout of your Assessment notebook and wait for a TA to review it.
- After you receive your TA code review, answer the questions by writing a submission comment.
- In Canvas, submit a final Project of your own choice and present it as part of your portfolio.
- After you receive your TA code review, answer the questions by writing a submission comment.
Code interviews are a key standardized assessment in this course. Rather than treat your submitted program code as the final artifact for evaluation, it is instead a starting point for a conversation that demonstrates your programming fluencies such as code writing, code reading, code debugging, and code communication skills. Communicating your ideas and explaining your decision-making is important in this course. But we know that live discussions during class may not be accessible for everyone and we would be happy to work with you to design accommodations that would allow you to communicate your programming fluencies in an accessible format for you.
The purpose of all these activities 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. Regardless of how much help you receive from others, in order to pass the code interviews, you’ll need to be deeply familiar with all the code that you write. Do not deprive yourself or others of learning opportunities in this course.
- 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.
- Permitted with caution
- Working alongside one or more other people on an assessment.
- Sharing or generating small snippets of code that are not specific to any part of an assessment.
- Prohibited
- Obtaining or generating solutions to any part of an assessment in any form for any reason.
- Giving, receiving, or generating a walkthrough to an assessment from anyone or anything else.
- Posting solutions to an assessment in a public place even after the course is over.
- Giving, receiving, or generating a walkthrough to an assessment from anyone or anything else.
All sources that you consult in completion of your work must be cited and documented, including course materials, lectures, and sections. Assignment completeness will depend on cited sources matching the submitted work.
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
Monday
- Lecture9:30 AM–10:30 AMCSE2 G20
- Lecture12:30 PM–1:30 PMECE 125
- Office Hours3:30 PM–5:30 PMDEN 213
Tuesday
- Office Hours10:30 AM–12:30 PMSMI 107
- Office Hours12:30 PM–2:30 PMDEN 213
- Office Hours2:30 PM–4:30 PMLOW 220
Wednesday
- Lecture9:30 AM–10:30 AMCSE2 G20
- Office Hours10:30 AM–12:30 PMLOW 217
- Lecture12:30 PM–1:30 PMECE 125
- Office Hours1:30 PM–3:30 PMPCAR 395
- Office Hours3:30 PM–5:30 PMECE 031
Thursday
- Sections8:30 AM–4:30 PM
- Office Hours2:30 PM–4:30 PMSAV 130
Friday
- Lecture9:30 AM–10:30 AMCSE2 G20
- Lecture12:30 PM–1:30 PMECE 125
- Office Hours1:30 PM–3:30 PMPCAR 297
How is this course graded?
Grading in this course emphasizes both completion and quality trend of coursework received for formal evaluation. Completion is tracked primarily through Canvas module requirements, while quality trend is tracked primarily through the Canvas learning mastery gradebook. Each assessment contributes one alignment to the listed learning outcomes. With the exception of Testing and Writeup, a quality trend is established based on the 3 best alignments for each learning outcome from the first 4 assessments and the alignment for each learning outcome from the final assessment, Mapping.
- 1.0 or greater
- Completion of Python and Pandas modules.
- 2.0 or greater
- Completion of Python, Pandas, and Software Engineering modules.
- 3.0 or greater
- Completion of Python, Pandas, Software Engineering, and Applications modules.
- Satisfactory quality trend for all learning outcomes.
- 4.0
- Completion of Python, Pandas, Software Engineering, and Applications modules.
- Exemplary quality trend for all learning outcomes.
- Highest marks in Project module.
- Exemplary quality trend for all learning outcomes.
Grading in this course emphasizes learning by evaluating quality as a trend over time rather than as a fixed score. With the exception of the Project, individual assignment scores do not directly feed into final grades. In Canvas, quality trend is computed using a decaying average. This formula makes several mathematically convenient but ultimately faulty assumptions, such as treating scores as equally distant numbers and that each assessment is equally important. Final grading will address these assumptions and more.
Evaluating Assessment Approaches in Intermediate Data Programming
You are being asked to participate in a research study to find out more about how assessment approaches affect the student experience in an undergraduate data programming courses. You have been asked to participate in this study because you are a student in a class that is being studied or used as a control. The purpose of this study is to create knowledge that has the potential to improve the educational experience for students at the University of Washington and beyond.
- What will you be asked to do?
- Your data from this class including surveys/evaluations, coursework, and course forum discussions may be analyzed. Your participation involves only agreeing to let us use your data in our analysis. You will not be required to do anything beyond normal educational practice.
- There may be additional optional opportunities to participate in follow-up interviews or focus group discussions. These are not required, and details will be provided when they arise.
- What will happen to the information you provide?
- Data from participants will be retained only for research purposes and stored using codes that provide a degree of confidentiality. Your instructor will not know whether you are participating in this study until after final grades have been posted.
- What can you do if you want more information?
- Talk to the study team. Kevin Lin is the lead researcher at the University of Washington for this study and can be contacted at kevinl@cs.uw.edu.
- Talk to someone else. If you want to talk with someone who is not part of the study team about the study, your rights as a research subject, or to report problems or complaints about the study, contact the UW Human Subjects Division at hsdinfo@uw.edu or 206-543-0098.
- What are my options to participate?
- By default, you will be included in this study. No additional actions are required to participate.
- Participation in this research, however, is optional. You may withdraw at any time without penalty by contacting Suhas Kannam at ksuhas16@uw.edu.
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. ↩
Explore CSE 163
- Staff - All the teaching and learning assistants.
- Style Guide - Python style conventions for this course.