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)
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.
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.
We will use Java 11 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, Java generics, and LaTeX. They are available in the handouts section of the course webpage.
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:
Assignments are a mixture of short exercises, larger multi-week programming projects, and bi-weekly quizzes.
Every week, we will release a set of exercises. These will give you an opportunity to practice the topics we are covering that week and engage with the theory behind them. The format will vary between writing short bits of code, completing an online activity, or a longer traditional "written" exercise. The latter will be turned in electronically; we encourage you to learn LaTeX, but neatly-written scanned documents will also be fine as long as they are readable. Exercises are to be done individually.
There will be three programming projects. Programming projects will be graded on correctness, architecture and design, and analysis. Note that your answers to the analysis questions will be very heavily weighted. Except under unusual circumstances, projects will be done in pairs of two students.
Due to the online-only nature of this offering, we will not have traditional exams; instead, there will be 5 quizzes this quarter, one offered every other week. Each quiz will be released Wednesday afternoon on Gradescope and due Friday afternoon. 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 (please turn in only one submission per group). Note, however, that we will be using similarity detection software on submissions; it is in your best interest to disclose all students with whom you consulted, even if they aren't currently enrolled in 332.
There are absolutely no late submissions accepted for exercises or quizzes.
For programming projects, you will have 3 "tokens" to use over the course of the quarter. Each token represents a 24 hour extension on the due date, and all group members must use a token; if one member does not have any remaining tokens, your group may not submit late. Projects will not be accepted after tokens have run out.
Tokens are intended to help you manage your time and life circumstances; leftover tokens will not contribute to your grade in any way. However, if there are extenuating circumstances that prevent you from submitting an assignment on time, you should discuss this with the instructor (preferably in advance).
Grades will be computed approximately as follows:
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 (they will have no impact if you are not on the borderline). These are intended to be fun extensions to projects, not a way to "get more points".
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 instructor 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.
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:
Phew! You made it. Thanks for reading all this, and we hope you have a great quarter!