Skip to main content Link (external link)

Data Structures and Algorithms

University of Washington, Autumn 2022

Husky Maps is a web app for mapping the world, searching for places, and navigating around Seattle. All these features are powered by the sociotechnical infrastructure of data structures and algorithms, programming abstractions designed by software engineers to represent data and automate processes. In CSE 143, you learned how to implement specifications by writing Java programs that used data structures to solve problems. In CSE 373, you’ll learn how to answer the why question: Why did we choose to write the specification that way?

There are many decisions to make when designing a software system, and many of these decisions have significant consequences on qualities of a system. In this course, we’ll focus on learning data structures as implementations of abstract data types. An abstract data type describes what you can do with a data type, but not how the data type is implemented; a data structure provides both a description of functionality and a specific implementation of functionality. As a cultural idea that took hold in the 1970s, abstraction enabled computer scientists to think of their algorithms less as custom solutions made from scratch and more as templates adapted to address a particular problem.

Data Structures and Algorithms presents a selection of these cultural ideas in a way intended to help you further develop, refine, and communicate with other computational professionals. This 10-week course is organized around four 2-week historical case study projects and a final portfolio. By the end of the course, you’ll have retraced the history of invention for 4 abstract data types, 12 implementations of them, and 7 real-world problems that they address:

  1. Deque data structures for browsing history.
  2. Autocomplete data structures and algorithms for search suggestions and DNA indexing.
  3. Priority queue data structures for content moderation and shortest paths.
  4. Shortest paths and graph data structures for seam carving and navigation directions.
  5. Portfolio assembling all of your work throughout the quarter.

Consent to Participate in Educational Research

Evaluating Approaches to Teaching Data Structures and Algorithms

You are being asked to participate in a research study to find out more about how pedagogical and curricular approaches affect the student experience in an undergraduate Data Structures and Algorithms course. 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?
If you agree to be in this study, your data from this class including surveys/evaluations, coursework, course forum discussion, and online learning management system engagement will be included in the analysis. Your participation involves only agreeing to let us use your data in our analysis. You will not be asked to do anything beyond normal educational practice.
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 for participation?
If you consent to participate in this study and are at least 18 years old, no action is needed.
Participation in research is voluntary. You may withdraw at any time without penalty.
If you decide to withdraw from the research, complete the online opt-out form.

What will you learn?

Deques

Data Structures

Sep 28
Welcome
Sep 29
SecData Structures
Sep 30
Array Deques

Sorting Algorithms

Oct 3
Asymptotic Analysis
Oct 5
Iterative Sorts
Oct 6
SecSorting Algorithms
Oct 7
Merge Sort

Autocomplete

Search Trees

Oct 10
Search Trees
Oct 12
Tries
Oct 13
SecSearch Trees
Oct 14
2–3 Trees

Isomorphism

Oct 17
Left-Leaning Red-Black Trees
Oct 19
Quicksort
Oct 20
SecIsomorphism
Oct 21
Radix Sort

Priority Queues

Heaps and Hashing

Oct 24
Binary Heaps
Oct 26
Hash Tables
Oct 27
SecHeaps and Hashing
Oct 28
Applications

Midterm Interview

Oct 31
Midterm Interview
Nov 2
Midterm Interview
Nov 3
SecMidterm Interview
Nov 4
Midterm Interview

Graphs

Nov 7
Graph Data Type
Nov 9
Graph Traversals
Nov 10
SecGraphs
Nov 11
Holiday

Shortest Paths

Graph Algorithms

Nov 14
Minimum Spanning Trees
Nov 16
Shortest Paths Trees
Nov 17
SecGraph Algorithms
Nov 18
Dynamic Programming

Thanksgiving Break

Graph Applications

Nov 28
Disjoint Sets
Nov 30
Reduction Algorithms
Dec 1
SecGraph Algorithms
Dec 2
String Algorithms

Final Portfolio

Software Engineering

Dec 5
Algorithm Limits
Dec 7
Software Engineering
Dec 8
SecSoftware Engineering
Dec 9
Conclusion

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.
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.

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 week in the course will involve several different activities that are designed so that we can make the most of our class time together.

  1. On your own before class, prepare for learning by completing the pre-class preparation.
  2. In your team during class and quiz section, collaborate on the in-class guided practice.
  3. On your own after quiz section, complete the assessment and submit an explanation video.
  4. In your team throughout the module, apply your learning by collaborating on the project.
  • 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
  • Monday

    • Lecture
      3:30 PM–4:30 PM
      ARC 147
    • Office Hours
      5:30 PM–7:30 PM
      LOW 115
  • Tuesday

    • Office Hours
      11:30 AM–1:30 PM
      CSE 5F Breakout
    • Office Hours
      3:30 PM–5:30 PM
      CSE 5F Breakout
  • Wednesday

    • Office Hours
      11:30 AM–1:30 PM
      CSE 5F Breakout
    • Lecture
      3:30 PM–4:30 PM
      ARC 147
  • Thursday

    • Sections
      8:30 AM–4:30 PM
    • Office Hours
      5:30 PM–7:30 PM
      LOW 114
  • Friday

    • Office Hours
      9:30 AM–1:30 PM
      CSE 5F Breakout
    • Happy Hour
      1:30 PM–2:30 PM
      CSE 5F Breakout
    • Lecture
      3:30 PM–4:30 PM
      ARC 147
  • Saturday

    • Office Hours
      3:30 PM–5:30 PM
      Zoom

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.

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 Deques module.
Completion of all requirements in the Autocomplete module.
2.0 or greater
Completion of all requirements in the Deques module.
Completion of all requirements in the Autocomplete module.
Completion of all requirements in the Priority Queues module.
3.0 or greater
Completion of all requirements in the Deques module.
Completion of all requirements in the Autocomplete module.
Completion of all requirements in the Priority Queues module.
Completion of all requirements in the Shortest Paths module.
4.0
Completion of all requirements in the Deques module.
Completion of all requirements in the Autocomplete module.
Completion of all requirements in the Priority Queues module.
Completion of all requirements in the Shortest Paths module.
Highest marks across all parts of the Portfolio.

References

  1. Mark Guzdial. 2021. Computer science was always supposed to be taught to everyone, and it wasn’t about getting a job

  2. Roger Fernandes. 2012. Roger Fernandes: Artist/Storyteller/Educator

  3. 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

  4. Asao B. Inoue. 2019. “Sample Charter for Compassion” in Labor-Based Grading Contracts: Building Equity and Inclusion in the Compassionate Writing Classroom

  5. 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