Under Construction. The course website for Autumn 2026 is still being finalized. Content and policies are subject to change.
Syllabus
CSE 160: Data Programming offers an introduction to programming focused on computation with data. You will learn to write small programs in the Python programming language to solve problems across a variety of domains, from the physical and social sciences to humanities, engineering, business and more. The skills you learn in this class are foundational to working with data; they are (and will continue to be) useful for many different majors and careers.
Table of Contents
About (Why Take CSE 160?)
The digital world runs on data, from internet text to stock trades to DNA sequences. The need to organize, store, transform, analyze and understand this data is ubiquitous across the sciences, engineering, business, policy, and even the humanities. These tasks require computer programs, whether programmed by humans or generated by AI. Yet the challenges of working with data—including managing scale, making decisions, and communicating insights—persist even if AI tools are capable of producing these programs. In the same way, the value of a course like CSE 160 goes beyond the ability to program in Python.
Therefore, the goals of CSE 160 are threefold:
- Learn to implement programs that operate on data
- Cultivate an understanding of data as a construct and a (complicated) reality
- Develop the context and competencies to make more effective use of available tools for working with data
By taking this course, you are equipping yourself with knowledge, know-how, and tools that you will apply to your own discipline in later coursework, and that will give you an advantage when working in a data-driven field in the future.
Course Information
Instructor: James Weichert (jpw@cs.washington.edu)
Enrollment Questions? Contact CSE Advising (ugrad-advisor@cs.washington.edu) directly. The instructor does not handle late enrollment and does not have an add code.
Prerequisites. There are no prerequisites for this course beyond high school math. In particular, CSE 160 does not assume any previous programming experience. If you have taken CSE 123 or CSE 143, you will not receive credit for taking CSE 160.
Questions? Make a post on Ed or email the instructor.
Course Components
Learning to program is challenging and takes time. Most of your programming skills will be developed not by watching someone else code and taking notes, but by trying things out yourself (which often involves getting stuck and figuring out how to get yourself un-stuck). As such, most of your time spent in CSE 160 will be spent tackling problems hands-on, both on paper and on a computer.
Lecture
‘Traditional’ lectures where new content is introduced will take place on Wednesdays and Fridays during class time: 12:30 - 1:20pm in KNE 120.
Lectures (Wednesday and Friday class periods) will be recorded and made available via Panopto.
Section
Discussion sections (also called “quiz sections”) are smaller, TA-run sessions where students work in groups on practice problems and review concepts just introduced in lecture. Discussion sections meet on Thursdays at the time you registered for.
For each week you participate (in-person) in your section, you will receive one practice point (each equivalent to 1% of your final grade).
Practice
Practing in low-stakes settings is an important part of the progression from encountering new concepts and skills in lecture to applying them to homework assignments and tests. This quarter, practice days will take place on Mondays during class time and will provide a structured opportunity to work through longer and more difficult programming tasks.
In contrast to lectures on Wednesdays and Fridays, Monday practice days will not be recorded. The purpose and benefit of attending practice days is in working through problems, whether on paper, on a computer, individually, or with peers. For each practice day you participate in, you will receive one practice point.
Most practice days will be accompanied by a practice assignment, available on JupyterHub and due by the end of the week. These formative assignments will consist of three programming problems. Correctly completing at least two of these problems will result in earning one practice point. We will endeavor to work through at least one of these problems in-class during each practice day. In other words, you can get a head-start on the practice assignment by coming to practice day classes!
Attendance at the corresponding practice day is not required to earn credit for submitting a practice assignment, and submitting the corresponding practice assignment is not required to earn credit for participating in a practice day. (See the next section for more details about practice points.)
Practice Points
In order to incentivize consistent engagement throughout the quarter, 15% of your final grade will be determined by the number of practice points you accumulate. Each practice point is worth 1% of your final grade, and you need 15 or more practice points (out of a total of 25 available points) to receive full credit for this grade category.
Practice points can be earned through the following activities:
- Participating in Monday practice days by submitting the daily practice worksheet (7 points available)
- Completing and submitting practice assignments with correct solutions for at least 2 of the 3 problems (6 points available)
- Participating in weekly discussion sections (10 points available)
- Attending office hours with a TA (1 point available) and/or instructor (1 point available)
Homework
Homework assignments will challenge you to apply the concepts you learn in class to create larger and more complex programs. These assignments are inspired by real-world data programming applications to biology, computer vision, machine learning, and more. Assignments instructions will be provided on the course website, and your programming will take place in JupyterHub before being submitted to Gradescope.
Submissions will be automatically checked by Gradescope against a suite of test cases to test the functionality of your assignment implementation. This means you will get immediate feedback (and scores) after submitting to Gradescope, which you can use to revise your work and resubmit as many times as you’d like before the assignment deadline. For the purpose of calculating your grade for the homework category, homework assignment scores of 90% or higher will be rounded to 100%.
Homework assignments may be (re)submitted up to one week after the deadline without penalty. Late (re)submissions beyond this point will not be accepted.
Quests
Three quests (quick tests or quiz/tests) will be used to assess your understanding of core programming concepts and ability to work with code without the help of external tools (like AI). Quests will take place on paper during Monday class time during weeks 4, 7, and 10. Quest dates are indicated on the course calendar.
The quest category is worth 40% of your final grade:
- Your two highest quest scores will each receive 15% weight
- Your lowest quest score will receive 10% weight
What happens if I miss a quest?
If you miss one quest, your grade for the quest category will be determined by the average of your two other quest scores. A subsequent missed quest will result in a score of 0 for that quest. You must take at least two of the four tests (quests or final exam) to receive credit for the course.Final Exam
The written final exam for the course will take place on Thursday, December 17th from 8:30am to 10:20am in KNE 120.
What happens if I miss the final exam?
If you miss the final exam and you have taken at least two of the quests, your exam grade will be determined by your lowest quest score. You must take at least two of the four tests (quests or final exam) to receive credit for the course.Grading
Final course grades will be calculated by weighting the scores for each of the following categories:
| Components | Percent of Final Grade |
|---|---|
| Practice Points | 15% |
| Homework Assignments | 25% |
| Quests | 40% |
| Final Exam | 20% |
Late Work and Resubmissions
Homework assignments may be (re)submitted up to one week after the deadline without penalty. Late (re)submissions beyond this point will not be accepted.
Practice assignments may not be submitted late.
Course Grades
CSE 160 is an introductory course designed for students from across campus without prior programming experience. Final grades are not ‘curved’, meaning that the only determinant of your grade is your achievement in the course.
How Is My Work Graded?
The purpose of grading is to provide consistent and understandable feedback on student work to help with learning and encourage continual improvement. The focus of manual grading by course staff will be on the quests and final exam, while practice and homework assignments will be autograded on Gradescope. However, we are happy to provide more detailed feedback on any assignment at any time via office hours or Ed.
“Autograding” involves procedurally checking submitted code against fixed (non-random) tests. Common autograder tests involve checking that the output provided by the submitted program matches the expected (correct) output for a given input.
Quests and the final exam are graded manually by course staff. For most programming questions, each student’s answer is graded individually against a pre-defined rubric. For shorter answers, we use Gradescope’s handwriting recognition algorithm to group like answers before manually assigning points to each unique answer. For all test questions, students have the opportunity to request a manual regrade if they believe the question’s rubric was incorrectly applied to their answer.
Resources
CSE 160 does not use a textbook. Instead, written concept guides will be posted on Ed each week, featuring further detail and interactive examples beyond what is including in lecture.
Course Tools
CSE 160 uses a handful of online tools for different components of the course, each of which is accessible via a UW NetID login and linked on the course website (important links are pinned in the top navigation bar). Canvas is not used in CSE 160.
JupyterHub
JupyterHub provides each student in CSE 160 with a web-based programming environment that includes the relevant assignment starter files. You can think of JupyterHub like a Google Drive for our code.
Gradescope
We use Gradescope for submitting and grading assignments and exams. Each assignment will have more details about what and how to submit to Gradescope.
EdStem
We use EdStem (also called “Ed”) for course discussion. Almost all questions about course content, assignments, or logistics should be posted here. The Ed board is monitored frequently by course staff.
Academic Integrity
Programming and working with data are rarely individual endeavors; they require significant collaboration in the design, development, testing, evaluation, and deployment of software. Moreover, the emergence of AI code-writing tools is challenging conventional notions about the role of programmers in writing (lots of) code. However, the effective use of these tools still requires a foundational understanding of core programming and data fundamentals. As first-time data programmers, you still need to learn and practice using these ‘building blocks’ yourself.
The goal of CSE 160 is to cultivate and assess your understanding of core programming concepts and your ability to apply this understanding to tackle a variety of problems. As such, grading for the course focuses on demonstrated competency in proctored quests and the final exam, without the use of external tools.
The path to success in CSE 160 involves learning to code, and can’t be circumvented by offloading your learning to AI.
Collaboration
In your work beyond this course, you will find yourself needing to work and communicate with colleagues and stakeholders. Along your path to learning to program, collaboration with peers in CSE 160 is encouraged, within the following context:
- Practice assignments may be worked on with peers (in-class during practice days and beyond), but students must write the code they submit themselves.
- Homework assignments are individual assignments and all work must be completed individually. Sharing homework code is prohibited.
- Students may discuss approaches to homework problems at a high-level, without sharing code or pseudocode.
- Students may share and discuss details of their homework implementation with course staff during office hours or via a private post on Ed.
- Quests and the final exam are individual assessments for which collaboration and the use of external sources or tools are prohibited.
All collaboration and external sources must be acknowledged on homework assignment submissions (more details will be provided in the instructions for each homework assignment). Failure to acknowledge collaboration and/or external sources constitutes academic misconduct.
AI Use
The use of AI tools (e.g. UW Purple, ChatGPT, Claude, Gemini, DeepSeek) is permitted with caution when working on homework assignments to clarify concepts and understand or debug code. Copying or generating AI code for homework assignments is prohibited. All tools and souces must be cited and AI use must be accompanied by a short AI usage reflection.
Keep in mind that the use of AI is by no means required to succeed on the homework assignments, in CSE 160, or as someone who works with data. Deciding to not use AI is a valid choice to make, in programming and beyond.
If you get stuck when working on an assignment, consider stopping by office hours, posting on Ed, or connecting with a classmate!
Penalty
All suspected violations of course policies will be reported to the office of Community Standards & Student Conduct (CSSC) for formal investigation. Any student work found by CSSC to be in violation of course policies will receive a grade of 0. Repeated violation of course policies across two or more assignments will result a grade of 0.0 for the course.
Support
Encountering challenges is a fundamental learning experience, so having questions or getting stuck is entirely expected. Likewise, figuring out how to get your questions answered and get yourself unstuck is part of the learning process. James and the course staff are here to support you through that process!
Office hours, the Ed discussion board, and your peers are all great first stops when you feel stuck or need support.
Getting Help
At the same time, it’s important to separate the productive challenges that are part of the learning process from unproductive struggle due to factors outside of your control or an unsupportive learning environment. Our ultimate goal as a course staff is to support you with an environment that enables you to be successful, so don’t hesitate to reach out!
If you have any extenuating circumstances (including familial responsibilities, health concerns, etc.), please do not hesitate to contact the course staff (via private Ed message) or James (jpw@cs.washington.edu) directly to discuss your situation or concerns.
Likewise, all students are entitled to a respectful and inclusive environment that is conducive to learning. If at any time you are made to feel uncomfortable, disrespected, or excluded (by course staff, other students, or anyone else), please reach out to James (jpw@cs.washington.edu) directly. If you prefer not to speak with course staff, you may consider submitting anonymous feedback via the CSE website or contacting the UW Office of the Ombud.
Disability Accommodations
Your experience in this class should not be affected by any disabilities that you may have. The Disability Resources for Students (DRS) office can help you establish accommodations with the course staff.
If you have already established accommodations with DRS, please communicate your approved accommodations with James (jpw@cs.washington.edu) at your earliest convenience so we can discuss your needs in this course.
If you have not yet established services through DRS, but have a temporary health condition or permanent disability that requires accommodations (including but not limited to mental health, attention-related, learning, vision, hearing, physical or health impacts), you are welcome to contact DRS. DRS offers resources and coordinates reasonable accommodations for students with disabilities and/or temporary health conditions.
Reasonable accommodations are established through an interactive process between you, your instructor(s) and DRS. It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law.
Religious Accommodations
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 on the UW registrar’s website. Accommodations must be requested within the first two weeks of the quarter using the Religious Accommodations Request form.