CS 201: Data Structures (Winter 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.

WeekMondayWednesdayFriday
Week 1: getting started with Java1. 01/03 W

Introduction; Java basics (Appendix B)

2. 01/05 F

From Python to Java

Java classes (Appendix C), javadoc (Appendix A)

hw00Getting started

Week 2: ADT and interface; lists3. 01/08 M

Defining Classes

Java tutorial

hw01Java basics

4. 01/10 W

D.0–9

Inheritance (Appendix D, Java Interlude 7)

5. 01/12 F

P.0–18

Interfaces (Prelude), Lists (Chapter 12), generics (Java Interlude 1)

hw02Lunar lander

Week 3: stacks and queues6. 01/15 M

JI-1; JI-2

Exceptions (Java Interlude 2)

7. 01/17 W

12.1–2,9–10,14; 13.1–4

List implementation with an array (Chapter 13)

hw03Zoo displayer

8. 01/19 F

5.0–5; 10.0–4
fairy tale

Stacks and Queues (Chapters 5 and 10)

Week 4: graphs, maps, and sets; intro to complexity analysis9. 01/22 M

28.0–11
fairy tale

Graphs (Chapter 28)

10. 01/24 W

19.0–4; JI-5.0–7

Maps (Chapter 19), Sets, Iterators (Java Interlude 5)

hw04Maze solver

11. 01/26 F

4.0–10; 8.8,14
fairy tale

Efficiency and Sorting (Chapters 4 and 8)

Week 5: sorting and links12. 01/29 M

(none)

Exam 1

13. 01/31 W

7.0–7; 9.10–14,23
fairy tale

Recursive Sorting (Chapters 7 and 9)

hw05Path finder

14. 02/02 F

3.1–8; 14.0–6

Links, nested classes, linked list (Chapters 3 and 14)

Week 6: recursion(mid-term break)15. 02/07 W

7.8–18,45–47
fairy tale

Recursion (Chapter 7)

hw06Complexity

16. 02/09 F

6.1–12

Stacks (Chapter 6)

Week 7: trees17. 02/12 M

11.1–8

Queues (Chapter 11)

hw07Zoo displayer reprise

18. 02/14 W

23.1–11,22–24

Trees (Chapters 23 and 24)

19. 02/16 F

23.29–32; 25.2–4,7–8
fairy tale

Binary search trees (Chapter 25)

hw08Queue recursor

Week 8: heaps20. 02/19 M

25.19–28,40–43

Map and Set based on trees

21. 02/21 W

10.19; 23.33–35; 26.2–3,5–7,9–10
fairy tale

Priority Queues; Heaps (Chapter 26)

hw09Code interpreter

22. 02/23 F

(none)

Exam 2

Week 9: hashing23. 02/26 M

26.13–18; 27.0,13–14

Heap sort; Balanced search trees (Chapter 27)

24. 02/28 W

21.0–12 (don't worry too much about 21.9)

Balanced search trees; Hashing (Chapter 21)

hw10Heap builder

25. 03/02 F

21.13–24

Map and Set based on hashing (Chapter 22)

Week 10: graphs26. 03/05 M

22.1–8

Hash code functions

hw11Cloud dreamer

27. 03/07 W

29.0–10

Graphs (Chapter 29)

28. 03/09 F

(none)

Graphs; course wrap up

hw12Hashing

Final Exam: 03/14 Wednesday 12:00–14:30