Data Structures
Class Outline and Teaching Materials
Main Topics
- Asymtotic Notations [
terminology about sets,
intuitive explanations
(zh_TW),
frequently seen functions,
properties
]
[tools:
gnuplot (choose 5.2.8 => win64-mingw exe version),
interactive mathjax]
- Simple Sorting Algorithms [
visualization,
python repl,
Hints for Newbie Programmers,
selection sort,
insertion sort,
merge sort,
comparison,
]
- Recursion: 8 Queens [
visualization,
python,
boilerplate code (zh_TW),
more recursive problems,
call by value vs call by reference,
tail-recursive insertion sort
]
- Priority Queues and Heaps [
visualization,
notes
]
- Queues and Stacks [
activation record in function calls,
stack,
8 queens w/o recursion,
circular queue:
visualization,
code;
double-ended queue:
g4g,
wikipedia
]
- Pointers [
C/C++ pointers,
no need for pointers in python,
shallow copy vs deep copy (zh_TW),
]
- Linked Lists [
types,
visualization,
implementing,
using,
]
- Graph and Binary Relations:
binary relations: definitions and properties,
more properties,
examples (zh_TW);
graph:
terminologies,
(archived,)
more terminologies,
comprehensive,
two representations,
examples of trees,
rooted binary trees,
terminology of rooted binary trees,
- expression tree: a parser,
3 DFS traversal algorithms,
tree traversal in general,
expression tree,
parsing,
infix/prefix/postfix notation
- binary search tree:
visualization,
code
- balanced search trees: 234 tree,
animation ;
red black tree: wikipedia, U of Cincinnati,
Cornell,
geeksforgeeks, visualization;
b-tree;
AVL tree
- Hash Tables: why?, basics
- Graph Algorithms:
- BFS and DFS traversal:
BFS
and pseudocode,
DFS
and pseudocode,
workshape.io,
visualgo,
BFS implementation
- PFS: Stanford,
CMU,
CYUT (zh_TW)
- Prim minimum cost spanning treeh:
visualization,
geeks for geeks,
proof
- Dijkstra's shortest path:
visualization,
geeks for geeks,
proof
- Topological sorting:
visualization,
geeks for geeks
- Practical Suggestions for Programmers
Reference Books
-
Open Data Structures (in pseudocode) by Pat Morin
-
Lecture Notes for Data Structures and Algorithms by John Bullinaria
-
Lecture Notes on Data Structures by B. Padmaja
-
Data Structures and Algorithms with Python
by Kent D. Lee and Steve Hubbard
(Also see
other Springer books)
Appendix
-
Pointers and References
- Python shallow copy vs deep copy:
1,
2,
3
-
Data Structure Visualizations
- VisuAlgo
(back to course homepage)