CSCI 136 - Spring 2018
Data Structures & Advanced Programming
Home | Lectures 9am 10am | Labs | Handouts | Links | CS@Williams | Piazza
Lecture Notes and Examples
Links to lecture slides and files will be available after class on the date shown. You must be on-campus or using the
proxy server to access these materials.
**The schedule may shift as the semester progresses.
Date | Topic | Examples | Notes | Readings |
Feb 2 | Welcome & Java Crash Course | Hello.java | Lecture 1 | Bailey: Chapter 0, Appendix B; Handouts: Syllabus, Java Essentials |
Feb 5 | More Java & OOP | Hello.java | Lecture 2 | |
Feb 7 | More OOP | Baby.java CoinFlip.java | Lecture 3 | Bailey: Chapter 1 |
Feb 9 | Inheritance |
CookieMonster.java Edible.java Cookie.java ChocolateChipCookie.java Fruit.java Apple.java Orange.java |
Lecture 4 | |
Feb 12 | Association & Generics |
CookieMonster.java Edible.java Cookie.java ChocolateChipCookie.java Fruit.java Apple.java Orange.java Baby.java BossBaby.java |
Lecture 5 | Bailey: Chapter 4 |
Feb 14 | Vectors |
WordFreq.java sample.txt |
Lecture 6 | Bailey: Chapter 3 |
Feb 16 |
Winter Carnival (no class) |
|||
Feb 19 | Time and space complexity | Lecture 7 | Bailey: Chapter 5 | |
Feb 21 | Recursion |
Recursion.java | Lecture 8 | |
Feb 23 | Induction & List | Lecture 9 | Bailey: Chapter 9.1-9.4 | |
Feb 26 | Lists II | Lecture 10 | Bailey: Chapter 9.5-9.9 | |
Feb 28 | Lists III/Search | Lecture 11 | ||
Mar 2 | Sorting | Lecture 12 | Bailey: Chapter 6.1-6.2 | |
Mar 5 | Sorting II | Lecture 13 | Bailey: Chapter 6.3-6.4 | |
Mar 7 | Sorting/Linear Structures | Lecture 14 | Bailey: Chapter 6.5-6.10 | |
Mar 9 | Problem Solving | Practice Problems | ||
Mar 12 | Linear Structures |
Maze.java Position.java RecSolver.java Maze0.txt | Lecture 16 | Bailey: Chapter 10.1, 10.3 |
Mar 14 |
Midterm Exam (no class) |
|||
Mar 16 | Linear Sturctures II |
Maze.java Position.java IterSolver.java QueueSolver.java Maze0.txt | Lecture 17 | Bailey: Chapter 10.2, 10.4 |
Mar 17- Apr 1 |
Spring Break | Spring Break | Spring Break | |
Apr 2 | Iterators |
FibonacciNumbers.java VectorIterator.java SLLIterator.java | Lecture 18 | Bailey: Chapter 8 |
Apr 4 | Iterators/Bitwise Operations |
SkipIterator.java ReverseIterator.java | Lecture 19 | |
Apr 6 | Trees | Lecture 20 | Bailey: Chapter 12 | |
Apr 9 | More Trees & Traversals |
BinaryTreeView.java InfiniteQuestionsTree.java | Lecture 21 | |
Apr 11 | Traversals | Lecture 22 | ||
Apr 13 | Priority Queue | huffman.jar | Lecture 23 | Bailey: Chapter 13 |
Apr 16 | Heap | Lecture 24 | ||
Apr 18 | Binary Search Tree | Lecture 25 | Bailey: Chapter 14.1-14.2 | |
Apr 20 | Binary Search Tree | Lecture 26 | Bailey: Chapter 14.3-14.4 | |
Apr 23 | Balanced Binary Search Trees | Lecture 27 | Bailey: Chapter 14.5-14.8 | |
Apr 25 | Game Trees | Lecture 28 | ||
Apr 27 | Graph | Lecture 29 | Bailey: Chapter 16 | |
Apr 30 | Graph Algorithms: Reachability | Lecture 30 | ||
May 2 | Graph Algorithms: MCST & Shortest Path | Lecture 31 | ||
May 4 | Graph | Lecture 32 | ||
May 7 | Dictionaries | NaiveProbing.java | Lecture 33 | |
May 9 | Hashtables | Lecture 34 | ||
May 11 | Wrapup, looking ahead |
Optional readings (not on exam): [A Cool And Practical Alternative to Traditional Hash Tables] [Cuckoo Hashing for Undergraduates] [Space/Time Trade-offs in Hash Coding with Allowable Errors] [Don't Thrash: How to Cache Your Hash on Flash] |
Lecture 35 | |
Final Exam | Bailey, class handouts, labs, lectures, and Piazza | |||