CS 201: Data Structures (Winter 2017)

[ Current Week ]

Basic Information

Resources

Calendar

Weekly schedule below to be updated throughout the term; 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. 01/04 W Introduction; Java basics (Appendix B)
2. 01/06 FFrom Python to Java Java classes (Appendix C), javadoc (Appendix A) hw00Getting started
Week 2: lists; more Java
3. 01/09 MDefining Classes Inheritance (Appendix D, Java Interlude 7)

- lab01: Python to Java

hw01Java lab
Unit 1: Primary ADTs
4. 01/11 WP.1–18 Interfaces (Prelude), Lists (Chapter 12), generics (Java Interlude 1)
5. 01/13 FJI-1; JI-2 Implementing interface and using lists

- lab02: Plant a Garden

hw02Lunar lander
Week 3: stacks, queues, and graphs
6. 01/16 M12.1–2,9–10,14; 13.1–4 List implementation with an array (Chapter 13)
7. 01/18 W5.0–5; 10.0–4
optional fairy tale
Stacks and Queues (Chapters 5 and 10) hw03Zoo displayer
8. 01/20 F28.0–11 Graphs (Chapter 28)
Week 4: intro to complexity analysis; midterm exam 1
9. 01/23 M19.0–4; JI-5.0–7 Maps (Chapter 19), Sets, Iterators (Java Interlude 5) hw04Maze solver
Unit 2: Efficiency and Algorithms
10. 01/25 W4.0–10
optional fairy tale
Efficiency (Chapter 4)
11. 01/27 F(none) Midterm 1
Week 5: recursion and sorting
12. 01/30 M8.8,14,20–24; 9.20–23
optional fairy tale
Sorting (Chapters 8 and 9)

(This optional fairy tale is especially good!)

- VisuAlgo step-by-step visualizations of sorting

- toptal side-by-side comparisons of sorting

hw05Path finder
13. 02/01 W7.0–7; 9.10–14 Recursive Sorting (Chapters 7 and 9)

- Algorithmic complexity attacks and libc qsort()

14. 02/03 F7.8–18,45–47 Recursion (Chapter 7) hw06Complexity
Unit 3: Implementation
Week 6: links and stacks
15. 02/08 W3.1–8; 14.0–6 Links, nested classes, linked list (Chapters 3 and 14) hw07Sorting
16. 02/10 F6.1–12 Stacks (Chapter 6)

- lab03: Implement a Generic Linked Stack

Week 7: queues and trees
17. 02/13 M11.1–8 Queues (Chapter 11) hw08Zoo displayer reprise
18. 02/15 W23.1–11,22–24 Trees (Chapters 23 and 24)

- lab04: Construct Expression Trees

19. 02/17 F23.29–32; 25.2–4,7–8
optional fairy tale
Binary search trees (Chapter 25) hw09Queue recursor
Week 8: priority queues; midterm exam 2
20. 02/20 M25.19–28,40–43 Map and Set based on trees
21. 02/22 W10.19; 23.33–35; 26.2–3,5–7,9–10
optional fairy tale
Priority Queues; Heaps (Chapter 26) hw10Code interpreter
22. 02/24 F(none) Midterm 2
Week 9: hashing
23. 02/27 M26.13–18; 27.0,13–14 Heap sort; Balanced search trees (Chapter 27)
24. 03/01 W21.0–12 (don't worry too much about 21.9)Balanced search trees; Hashing (Chapter 21) hw11Heap builder
25. 03/03 F21.13–24 Hash code functions, collisions

- lab05: Compare Hash Code Functions

Week 10: graphs
26. 03/06 M22.1–8 Map and Set based on hashing (Chapter 22) hw12Cloud dreamer
27. 03/08 W29.0–10 Graphs (Chapter 29)

- lab06: Graph Implementations

28. 03/10 F(none) Graphs; course wrap up hw13Hashing
Final Exam: 03/13 Monday 15:30–18:00