Link Search Menu Expand Document


Table of contents

  1. Values
  2. Deliberate practice
  3. Academic honesty
  4. Grading
  5. Access and accommodations
  6. Extenuating circumstances
  7. Inclusive community

Computer science is the study of how our ideas can be automated and amplified with computers. Computation is distinctly sociological: computation is defined by humans for humans, so in turn computation defines how we experience life.

In CSE 143, we will learn how to write apps that use data to support everyday life, to answer questions about the world around us, and to make decisions that affect (and oftentimes reinforce) social hierarchies and power structures. By the end of the course, you will be able to:

  1. Define externally correct and internally correct programs within larger software systems.
  2. Select and apply abstract data types to solve specified problems by managing program state.
  3. Compare tradeoffs to select the appropriate implementation for a program or abstract data type.
  4. Design and modify data structures capable of insertion, deletion, search, and related operations.
  5. Trace through and predict the behavior of programs involving reference data types and recursion.
  6. Apply functional decomposition and recursion to break down problems into subproblems.

CSE 143 is organized around 7 applications of computing, a group project of your own choosing that applies programming with data structures, and a video problem solving portfolio where you teach these programming skills to others.

Administrative questions
Pim Lustig
CSE 142 or equivalent
Optional textbook
Reges/Stepp, Building Java Programs (5th Edition)


CSE 143 advances one particular set of values about computing. In CSE 143:

Algorithms are more important than data.
Compare to CSE 163: Intermediate Data Programming.
Technical questions are more important than creative questions.
Compare to CSE 154: Web Programming.
Programming solutions are more important than the problems they solve.
Compare to CSE 180: Introduction to Data Science.

But this course is about more than just programming ideas. 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. I 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.

The following behaviors serve as first steps towards creating a compassionate community.

  • Listen with intention to understand first and forming 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.

Deliberate practice

Learning computer programming 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 programming concepts each week in the following manner.

  1. Prepare for learning before class by completing the pre-class preparation.
  2. Collaborate and communicate with others in class through guided practice.
  3. Master the checkpoint assessment (and optional challenge assessment).
  4. Solve a real problem by mastering the take-home assessment.

During the last couple weeks, you’ll also work on a final project of your team’s choosing and produce a video problem-solving portfolio that teaches other students how to solve programming problems.

Learning cooperatively

Collaboration improves the effectiveness of deliberate practice. With the exception of assessments, we encourage you to discuss course activities with your friends and classmates as you are working on them. You will definitely learn more in this class if you work with others than if you do not. If you are helping another student, don’t just tell them the answer; they will learn very little and run into trouble on assessments. Instead, try to guide them toward discovering the solution on their own. Practice is most effective when it builds on what we already know; feedback is most helpful when it addresses specific areas for improvement.

In addition to collaborating with other students, the course staff are here to personalized feedback. Your teaching assistant (TA) is your mentor and guide to the course. Your TA can help you get the most out of the class and achieve the highest possible understanding of course concepts.

Academic honesty

Learning cooperatively is different from sharing answers.

You are encouraged to discuss and collaborate on the lessons with other students. Working with a study group and discussing your problem solving approach is a particularly effective way to learn. The purpose of each lesson is for you to learn the course material, not to prove that you already know it. Therefore, you can expect to receive substantial assistance from the course staff.

Collaboration is not allowed on assessments. 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. Each lesson is designed to prepare students for assessments.
Talking to a TA to learn how to solve specific bugs and improve your understanding of the problem.
Posting questions about problem specifications to the course forum.
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.


Checkpoints, challenges, the final project, and the video problem solving portfolio are all graded on a Satisfactory (S) or Not yet (N) grading scale. Take-home assessments are graded on the ESNU scale.

Exemplary (E)
Meets all external correctness criteria and all internal correctness criteria.
Satisfactory (S)
Meets all external correctness criteria but could improve on internal correctness.
Not yet (N)
Does not meet all external correctness criteria but nonetheless shows some understanding.
Unassessable (U)
Not enough information to determine whether there is understanding of the concepts.

An important part of learning is revising your work. All take-home assessments can be revised and resubmitted to demonstrate mastery of the learning objectives. While there are no limits on the number of revisions allowed per assessment, each revision counts towards a weekly resubmission limit so it’s best to revise and resubmit assessments sooner rather than later.

Take-home assessment submissions
A best-effort initial submission for each take-home assessment must be made by its Thursday 11:59pm due date Anywhere on Earth. Up to one (1) additional assessment may be resubmitted each week. Each take-home assessment undergoes code review, which takes one or two weeks to return.

Your final grade in the course is determined by the quality and quantity of work submitted.

S or better on all 7 take-home assessments, including at least 6 E’s.
S on all 6 checkpoints and all 6 challenges.
S on a challenge-level problem solving portfolio.
S on the final project.
S or better on all 7 take-home assessments, including at least 2 E’s.
S on all 6 checkpoints and at least 2 challenges.
S on a checkpoint-level problem solving portfolio.
S on the final project.
S or better on at least 6 take-home assessments. (No E’s required.)
S on all 6 checkpoints. (No challenges required.)
S on a checkpoint-level problem solving portfolio.
Final project not required.
S or better on at least 2 take-home assessments.
S on at least 3 checkpoints.
Problem solving portfolio not required.
Final project not required.

All criteria for a grade must be met in order to earn that grade. These grade criteria capture the learning objectives in the course, so falling short in any area may result in a lower grade determined at the instructor’s discretion.

Access and accommodations

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 not yet established services through DRS, but have a temporary health condition or permanent disability that requires accommodations (conditions include but not limited to; mental health, attention-related, learning, vision, hearing, physical or health impacts), contact DRS directly to set up an Access Plan. DRS facilitates the interactive process that establishes reasonable accommodations.

Extenuating circumstances

We recognize that our students come from varied backgrounds and can have widely-varying circumstances. If you have any unforeseen or extenuating circumstances that arise during the course, do not hesitate to contact the instructor by appointment, via email, or private post to discuss your situation. 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.

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.

Inclusive community

This course welcomes all 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, submit anonymous feedback or contact the Office of the Ombud.