Resources and Reading List:
The course does not follow a single textbook. The following six works will be drawn on throughout the semester.
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. 4th ed., MIT Press, 2022.
- Donald E. Knuth. The Art of Computer Programming, Volume 1: Fundamental Algorithms. 3rd ed., Addison-Wesley, 1997.
- Donald E. Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching. 2nd ed., Addison-Wesley, 1998.
- Chris Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.
- Robert Sedgewick and Kevin Wayne. Algorithms. 4th ed., Addison-Wesley, 2011.
- Niklaus Wirth. Algorithms + Data Structures = Programs. Prentice-Hall, 1976.
Visualisations: These interactive sites are useful for building intuition about how data structures and algorithms behave over time.
- Data Structure Visualizations (David Galles, University of San Francisco)
- VisuAlgo (Steven Halim, NUS)
- CS Visualizer