I received my Bachelor's degree (1967) and Doctorate (1970) from Oxford University where I was a member of The Queen's College.

From 1970 to 1982 I worked in the Department of Computing Mathematics at the University of Cardiff.

From 1982 to 1992 I worked at the School of Computer Science at Carleton University and was an adjunct Research Professor until 1999.

From 1992 to 2000 I was Professor of Algorithms in the Schools of Computer Science and Mathematics and Statistics at the University of St Andrews. From 1994 to 1997 I was Head of the combined School of Mathematical and Computational Sciences. I retain an association with St Andrews as an external fellow of the Centre for Interdisciplinary Research in Computational Algebra.

Before coming to Otago I was Professor in the Department of Mathematics at Auckland University for one semester.