I was born in Guelph, Ontario, Canada in 1956.
I received my BMath degree from Waterloo in 1978; an MSc from Ohio State University in 1980; and my PhD from Waterloo in 1981.
I held an NSERC post-doctoral fellowship at the University of Manitoba (Department of Computer Science) in 1981-1982. In 1982, I was awarded an NSERC University Research Fellowship, which I held at the University of Manitoba (Department of Computer Science) from 1982-1989.
I joined the University of Nebraska-Lincoln (Computer Science and Engineering Department) in 1990.
I moved to the University of Waterloo (Department of Combinatorics and Optimization) in 1998, when I was awarded the NSERC/Certicom Industrial Research Chair in Cryptography, which I held from 1998-2003. In 2002, I transferred to the School of Computer Science at Waterloo.
I held a Mathematics Faculty Fellowship from 2001-2004 and a University Research Chair from 2005-2011.
I was elected as a Fellow of the Royal Society of Canada in 2011 and I was named University Professor in 2013.