Prof: Michael Schatz (mschatz @ cs.jhu.edu)
Head TA: Tim Kutcher (tkutche1 @ jhu.edu)
Class Hours: Monday + Wednesday + Friday @ 1:30p - 2:45p in Mudd 26
| Contact | Title | Office Hours | Location | | ——- | —– | ———— | ——– | | Michael Schatz | Professor | Wednesday 3-4 PM, and by appointment | Malone 323 | | Tim Kutcher | Head TA | Tuesday 6-7 PM, Thursday 12-1 PM | Malone 122 (Ugrad Lab) | | Brandon Lim | CA | Mondays 11 AM - 1:30 PM | Malone 122 (Ugrad Lab) | | Joanna Guo | CA | Sunday 4:15-6:15 PM | Malone 122 (Ugrad Lab) | | Taha Baig | CA | Wednesday 9:55-10:55 AM, Friday 9:55-10:55 AM | Malone 122 (Ugrad Lab) | | Julia Oppenheim | CA | Thursday 4:30 - 5:30 PM, Friday 10 - 11 AM | Malone 122 (Ugrad Lab) | | Randy Kuang | CA | Thursday 10:30 AM - 11:30 AM, Friday 11 AM - 12 PM | Malone 122 (Ugrad Lab) | | Anil Palepu | CA | Tuesday 2 PM - 4:30 PM | Malone 122 (Ugrad Lab) | | Darius Irani | CA | Thursday 7 PM - 9 PM | Malone 122 (Ugrad Lab) | | Youngsoo Sung | CA | Tuesday 10 AM - 12 PM | Malone 122 (Ugrad Lab) | | William Ruppenthal | CA | Wednesday 12 - 1 PM, Friday 12 - 1 PM | Malone 122 (Ugrad Lab) |
The primary goal of the course is for students to be grounded in theory and leave the course empowered to understand and implement a variety of key data structures. This course covers the design and implementation of data structures including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees (e.g. 2-3 trees, AVL-trees) and graphs. Other topics include sorting, hashing, memory allocation, and garbage collection. Course work involves both written homework and Java programming assignments.
checkstyle
that you may run into| # | Date | Lecture | Readings & Resources | Assignment |
|:—|:———:|:————-|:———————|:———–|
|1. | Th 8/30 | Introduction | | Sign Up for Piazza |
|2. | Fr 8/31 | Interfaces | Java Interfaces | Set up VirtualBox
| | Mon 9/3 | Labor Day - No class
|3. | Wed 9/5 | Arrays, Generics, and Exceptions | Java Generics
|4. | Fri 9/7 | Lists | Java References | HW 1 Assigned
|5. | Mon 9/10 | Iterators | Nested Classes & Iterator Interface
|6. | Wed 9/12 | Complexity Analysis | Big O Cheat Sheet
|7. | Fri 9/14 | More Complexity || HW 2 Assigned
|8. | Mon 9/17 | Sorting | Sorting Algorithms Animations
|9. | Wed 9/19 | Stacks
|10. | Fri 9/21 | Stacks and JUnit | JUnit 4| HW3 Assigned
|11. | Mon 9/24 | Stacks, Queues, and Deques
|12. | Wed 9/26 | Lists
|13. | Fri 9/28 | More Lists || HW4 Assigned
|14. | Mon 10/1 | Trees
|15. | Wed 10/3 | Trees and Graphs
|16. | Fri 10/5 | Graph Search
|17. | Mon 10/8 | Midterm Review 1
|18. | Wed 10/10 | Midterm Review 2
|19. | Fri 10/12 | Midterm!
|20. | Mon 10/15 | Sets | Sets
|21. | Wed 10/17 | Midterm Discussion || HW5 Assigned
| | Fri 10/19 | Fall Break
|22. | Mon 10/22 | Ordered Sets
|23. | Wed 10/24 | Priority Queues and Heaps
|24. | Fri 10/26 | Sets of integers, bitsets || HW6 Assigned
|25. | Mon 10/29 | Maps
|26. | Wed 10/31 | BSTs and AVL Trees
|27. | Fri 11/2 | Treaps || HW7 Assigned
|28. | Mon 11/5 | Hash Tables
|29. | Wed 11/7 | More Hash Tables
|30. | Fri 11/9 | Advanced Hash Tables || HW8 Assigned
|31. | Mon 11/12 | Suffix Arrays
|32. | Wed 11/14 | Burrows Wheeler Transform & BWT Notes
|33. | Fri 11/16 | Burrows Wheeler Transform 2 || HW9 Assigned
| | Mon 11/19 | Thanksgiving break
| | Wed 11/21 | Thanksgiving break
| | Fri 11/23 | Thanksgiving break
|34. | Mon 11/26 | Advanced sorting
|35. | Wed 11/28 | Linear time sorting, Topological sorting
|36. | Fri 11/30 | Shortest Path Problem || HW10 Assigned
|37. | Mon 12/3 | Minimum Spanning trees
|38. | Wed 12/5 | Union Find
|39. | Fri 12/7 | Last Day of Class - Review!
| | Thr 12/13 | Final Exam @ 9am - 12n – Mudd 26