Catalog 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.
Lecture: MWF 2:30-3:20 EEB 037
Section AA: Thursday 1:30-2:20 EEB 042
Section AB: Thursday 2:30-3:20 EEB 042
Policy on Collaboration and Academic Integrity
Policy on Grading
Programming Guidelines
Written-Homework Guidelines
Message Board (optional)
Give Anonymous Feedback
To reach the entire course staff, email cse332-staff followed by @ and then cs.washington.edu
Instructor: Dan Grossman, djg followed by @ and then cs.washington.edu,
Office hours: Tuesday 12:30-1:30 and by appointment, CSE556 (please do come by!)
TA: Tyler Robison, trobison followed by @ and then cs.washington.edu
Office hours: Thursday 3:30-4:30, CSE216
TA: Brent Sandona, sandona1 followed by @ and then cs.washington.edu
Office hours: Wednesday 1:00-2:00, CSE216
(*) NP does not belong in CSE332. It is a primary topic in CSE312. However, students taking CSE332 in Spring 2010 have all taken CSE321, which means they will not take CSE312.
Exam Information
Midterm: Friday, April 30, in class
exam unsolved
exam solved
Final: Tuesday, June 8, 2:30-4:20, EEB037
exam unsolved
exam solved
The textbook is
Data Structures and Algorithm Analysis in Java 2nd Edition,
Mark Allen Weiss, Addison Wesley: 2007, ISBN: 0-321-37013-9.
Errors in the textbook
The textbook often provides a second explanation for material covered in class and we will likely assign some homework problems from it.
The book Core Java(TM), Volume I--Fundamentals 8th Edition, Cay S. Horstmann and Gary Cornell, Prentice Hall: 2007, ISBN: 0-132-35476-4, is recommended as a Java programming reference. Note this book is also recommended for CSE331.
Several topics in the course, particularly the entirety of parallelism and concurrency, are not covered by the textbook. Therefore, we have prepared the following supplemental notes:
Course Email List (mandatory)
Homework 0, "due" Thursday April 1, 0 points
Thoroughly read the course policies and refer back to them as necessary
Approximately 75% of CSE332 evolved from CSE326, which was taught well by many instructors over many years. CSE332 borrowed heavily from these courses for lectures, homeworks, and projects. The parallelism and concurrency parts of the course are new, developed by Dan Grossman with excellent feedback from Tyler Robison and Brent Sandona. Dan credits Guy Blelloch and Charles Leiserson for many of the ideas/topics related to teaching fork-join parallelism and doing so before concurrency. While developing the course, Dan had conversations with many helpful colleagues, notably Ruth Anderson, James Fogarty, Hal Perkins, and Larry Snyder.