Data Structures and Data Management (CS240) is a second-year course required for all computer-science students in the Cheriton School of Computer Science of University of Waterloo. I served as CS240 instructor in the winter term of 2018.

About the course

CS240 covers classical basics in algorithms and data structures, plus a few more advanced topics, with an emphasis on the mathematical analysis of these methods:

  • sorting and heaps
  • balanced search trees, skip lists
  • hashing
  • tries
  • data structures for (orthogonal) range queries: quadtrees, kd-trees, range trees
  • string matching and suffix trees
  • compression: Huffman, Lempel-Ziv, Burrows-Wheeler
  • external-memory methods: B-trees, extendible hashing

Official resources

Lecture Videos

Encouraged by the positive experiences from advanced algorithms I was eager to record my lectures again.

Since the classes build heavily on the material created by numerous previous instructors, posting the videos publicly raised legal concerns, but we decided for a password-protected model on vimeo.


Recording the videos worked without problems; (apart from one session where I accidentally hit the start recording / pause recording shortcut twice …). I had the pleasure to use the extremely well-equipped rooms in Waterloo’s J.R. Coutts Engineering Lecture Hall building. In particular I could record the room’s cordless mic on the laptop, which made fine-tuning the volume much easier.

I meanwhile switched to a newer (but still dated) Thinkpad model, the X230 Tablet, which also has a touch screen on top of the stylus. This is a nice feature, but I ended up not using it much in class.

Screen resolutions

An issue was the screen resolution of the X230T: 1366x768. This is much less likely to be directly supported by projectors than the 1280x800 of the X201T. The following xrandr call allows to use the native resolution of the projector, but still show the same logical image as on the laptop touchscreen and thus solves these resolution issues once and for all:

xrandr --output VGA-1 --same-as LVDS-1 --scale-from 1366x768


This is a screenshot of the results of the official course evaluation for Data Structures and Data Management.

Already during the term, several students had approached me with feedback. Two students explicitly praised the flexibility to keep up with classes during a term they mostly spent off campus. Another student pointed out that it helped him to be able to re-watch material to catch up on topics he was struggling with.