Introductory Data Structures and Algorithms¶
This course on classic imperative data structures and algorithms has been offered by Ilya Sergey at Yale-NUS College in 2019-2021. Feel free to use all the materials and submit pull requests on GitHub (the links to the sources are given below).
Please, get in touch is you’d like to get access to the homework assignments or to the model solutions for the midterm/final projects.
Lecture Notes¶
- 1. Week 01: Introduction
- 2. Week 02: Working with Arrays
- 3. Week 03: Complexity of Algorithms and Order Notation
- 4. Week 04: Divide-and-Conquer Algorithms
- 5. Week 05: Binary Heaps and Priority Queues
- 6. Week 06: Abstract Data Types
- 7. Midterm Project: Memory Allocation and Reclamation
- 8. Week 07: Hashing-Based Data Structures
- 9. Week 08: Searching in Strings
- 10. Week 09: Backtracking and Dynamic Programming
- 11. Week 10: Data Encoding and Compression
- 12. Week 11: Binary Search Trees
- 13. Week 12: Graph Algorithms
- 14. Week 13: Elements of Computational Geometry
- 15. Final Project: Vroomba Programming
Slides and Supplementary Materials¶
Examples and Code¶
- Code from the lectures
- Example OCaml project with graphics
- Midterm project starter code
- Final project starter code
- Sources of these lecture notes
Pull requests are welcome!
Textbooks¶
On Algorithms and Data Structures
- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
- (Optional) Algorithms, 4th edition by Robert Sedgewick and Kevin Wayne. This book has some great in-depth examples of basic algorithms.
On OCaml
- Real World OCaml by Yaron Minsky and Anil Madhavapeddy