CS 201: Data Structures (Spring 2018)

[ Current Week ]

Basic Information

Course Information

Think back to your favorite assignment from Introduction to Computer Science. Did you ever get the feeling that "there has to be a better/smarter way to do this problem"? The Data Structures course is all about how to store information intelligently and access it efficiently. How can Google take your query, compare it to billions of web pages, and return the answer in less than one second? How can one store information so as to balance the competing needs for fast data retrieval and fast data modification? To help us answer questions like these, we will analyze and implement stacks, queues, trees, linked lists, graphs, and hash tables.

Resources

Calendar

Daily/weekly schedule to be updated throughout the term; topics, readings, and exam dates are tentative and subject to change.

Instructions regarding reading.

DateRead before classTopics and textbook referenceDue 10pm after class
Unit 0: Introduction
Week 1: getting started with Java
1. 03/26 M Introduction; Java basics (Appendix B)
2. 03/28 WFrom Python to Java Java classes (Appendix C), javadoc (Appendix A) hw00Getting started
3. 03/30 FDefining Classes Java tutorial

- lab1: Python to Java

hw01Java basics
Week 2: ADT and interface; lists
4. 04/02 MD.0–9 Inheritance (Appendix D, Java Interlude 7)
Unit 1: Abstract Data Types
5. 04/04 WP.0–18 Interfaces (Prelude), Lists (Chapter 12), generics (Java Interlude 1) hw02Lunar lander
6. 04/06 FJI-1; JI-2 Exceptions (Java Interlude 2)
Week 3: stacks, queues, graphs
7. 04/09 M12.1–2,9–10,14; 13.1–4
[note] The textbook uses 1-based indexing for Lists and 0-based indexing for arrays. This is silly and unimportant. Do not dwell on this point.
List implementation with an array (Chapter 13) hw03Zoo displayer
8. 04/11 W5.0–5; 10.0–4
fairy tale
Stacks and Queues (Chapters 5 and 10)
9. 04/13 F28.0–11
fairy tale
Graphs (Chapter 28)
Week 4: maps and sets; intro to complexity analysis
10. 04/16 M19.0–4; JI-5.0–7 Maps (Chapter 19), Sets, Iterators (Java Interlude 5) hw04Maze solver
Unit 2: Efficiency and Algorithms
11. 04/18 W4.0–10; 8.8,14
fairy tale
Efficiency and Sorting (Chapters 4 and 8)

- VisuAlgo step-by-step visualizations of sorting

- toptal side-by-side comparisons of sorting

12. 04/20 F(none) Exam 1
Week 5: recursion and sorting
13. 04/23 M7.0–7; 9.10–14,23
fairy tale
Recursive Sorting (Chapters 7 and 9)

- (This fairy tale is especially good!)

- Algorithmic complexity attacks and libc qsort()

- optional math: lower bound analysis for comparison-based sorting

- optional math: average analysis for quick sort

hw05Path finder
14. 04/25 W7.8–18,45–47
fairy tale
Recursion (Chapter 7)
Unit 3: Implementation
15. 04/27 F3.1–8; 14.0–6 Links, nested classes, linked list (Chapters 3 and 14)

- optional math: amortized analysis for adding to the end of an ArrayList

hw06Complexity
Week 6: stacks and queues
16. 05/02 W6.1–12 Stacks (Chapter 6)

- lab2: Implement a Generic Linked Stack

17. 05/04 F11.1–8 Queues (Chapter 11) hw07Zoo displayer reprise
Week 7: trees
18. 05/07 M23.1–9,22–24 Trees (Chapters 23 and 24)

- lab3: Construct Expression Trees

19. 05/09 W23.10–11,29–32; 25.2–4,7–8
fairy tale
Binary search trees (Chapter 25) hw08Queue recursor
20. 05/11 F25.19–28,40–43 Map and Set based on trees

- optional math: average analysis for quick sort via BSTs

- optional math: average analysis for BSTs

Week 8: heaps
21. 05/14 M10.19; 23.9,33–35; 26.2–3,5–7,9–10
fairy tale
Priority Queues; Heaps (Chapter 26) hw09Code interpreter
22. 05/16 W(none) Exam 2
23. 05/18 F26.13–18; 27.0,13–14 Heap sort; Balanced search trees (Chapter 27)
[note] Department webserver is down for maintenance 5:30pm to 6:30pm on Friday 5/18.
Week 9: hashing
24. 05/21 M21.0–12
[note] Don't worry too much about 21.9.
Balanced search trees; Hashing (Chapter 21) hw10Heap builder
25. 05/23 W21.13–24 Map and Set based on hashing (Chapter 22)
26. 05/25 F22.1–8 Hash code functions

- lab4: Compare Hash Code Functions

hw11Cloud dreamer
Week 10: graphs
27. 05/28 M29.0–10 Graphs (Chapter 29)

- lab5: Graph Implementations

28. 05/30 W(none) Graphs; course wrap up hw12Hashing
Final Exam: 06/02 Saturday 12:00–14:30