CSE 373 Spring 2017
Data Structures and Algorithms
Announcements
- [03/26] Welcome to CSE 373 -- Announcements will be posted here throughout the course. Lecture slides will be posted after each lecture.
- [03/27] Here is the link for overload/waitlist students. The 'secret code' will be given in lecture.
- [03/29] The first homework assignment is posted. Also, TA assignments for sections are at the bottom of the page.
- [06/02] Course Evaluations are available until Sunday night! Please take 5 minutes to complete them.
Course Information and Policies
Instructor: Evan McCarty CSE 214
Lecture: Monday, Wednesday, Friday 2:30-3:20 SMI 120
Contact Information and Office Hours
Course Email List: You should automatically be subscribed to this list and receive email every once in a while. Any important announcements will be sent to this list. Important announcements will also be posted to the webpage above.
Course Staff and Office Hours:
Instructor: Evan McCarty: ejmcc@cs.washington.edu Mondays, 11:00-11:50 and Wednesdays, 3:30-4:20 or by appointment; Room CSE 214
TAs:
Jack Armstrong : jackarms@cs.washington.edu Tuesdays, 2:30-3:20; Room CSE 021
Kimberly Bautista: kimb3609@cs.washington.edu Fridays, 3:30-4:20; Room CSE 220 and Fridays, 4:30-5:20 in CSE 021
Autumn Blackburn : kblack37@cs.washington.edu Fridays, 12:30-1:20; Room CSE 220 and Wednesdays, 5:30-6:20 in CSE 220
Chloe Lathe: lathec@cs.washington.edu Mondays, 12:00-12:50; Room CSE 021
Matthew Rockett : rockettm@cs.washington.edu Mondays, 10:30-11:20; Room CSE 220
Mert Saglam : saglam@cs.washington.edu Tuesdays, 11:00-11:50; Room CSE 220
Justin Sievers : jms97@cs.washington.edu Fridays, 1:30-2:20; Room CSE 007
Dorothy Truong : dotruong@cs.washington.edu Mondays, 3:30-4:20; Room CSE 021
Kevin Vong: kevong@cs.washington.edu Wednesdays, 11:30-12:20; Room CSE 220
James Wang: jamesw96@cs.washington.edu Tuesdays, 12:00-1:20; Room CSE 220
Hunter Zahn : hzahn93@cs.washington.edu Wednesdays, 12:30-1:20; Room CSE 220
Marina Zhou : rainran@cs.washington.edu Mondays, 1:00 - 1:50; Room CSE 021
Lecture Materials
By end of day, lecture slides will be posted here from the day's lecture. Topics for the following lecture will be uploaded along with that day's slides', along with relevant chapters from the Weiss textbook. Readings that are required before lecture will be indicated in bold.- 1. March 27th: Course Introduction; ADTs; Stacks and Queues [ pptx | pdf ] Weiss: 3.6 - Stacks, 3.7 - Queues
- 2. March 29th: Circular Queues, Testing and Priority Queues [ pptx | pdf ] 6.1 - Priority Queues
- 3. March 31st: Trees, Heaps and Data Structure Properties [ pptx | pdf | doc notes ] 6.2,6.3 - Priority Queues (Heaps)
- 4. April 3rd: Algorithm Analysis [ pptx | pdf ] Chapter 2 - Algorithm Analysis
- 5. April 5th: Algorithm Analysis, cont [ pptx | pdf ] Additional Big O Explanation
- 6. April 7th: buildHeap; Floyd's Method [ pptx | pdf ] 6.3.4 - BuildHeap
- 7. April 10th: Dictionary ADT [ pptx | pdf ] No readings
- 8. April 12th: Dictionary ADT, Binary Search Trees [ pptx | pdf ] 4.8 - Sets and Maps
- 9. April 14th: Tree Traversals [ pptx | pdf ] 4.1-4.2 - Trees
- 10. April 17th: Tree Balance and AVL [ pptx | pdf ] 4.3-4.4 - Binary Trees
- 11. April 19th: AVL cont [ pptx | pdf ] 4.4 - AVL Trees - Additional AVL resource.
- 12. April 21tst: AVL and Memory Analysis [ pptx | pdf ] No new readings
- 13. April 24th: Hash Tables [ pptx | pdf ] 5.1-5.2 and 5.4 Hash Tables
- 14. April 26th: Exam Review [ pptx | pdf ]
- 15. April 28th: Midterm Exam
- 16. May 1st: Hashing [ pptx | pdf ] No new readings
- 17. May 3rd: Graphs [ pptx | pdf ] 9.1 - Representation of Graphs
- 18. May 5th: More Graphs [ pptx | pdf ] 9.2 - Topological Sort Here is a good tutorial on exception throwing which should help with HW4
- 19. May 8th: Dijskstra's Algorithm [ pptx | pdf ] 9.3.1-9.3.2 - Dijkstras Algorithm
- 20. May 10th: Spanning Trees and Union Find [ pptx | pdf ] Ch 8 - Disjoint Set
- 21. May 12th: Minimum Spanning Trees [ pptx | pdf ] 9.5 - Minimum Spanning Tree
- 22. May 15th: Iterators [ pptx | pdf ] 3.3.2 - Iterators
- 23. May 17th: Sorting [ pptx | pdf ] 7.1-7.4 Simple Sorting
- 24. May 19th: Sorting [ pptx | pdf ] 7.3,7.5 Sorting
- 25. May 22nd: Sorting [ pptx | pdf ] 7.6,7.7 Sorting
- 26. May 24th: Sorting [ pptx | pdf ] 7.8 - Lower bound
- 27. May 26th: Algorithm Design [ pptx | pdf ] 10.1,10.2,10.4 - Algorithm Design
- 28. May 31st: Randomization and Memory Features [ pptx | pdf ]
- 29. June 2nd: Exam Review [ pptx | pdf | Topics List | Practice Final ]
- Java Review - Here are some slides from a previous quarter which go through expected knowledge from last quarter. [ Slides ]
- Here is some information on amortized runtime for those of you who are doing the writeup as their extra assignment. . Alternative, but very similar explanation of Amortized Runtime
- Here is a good tutorial on exception throwing which should help with HW4
- Here is an okay starting point for iterators if you do this for extra credit.
Extra Material:
-
Occasionally, I may post additional slides or information that you may find informative or interesting. This is additional material and you will not be responsible for it on exams.
Sections
Section material distributed to TAs will be made available here. Solutions to problems posted here must be gotten in section from the TA. Sections (All times on Thursdays): AA: Kimberly Bautista and Kevin Vong - 9:30 LOW 105 AB: Mert Saglam - 10:30 MGH 242 AC: Justin Sievers - 12:30 PCAR 293 AD: Chloe Lathe - 1:30 MGH 271 AE: Marina Zhou - 2:30 MUE 154 AF: James Wang - 3:30 SAV 130 AG: Jack Armstrong - 12:30 LOW 106Homework Assignments
Turn in your assignments through the Canvas course page. Homework will be posted on Wednesdays and due the following Wednesday at midnight.
If you think there was an error in the grading of your submission, please fill out the following regrade request form. Please do so by the Monday after grades are returned. No regrades for assignments 1-3 will be given after the midterm.
- Programming Guidelines
- Written-Homework Guidelines
- Discussion Board. Please check the discussion board for similar questions or clarifications.
- Homework 1, out Wednesday, March 29th due 11:59 PM Wed, Apr 5th [ Write-up/Explanation | Starter Code | .jar file ] A jar file containing all of the .class files you need has been added and can be imported to your HW1 project in eclipse by right-clicking on it, selecting build path -> Add external archives and selecting the downloaded .jar file For the original files in Code.zip, here's a tutuorial to help you get the .class files into Eclipse.
- Homework 2, out Wednesday, April 5th due 11:59 PM Wed, Apr 12th [ Write-up/Explanation | Starter Code | Eclipse project .zip ] Instructions on how to import the project into Eclipse are included in the writeup
- Homework 3, out Wednesday, April 12th due 11:59 PM Wed, Apr 19th [ Write-up/Explanation | Starter Code | Eclipse project .zip ] Instructions on how to import the project into Eclipse are included in the writeup
- Homework 4, out Thursday, May the 4th due 11:59 PM Wed, May 10th [ Write-up/Explanation | Starter Code | Eclipse project .zip ] Here is a good tutorial on exception throwing which should help.
- Homework 5, out Thursday, May 11th. Due 11:59 PM, Fri, May 19th [ Write-up/Explanation | New Files ] Since you are reusing your code from HW4, no Eclipse project is provided
- Homework 6, out Monday, May 22nd Due 11:59 PM, Tuesday, May 30th [ Explanation and Files ]
- Extra Assignment, out Wednesday, May 17th. Due 11:59 PM, Friday, June 2nd AVL : [ Write-up/Explanation | Starter Code | Eclipse project .zip ] Writeup : [ Writeup/Explanation ] Remember, you may only complete one of the above assignments and it will replace your lowest score part (either code or writeup). Either assignment can apply to either code or writeup. If your submission is lower than your lowest grade, it will not affect your grade. Your final grade can only improve by completing this assignment.
Exams
The midterm for this course will be April 28th, from 2:30-3:20 in the normal room for lecture. Here is the practice midterm. Many of the problems are similar to problems from previous quarters midterms which are copied below. Pay attention to the final question on the exam as it is the most unlike questions posed in previous quarters. Here are the solutions to the practice midterm.Historical Practice Midterms:
- cse373 Fall 2010 midterm unsolved / solved
- cse373 Spring 2010 midterm unsolved /solved
- cse373 Fall 2011 midterm unsolved /solved
- cse373 Fall 2012 midterm unsolved /solved
- cse373 Winter 2012 midterm unsolved /solved
- cse373 Fall 2013 midterm unsolved /solved
Historical Practice Resources for final:
cse373 Winter 2017 final exam solved
Software and Textbook Information
The programming assignments will use Java. We will use Java 8, the most recent version of the language. So if installing Java on your own machine, you can get Java 8 from https://jdk8.java.net/.
We strongly encourage using the Eclipse IDE, though we will not require this. You can download Eclipse for your own machine from http://eclipse.org/downloads; it is also installed on all the lab machines. Some guidance on getting started with Eclipse is included in Homework 1.
The textbook is Data Structures and Algorithm Analysis in Java, Mark Allen Weiss, 3rd Edition, 2011, ISBN: 0132576279. Errata is here. Code from the book is here. We will also do our best to support the 2nd Edition, ISBN: 0321370139. Errata for the 2nd edition is here. Code for the 2nd edition is here. The textbook is also available for 4 hour loan at the Engineering library. The textbook often provides a second explanation for material covered in class.
A Java reference is also strongly recommended. While you can search for most of this information on the web, there are a variety of (more than) sufficient references, we recommend Core Java(TM), Volume I--Fundamentals 9th Edition, Cay S. Horstmann and Gary Cornell, 2002, ISBN: 0137081898.
Acknowledgments: Many of the materials posted here and used in the course have been shared and refined by many other instructors and TAs in previous offerings of CSE373, CSE332, and CSE326. This version of the course was particularly based on previous offerings by Riley Porter, Ruth Anderson, Dan Grossman, Kevin Quinn, and Hunter Zahn.