Data Structures
Class Outline and Teaching Materials


Main Topics

  1. Asymtotic Notations [ intuitive explanations (zh_TW) frequently seen functions, properties ]
  2. Simple Sorting Algorithms [ visualization, python repl, Hints for Newbie Programmers, selection sort insertion sort, merge sort, comparison, ]
  3. Recursion: 8 Queens [ visualization, python, boilerplate code (zh_TW), more recursive problems, call by value vs call by reference, tail-recursive insertion sort ]
  4. Priority Queues and Heaps [ visualization, notes ]
  5. Queues and Stacks [ stack, 8 queens w/o recursion, circular queue: visualization, code; double-ended queue: g4g, wikipedia ]
  6. Pointers [ C/C++ pointers, no need for pointers in python, shallow copy vs deep copy (zh_TW), ]
  7. Linked Lists [ types, visualization, implementing, using, ]
  8. Graph and Binary Relations: binary relations: definitions and properties, more properties, examples (zh_TW); graph: terminologies, more terminologies, comprehensive, examples of trees, rooted binary trees, two representations,
  9. expression tree: a parser, 3 DFS traversal algorithms, tree traversal in general, parsing postfix expressions
  10. binary search tree: visualization, code
  11. balanced search trees: 234 tree; red black tree: wikipedia, U of Cincinnati, Cornell, geeksforgeeks, visualization; b-tree; AVL tree
  12. Hash Tables: why?, basics
  13. Graph Algorithms:
  14. Practical Suggestions for Programmers

Reference Books

  1. Open Data Structures (in pseudocode) by Pat Morin
  2. Lecture Notes for Data Structures and Algorithms by John Bullinaria
  3. Lecture Notes on Data Structures by B. Padmaja
  4. Data Structures and Algorithms with Python by Kent D. Lee and Steve Hubbard (Also see other Springer books)

Appendix

  1. Pointers and References
  2. Python shallow copy vs deep copy: 1, 2, 3
  3. Data Structure Visualizations
  4. VisuAlgo

(back to course homepage)