IE 172: Algorithms in Systems Engineering (Python)
Miscellaneous Handouts
Lecture Slides
- Introduction
- Lecture 0: Introduction to Python
- Lecture 1: Introduction to Algorithms
- Lecture 2: Python and Abstract Data Types
- Lecture 3: Efficiency and Correctness
- Lecture 4: Growth of Functions
- Lecture 5: List Data Structures
- Lecture 6: Stacks and Queues
- Lecture 7: Recursion
- Lecture 8: Analyzing Recursive Algorithms
- Lecture 9: Dictionaries and Hash Tables
- Lecture 10: Hash Table Implementation
- Lecture 11: Sorting Algorithms
- Lecture 12: Quicksort
- Midterm Review
- Lecture 13: Trees
- Lecture 14: Tree Data Structures
- Lecture 15: Heaps
- Lecture 16: Binary Search Trees
- Textbook Slides, Chapter 6 (BSTs)
- Binary Search Tree Visualization
- Another Animation of Binary Search Trees.
- Lecture 17: Graphs
- Lecture 18: Graph Search
- Lecture 19: Shortest Paths
- Lecture 20: Dijkstra’s Algorithm
- Lecture 21: Minimum Spanning Trees and Prim’s Algorithm
- Lecture 22: Kruskal’s Algorithms and Union-Find
- Lecture 23: Introduction to String Matching
- Lecture 24: String Matching Algorithms
- Lecture 25: Introduction to Cryptography
- Lecture 26: RSA Public Key Cryptography
- Final Review
Codes Used in Lecture
Laboratory Files
- Laboratory 0: Introduction to Python
Course Software
- Visual Studio Code
- Python
- Graphviz
Course Text and Other References
- Problem Solving with Algorithms and Data Structures using Python, Bradley N. Miller and David L. Ranum (register and access the free on-line version here)
- Introduction to Algorithms, Thomas H. Cormen (Editor), Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
- Algorithms: Sequential and Parallel, Russ Miller and Laurence Boxer
- The Design and Analysis of Computer Algorithms, Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman
- Algorithms in C++, Robert Sedgewick
- The Art of Computer Programming, Volume 1: Fundamental Algorithms, Donald E. Knuth
Python Links
- Python
- Python Tutorial
- Google’s Python Class
- A Python Tutor and Visualizer
- Code Like a Pythonista: Idiomatic Python
- Guide to Python’s magic methods
Algorithms Links
- Specific Algorithms
- Extended Euclidean Algorithm (Wikipedia)
- Modular Multiplicative Inverse (Wikipedia)
- Euclidean Algorithm (Wolfram)
- Fast Fibonacci Algorithms
- Top 10 Algorithms List
- The Algorithm Repository Steven Skiena SUNY Stony Brook
- Animation of Heap Sort
- Animation of a Heap
- Animation of binary search trees.
Other Interesting Links
If you find something here useful, buy me a beer!