I minored in computer science as an undergraduate, and got a pretty good education in it. But after four years, it was time for a review. I wrote this mainly for my own benefit, but it may be useful to anyone who learned about data structures and algorithms years ago and wants to refresh their memory about the finer points.
For example, these notes don't review basic Java syntax or simple examples of recursion, because I'm not at risk of forgetting those.
I do review, for example:
- the difference between virtual functions in C++ and Java
- how to implement a priority queue
- the union-find data structure
because those are easy to forget even if you vaguely remember them.