Headshot of Curtis
Curtis Bright
University of Waterloo School of Computer Science DC 2302C cbright


Presently, I am working on applying SAT solvers and computer algebra systems to problems in combinatorics and number theory. I defended my PhD thesis in March 2017.

In Fall 2015, I taught CS 136 alongside Gordon Cormack, a follow-up to CS 135 which uses the programming language C.

In Summer 2015, I was the sole instructor of CS 115, an introduction to computer science intended for non-CS majors.

In Fall 2014, I taught a section of CS 135, an introduction to computer science based around the programming language Racket.

In Summer 2014, I oversaw the implementation of a variant of the LLL algorithm in the open source number theory library FLINT.

Previously, I delivered tutorials and assisted running courses with a focus on data structures, algorithms, and logic. I spent most of the last decade becoming well-versed in mathematics: I have taken over 50 courses offered by the Faculty of Mathematics at the University of Waterloo, and have been a teaching assistant for over a dozen.

My Erdős number is 2, through the papers Minimal elements for the prime numbers (Bright, Devillers, Shallit) and New bounds on the length of finite Pierce and Engel series (Erdős, Shallit).


Things I've (co-)written which are available online.


Talks I've given which used slides.

Lecture Notes

I use LaTeX for taking notes. How well this works depends on the course content; it typically works better in pure mathematics courses than in computer science courses. Although I can't guarantee the accuracy or completeness of my transcriptions, I'm posting some notes for courses I've taken (or sat through) in the hope they will be useful to others. Let me know if you spot any typos, or even better, fix them yourself on GitHub.


I was the designer of the SCG logo, a spoof on a proposed UW logo. Other nonacademic projects of mine can be found on my personal website, www.curtisbright.com.