/datastructures2018

Materials for JHU Data Structures 2018

Primary LanguageJava

JHU EN.600.226: Data Structures

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

Office Hours

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.

  • Upon successful completion of this course, you should be able to:
    • Evaluate and compare the time complexity of functions using mathematical techniques.
    • Design an algorithm that produces the correct results according to specified inputs and time or space complexity constraints.
    • Understand the operation of common data structures and algorithms.
    • Use analysis techniques to choose the data structure/implementation appropriate for a given problem.
    • Write advanced object-oriented solutions in Java to significant problems, by implementing appropriate data structures and algorithms.

Prerequisites

Course Resources:

Recommended Readings

Other Resources

Schedule

# 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