CS 201: Data Structures (Spring 2017)

[ 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. 03/27 M

Introduction; Java basics (Appendix B)

2. 03/29 W

From Python to Java

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

hw00Getting started

3. 03/31 F

Defining Classes

Java tutorial

hw01Java basics

Week 2: lists; more Java4. 04/03 M

D.0–9

Inheritance (Appendix D, Java Interlude 7)

5. 04/05 W

P.0–18

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

hw02Lunar lander

6. 04/07 F

JI-1; JI-2

Exceptions (Java Interlude 2)

Week 3: stacks, queues, graphs7. 04/10 M

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

List implementation with an array (Chapter 13)

hw03Zoo displayer

8. 04/12 W

5.0–5; 10.0–4
optional fairy tale

Stacks and Queues (Chapters 5 and 10)

9. 04/14 F

28.0–11
optional fairy tale

Graphs (Chapter 28)

Week 4: maps and sets; intro to complexity analysis; midterm exam 110. 04/17 M

19.0–4; JI-5.0–7

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

hw04Maze solver

11. 04/19 W

4.0–10; 8.8,14
optional fairy tale

Efficiency and Sorting (Chapters 4 and 8)

12. 04/21 F

(none)

Exam 1

Week 5: recursion and sorting13. 04/24 M

7.0–7; 9.10–14,23
optional fairy tale

Recursive Sorting (Chapters 7 and 9)

hw05Path finder

14. 04/26 W

7.8–18,45–47
optional fairy tale

Recursion (Chapter 7)

15. 04/28 F

3.1–8; 14.0–6

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

hw06Complexity

Week 6: stacks and queues(mid-term break)16. 05/03 W

6.1–12

Stacks (Chapter 6)

17. 05/05 F

11.1–8

Queues (Chapter 11)

hw07Zoo displayer reprise

Week 7: trees18. 05/08 M

23.1–11,22–24

Trees (Chapters 23 and 24)

19. 05/10 W

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

Binary search trees (Chapter 25)

hw08Queue recursor

20. 05/12 F

25.19–28,40–43

Map and Set based on trees

Week 8: priority queues; midterm exam 221. 05/15 M

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

Priority Queues; Heaps (Chapter 26)

hw09Code interpreter

22. 05/17 W

26.13–18; 27.0,13–14

Heap sort; Balanced search trees (Chapter 27)

23. 05/19 F

(none)

Exam 2

Week 9: hashing24. 05/22 M

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

Balanced search trees; Hashing (Chapter 21)

hw10Heap builder

25. 05/24 W

21.13–24

Map and Set based on hashing (Chapter 22)

26. 05/26 F

22.1–8

Hash code functions

hw11Cloud dreamer

Week 10: graphs27. 05/29 M

29.0–10

Graphs (Chapter 29)

28. 05/31 W

(none)

Graphs; course wrap up

hw12Hashing

(reading day)
Final Exam: 06/03 Saturday 08:30–11:00