layout: minimal
title: CSE 373
has_children: true
has_toc: true
seo:
type: Course
name: Data Structures and Algorithms
{{ site.tagline }}
{: .mb-2 } {{ site.description }} {: .fs-6 .fw-300 }
{% assign instructors = site.staffers | where: 'role', 'Instructor' %} {% for staffer in instructors %} {{ staffer }} {% endfor %}
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. CSE 373 asks the question: How does the design of an abstraction affect implementations and clients?
Although CSE 373 is designed to be taken after CSE 143---we expect familiarity with array lists, linked lists, and search trees---the focus is not on programming but rather the design, analysis, and critique of the data structures and algorithms that implement software's social imaginations and designed futures.
- Design data structures and algorithms by implementing and maintaining invariants.
- Analyze the runtime and design values of data structures and algorithms.
- Critique the application of data structures and algorithms toward social problems.
In the first 7 weeks, we'll study 3 interfaces and 6 applications of data structures and algorithms.
- Autocomplete data structures and algorithms for search suggestions and DNA indexing.
- Priority queue data structures for content moderation and shortest paths.
- Graph data structures and shortest paths for seam carving and navigation directions.
In the final 2 weeks, we'll apply our learning toward new problems involving technology and society.
Deliberate practice
In a traditional classroom, students attend class while a teacher lectures at them until time is up. Then, you go home and do the hard work of actually applying concepts toward practice problems or assignments. Finally, you take an exam to show what you know.
Research shows that this doesn't work for science, engineering, and mathematics.1 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 traditional lecture three times a week? Probably no one---learning to ride a bike requires riding an actual bike! We might start with training wheels but we eventually remove the training wheels as you develop proficiency over time. Likewise, learning computer science requires deliberate practice.
- Sustained motivation.
- Tasks that build on prior knowledge.
- Immediate, personalized feedback on tasks.
- Repetition of all the above.
The course is organized into five (5) two-week modules: Introduction, Autocomplete, Priority Queues, Shortest Paths, and Conclusion. Most modules involve multiple components, some of which are designed to be completed on your own, others in section teams, and projects in project teams.
- On your own before class, prepare for learning by completing the pre-class preparation.
- In section teams during class and quiz section, collaborate on the in-class guided practice.
- On your own after quiz section, complete the checkpoint and record your own explanation video.
- In project teams throughout the module, apply design, analysis, and critique in the project.
Community of learners
This course is more than concepts and learning objectives. 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. We 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 not how we wish to be treated ourselves, but how they wish to be treated---to think first of others, their benefit, their well-being, and their learning. We are only as good as we are to each other.
In western worldview, learning is for individual gain to help you achieve your goals. This is not necessarily a bad thing, but if the only reason we learn things is to help ourselves, then why collaborate with others? Why help anyone but yourself? If deliberate practice asked about how learning works, we should also consider the more fundamental question: why learn at all?2
Cartesian Dualism : I think, therefore I am : Mind/body separation : Competitive : Learning for individual gain : Measures intelligence against a single norm
In the western worldview, whether you learn alone or learn collaboratively makes no difference. Knowledge is viewed as neutral and disconnected from when, where, or how you learned it. Knowledge is about investing into your future and no on else's. But not all traditions understand learning toward individual gain. Inlak'esh is a Mayan culture that understands learning toward collective benefit.
Inlak'esh : I am you and you are me : Body/mind/spirit = integrated : Collaborative : Learning for collective benefit : Values multiple ways of knowing
In the real world, it's hard to say if an answer is right or wrong because the way we define the problem limits our thinking to certain answers. An answer is only ever truly wrong because the question was designed to accept only a single---often predetermined, often exclusionary, and often destructive---answer. We recognize the values contradiction in this approach that views learning as the reproduction of western ways of knowing. Western science and engineering knowledge alone can't answer many of the most challenging questions of our time. In fact, western science and engineering has caused or exacerbated many of today's social problems.
So how do we move forward? I believe that learning can't just be about individual gain, that collaboration is not just desirable but necessary to learning, that learning on your own is very different from learning with each other. Learning must also be about connecting and better understanding each other to help everyone grow. When you look around you, who you see are the people who will be shaping the future that we all share. It is all of our responsibility to contribute to each others' growth.
Change and growth starts with acknowleding ourselves as a compassionate community of learners. The following specific actions and behaviors we pledge to do in order to encourage compassion toward each other in this class.
- 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.
Values
We welcome 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 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 that students come from varied backgrounds and can have widely-varying circumstances affect them during their time in the course. Please do not hesitate to contact the instructors by appointment or via private discussion post. 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.
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.
Academic honesty is more about principles, values, and habits than it is about regulations. In school, the consequences of making mistakes are relatively small, but the habits you form now will determine who you become in the future. Someone who acts dishonestly now makes it easier for themselves to act dishonestly tomorrow. To provide a common definition for academic honesty, we have the golden rule: do not claim to be responsible for work that is not yours (or your team's). Rather than submitting work that is not yours, instead focus on learning and helping each other learn. If you receive substantial assistance from someone else (outside your team), include a citation nearby. Finally, we ask that you 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. The goal of these boundaries is to define common practices for productively learning together. But we also know that not all cultures share these practices and mistakes happen, so if you submit work that is in violation of these boundaries but bring it to the attention of the instructor within 72 hours, you may resubmit your own work without further consequence.
-
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. ↩
-
Jess Cleeves. 2020. Can Learning be Fair?: Explicit Acknowledgment of Structural Oppression as a Teaching Tool. ↩