Course Description

Covers abstract data types and structures including dictionaries, balanced trees, hash tables, priority queues, and graphs; sorting; asymptotic analysis; fundamental graph algorithms including graph search, shortest path, and minimum spanning trees; concurrency and synchronization; and parallelism.

Prerequisites: CSE 311 (Foundations of Computing I)

Course Resources


We strongly recommend, but do not require, Data Structures and Algorithm Analysis in Java 3rd Ed., by Mark Allen Weiss. Lecture does not provide enough time to cover all material in detail, so we strongly recommend that you read the textbook to clarify topics and find more examples as well as to examine Java implementations of the data structures and algorithms discussed during lecture. Copies will also be on reserve at the Engineering Library

We also recommend a Java reference book of your choice, one is: Core Java(TM), Volume I--Fundamentals, by Cay S. Horstmann and Gary Cornell.

We will use a set of free on-line notes for the material on parallelism and concurrency.

Computing and Handouts

We will use Java for our programming projects, and we strongly recommend (but do not require) that you use the IntelliJ IDE.

We have a variety of handouts on the various tools and technologies used in this course, such as IntelliJ and Java generics. They are available in the handouts section of the course webpage.

Office Hours and One-on-Ones

If you have conceptual questions or need assistance with debugging your projects, we strongly recommend attending office hours.

We recognize that not every question is appropriate for office hours, however. For example, you may wish to discuss your extenuating circumstances, need support/advice for a personal issue, or have followup questions from a previous office hour. In these circumstances, we recommend emailing the course staff (cse332-staff@cs) to request a one-on-one. When you email us, please include the following information:

  • A brief description of what you'd like to discuss
  • With whom did you previously discuss this (if applicable)?
  • Your available times
  • (optional) The name of your gitlab repo and whether you have unpushed diffs
Please be patient; we will try to respond with a timeslot within 24h of your request!

Assignments, Late Policy, and Grading

Assignments are a mixture of larger multi-week programming projects and approximately every-other-week quizzes.

Programming Projects

There will be three and a half programming projects (the self-contained mini project, "para", is weighted less than the full projects and is faster to complete). Programming projects will be graded on correctness, architecture and design, and analysis; your answers to the analysis questions will be very heavily weighted. Except under unusual circumstances, the full projects will be done in pairs (of two students).; the "para" mini-project must be completed individually.


We will have 4 quizzes this quarter, offered approximately every other week. Each quiz will be released Tuesday on Gradescope and due Thursday morning PDT (GMT-7). Because we will not be able to prevent cheating, we encourage unlimited collaboration: specifically, quizzes are open-book and can be done in groups of unlimited size. However, each person must submit their own quizzes individually.

Late Policy

There are absolutely no late submissions accepted for quizzes or lecture activities.

For programming projects, submissions will be accepted up to 48 hours after their deadline. They will be subject to the following penalties:

1-12 hours-2%
13-24 hours-5%
25-48 hours-10%
49+ hoursNot accepted for grading


Grades will be computed approximately as follows:

  • 10%: Lecture ("90% is 100%")
  • 50%: Programming projects
  • 40%: Quizzes

Lectures will have a variety of before- and in-class activities submitted via GradeScope; these activities can be submitted asynchronously (eg, if you are watching the lectures from a different timezone). For this component, you will receive credit for completing the activity (ie, it can be incorrect); furthermore, the "90% is 100%" policy means that you will receive full credit for this category as long as you participate in 90% of them. For example, you will receive full lecture points if you complete 22 out of 25 offered activities.

Programing projects have optional, extra features that you may choose to implement; we call these "Above and Beyond". These will not affect an individual project's grade, but may be used in aggregate to bump up borderline grades at the end of the quarter; if you are not on the borderline, they will have no impact. These are intended to be fun extensions to projects, not a way to "get a better grade".

Collaboration and Cheating

Learning these ideas is challenging. We encourage you to discuss course activities with your friends and classmates as you are working on them, because you will definitely learn more in this class if you work with others than if you do not. Ask questions, answer questions, and share ideas liberally; we want a class that is open, welcoming, and collaborative, where we can help each other build the highest possible understanding of the course material.

Learning collaboratively is different from sharing answers. You shouldn’t be showing your code or answer to someone outside your group. A good rule-of-thumb for distinguishing between collaboration and sharing answers is this: Can I attempt an immaterially-different question (eg, sorting in ascending order instead of descending order), by myself, without my collaborator? If the answer is “yes”, then you learned from your collaboration; that’s great! Please do more of it! However, if the answer is “no”, then you were sharing answers.

You are responsible for understanding and applying the department's Academic Misconduct Policy. If you are in doubt about what might constitute misconduct, send the course staff an email describing the situation and we will be happy to clarify it for you.


Our code and our projects are made better by considering a variety of viewpoints. Your course staff is committed to the values outlined in the Allen School’s inclusiveness statement, and you are expected to uphold a supportive and inclusive learning environment.

If, at any point, you are made to feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. Should you feel uncomfortable bringing up an issue with a staff member directly, you may consider submitting anonymous feedback or contacting the Office of the Ombud.


Please refer to university policies regarding disability accommodations or religious accomodations.

More generally, we recognize that our students come from varied backgrounds and can have widely-varying circumstances. If you have any unforeseen or extenuating circumstance that arise during the course, please do not hesitate to contact the instructor to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances may include work-school balance, familial responsibilities, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.


This course is scheduled to run synchronously at your scheduled class time via Zoom. These Zoom class sessions will be recorded. The recording will capture the presenter’s audio, video and computer screen. Student audio and video will be recorded if they share their computer audio and video during the recorded session. The recordings will only be accessible to students enrolled in the course to review materials. These recordings will not be shared with or accessible to the public.

The University and Zoom have FERPA-compliant agreements in place to protect the security and privacy of UW Zoom accounts. Students who do not wish to be recorded should:

  • Change their Zoom screen name to hide any personal identifying information such as their name or UW Net ID, and
  • Not share their computer audio or video during their Zoom sessions.


Phew! You made it. Thanks for reading all this, and we hope you have a great quarter!