Data structures and algorithms are the foundational abstractions underlying all computer systems. In CSE 373, we will learn to **design, analyze, and critique** data structures and algorithms.
1. Design data structures and algorithms by implementing and maintaining invariants.
1. Analyze the runtime and design values of data structures and algorithms.
1. Critique the application of data structures and algorithms toward social problems.
Although this course is designed to be taken after CSE 143 (programming with data structures), programming is not the primary focus. Instead, we'll apply a [comparative data structures](https://kevinl.info/comparative-data-structures/) approach to examine [6 case studies of data structures and algorithms](https://kevinl.info/do-abstractions-have-politics/).
1. Autocomplete data structures and algorithms for **search suggestions** and **DNA indexing**.
1. Priority queue data structures for **content moderation** and **shortest paths**.
1. Shortest paths algorithms for **seam carving** and **navigation directions**.
## Deliberate practice
In a traditional classroom, you attend class where a teacher lectures until the end of the session. Then, you go home and do the hard work of actually applying course 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 any science, engineering, or mathematics as learning how to ride a bike. Quite a few people know how to ride a bike. How many of them learned how to ride a bike through traditional lecture three times a week and a quiz section once a week? Probably no one---learning to ride a bike requires riding an actual bike! Learning computer science likewise requires **deliberate practice**.
[^1]: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](https://doi.org/10.1073/pnas.1319030111).
1. Sustained motivation.
1. Tasks that build on prior knowledge.
1. Immediate, personalized feedback on tasks.
1. Repetition of all the above.
Deliberate practice is about taking on the right challenge with the right support. We'll learn new concepts each week in the following manner.
1. Before each MWF class meeting, prepare for learning by completing the **pre-class preparation**.
1. During each MWF class meeting and Th quiz section, collaborate on the **in-class guided practice**.
1. After Th quiz section, complete the **checkpoint assessment** individually. Ask for help in office hours!
*[MWF]: Monday, Wednesday, Friday
*[Th]: Thursday
## 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 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.
In western tradition, learning is for individual gain to help *you* achieve your goals. This is not necessarily a bad thing, but if the only reason we bother to learn things is to help ourselves, then why should we bother collaborating with others? If deliberate practice concerns **how learning works**, we should also consider the more fundamental question: **why learn at all?**[^2]
[^2]:Jess Cleeves. 2020. [Can Learning be Fair?: Explicit Acknowledgment of Structural Oppression as a Teaching Tool](https://youtu.be/MnRZcPeEAv0?t=1833).
Cartesian Dualism
: I think, therefore I am
: Mind/body separation
: Competitive
: Learning for individual gain
: **Measures** intelligence against a single norm
In the real world, it's hard to say if an answer is right or wrong. It's only when we define the problem in a certain way that we limit our thinking to certain kinds of answers. An answer is only ever wrong because the question was designed to accept only a single---oftentimes predetermined---answer. We recognize the **values contradiction** in this approach that views learning as the reproduction of certain forms of valuable knowledge.
Not all traditions regard learning for individual gain. Inlak'esh is a Mayan culture that regards learning for 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
Science and engineering knowledge alone can't answer many of the most challenging questions of our time. Collaboration is not just desirable but rather necessary to improve society. Therefore, learning can't just be about individual gain. Learning must also be about connecting and better understanding each other to help everyone grow. 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 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, meet our advisors during [quick questions](https://www.cs.washington.edu/academics/ugrad/advising#qqs) or contact the [College of Engineering](https://www.engr.washington.edu/bias).
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](https://kevinl.info/meet/) 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](https://depts.washington.edu/uwdrs/)(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](https://registrar.washington.edu/staffandfaculty/religious-accommodations-policy/). Accommodations must be requested within the first two weeks of this course using the [Religious Accommodations Request form](https://registrar.washington.edu/students/religious-accommodations-request/).