I received my first degree in Mathematics and Physics from Carleton University in 1969, and my PhD in Computer Science from the University of Toronto in 1974. The subject of the thesis was how to match the representation of data and programs to computer architectures. I then joined the faculty, becoming a full professor in 1983, and Bell University Chair in Software Engineering in 2001. My research has been mainly on the subject of formal programming methods, and the mathematics of program construction in the areas of programming methodology and software engineering. I am the first winner of the annual Computer Science undergraduate teaching award. I have been a Visiting Scientist at Xerox Research Center, Palo Alto, a Visiting Fellow at Oxford University, a Visiting Researcher at the University of Texas, Austin, a Professeur Invité at the Université de Grenoble, a Visiting Professor at UBC, Vancouver, and at the University of Southampton. I am a member of IFIP Working Group 2.1 on Algorithmic Languages and Calculi, and IFIP Working Group 2.3 on Programming Methodology. I am an editor of Acta Informatica and of Formal Aspects of Computing. I have written two books (the Logic of Programming, Prentice-Hall, 1984, and a Practical Theory of Programming, first edition Springer-Verlag 1993, current edition online) and many journal and conference papers. I have given over a hundred invited lectures at institutions around the world. I have taught short courses in Marktoberdorf Germany, Macau China, Turku Finland, and Tandil Argentina. My former students have gone on to head major corporations and departments of computer science.
My personal webpage can be found here: http://www.cs.toronto.edu/~hehner/.