CO 330: Combinatorial Enumeration (Fall 2025)

This webpage will not be updated during the term.
All course materials will be posted on LEARN.

Syllabus: To be posted on outline.uwaterloo.ca later in the summer.

Overview: This course is about combinatorial enumeration: the counting of discrete objects using combinatorial techniques. Combinatorics lies in the intersection of pure mathematics, applied mathematics, and computer science, and this course will showcase the intriguing interactions between these areas. Part of the fun and the usefulness of combinatorial enumeration comes from the nice classes of combinatorial objects that we’ll study – which find application in areas from the analysis of algorithms to properties of DNA sequences – and our approach to these concrete problems will lead us to study general techniques for combinatorial sequences. We always strive for effective methods, meaning methods that are explicit enough that they can be implemented on a computer.

Assessment: Six assignments (30%), one midterm (30%), and a final exam (40%).

References: Course notes on enumeration.ca. You do not need to purchase any materials for this class.

Additional references include David Wagner’s CO 330 Course Notes, generatingfunctionology by H. Wilf, and Chapter 2 of An Invitation to Analytic Combinatorics by S. Melczer.

Use of Computer Software: I will be using the (free and open source) computer algebra software Sage to illustrate some examples during lectures. Although it is not necessary to learn Sage for the course, I will release the code used to generate these examples and playing around with it yourself can greatly help your understanding.

A short tutorial on Sage can be downloaded at this link or viewed as a static HTML page here. Possibilities for running Sage yourself include

  1. Installing Sage on your computer from its website (can be surprisingly tricky)
  2. Signing up for a free account on the online browser-based CoCalc service (warning: can be slow)
  3. Using Waterloo’s JupyerHub website (requires Waterloo login)
  4. SageMathCell for a quick computation (can’t save results)
  5. Using a cloud environment like mybinder.org (note: the use of mybinder for Sage is currently tricky due to a change under the hood)