Headshot of Curtis
Curtis Bright
Postdoctoral Researcher University of Waterloo cbright


I am currently the lead developer of the MathCheck project of applying SAT solvers and computer algebra systems to problems in combinatorics and number theory. My work has appeared in a number of high-profile venues including in the Journal of Automated Reasoning, at the AAAI Conference on Artificial Intelligence (twice), at ISSAC (twice), at CASC, at CASCON, in the Journal of Experimental Mathematics, in the Annals of Mathematics and Artificial Intelligence, and in the Journal of Symbolic Computation (twice). I have been awarded an NSERC postdoctoral fellowship for two years, starting in 2020. See my curriculum vitae for a summary of my academic career and my research statement for an overview of my research.

I am currently supervised by professor Vijay Ganesh of the University of Waterloo. I am also a visiting scholar of Wilfrid Laurier University and Carleton University working with professors Ilias Kotsireas, Kevin Cheung, and Brett Stevens.

I interned at Maplesoft in 2017 and 2018. I have written a number of Maple applications demonstrating how to effectively use Maple's SAT solver in a variety of problems.

In March 2017, I defended my PhD thesis, supervised by Vijay Ganesh and Krzysztof Czarnecki.

In Fall 2015, I taught Elementary Algorithm Design and Data Abstraction alongside Gordon Cormack to 258 students. This course is the follow-up to Designing Functional Programs intended for CS and math majors and uses the programming language C.

In Summer 2015, I was the sole instructor of 145 students in Introduction to Computer Science 1, an introduction to computer science intended for non-CS majors. As the instructor I was responsible for compiling 9 assignments throughout the term and each one consisted of questions newly developed by myself.

In Fall 2014, I taught Designing Functional Programs, an introduction to computer science for CS and math majors based around the programming language Racket. I coordinated with 5 other instructors to teach 876 students.

In Summer 2014, as a part of Google's summer of code I supervised (along with William Hart) the undergraduate student Abhinav Baid and oversaw the implementation of a fast variant of the LLL algorithm for lattice basis reduction in the open source number theory library FLINT. This code is available in the latest version of FLINT in the fmpz_lll module.

Bragging rights: 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). I have been awarded 0x$1.20 at Knuth's Bank of San Serriffe for finding a typo in The Art of Computer Programming present since the first edition (!) of volume 2 in 1969. In the 2015 version of his classic text Galois Theory, Ian Stewart cited a report of mine. Additionally, Noam Elkies once gave a talk referencing a result that I showed as an undergraduate student—the technical report is dear to my heart as one of the first papers I ever wrote.


Copies of my academic writings in reverse chronological order. The oldest are technical reports that are archived here as a part of my long-term commitment to improve the quality of my writing.


An archive of my academic talks that have used slides.


Academic posters that I've written and designed.