Introductory Data Structures and Algorithms¶
- Lectures: Fridays, 2:30-5:30pm
- Location: ERC-SR10 Seminar Room 10, UTown (two storeys above Starbucks)
- Instructor: Ilya Sergey
- Office hours: Wednesdays, 5:00-7:00pm, #RC3-01-03E (Cendana)
- Peer Tutors:
- Tram Hoang, Wednesdays, 7pm-9pm, CR20 (RC3-01-02)
- Gabriel Petrov, Thursdays, 6pm-8pm, CR20 (RC3-01-02)
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
Lecture notes will be posted gradually as we progress through the material.
Slides and Supplementary Materials¶
Examples and Code¶
- Code from the lectures: each week
N
is a separate branchweekN
. - Example OCaml project with graphics
- GitHub Organisation (please, email me your GitHub handle to have access)
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
- Introduction to Objective Caml by Jason Hickey
- Real World OCaml by Yaron Minsky, Anil Madhavapeddy, and Jason Hickey