Michael Godfrey

``Relax dad, it's just drool.''

I am leaving Cornell. As of fall 1998, I will be an assistant professor at the University of Waterloo. My new home page is here. The remainder of this page is likely out of date.

Professional Info:

Research and Teaching Interests:

If you're looking for information on JavaDuck, it's here

My research interests include software engineering, configuration management, formal methods, and programming languages (but my interests in programming languages have little to do with lambda calculus or denotational semantics). In a nutshell, I am interested in exploring abstractions that may be derived automatically from source code. For a more detailed view, you can view my statement of research interests here. Some papers of mine can be found here.

In the spring of 1997, I gave a talk entitled On the Nature of Software Design as part of a Ph.D. professional seminar series at Cornell. Scribe notes from the talk can be found here and the slides from the talk (4-up Postscript) can be found here.

I have a healthy interest in (and strong opinions about) computer science education, particularly software engineering and CS1 courses such as CS100. I have taught CS1 and CS2 courses for several years, and been involved in courses that used C, C++, Java, and Object-Oriented Turing (see below). While obviosuly, there is a lot more to teaching programming than just picking the ``right'' language, my humble opinion is that pedigogically speaking, that list goes from worst to best. But then, I am biased. For the record,

Academic Background:

I graduated from the University of Toronto not once, not twice, but three times. While there, I taught a course in programming languages several times, as well as several courses in introductory computer science. I think they're still using some of the material I developed for the programming languages course (I'm still getting the royalty cheques).

My graduate supervisor was Prof. Ric Holt who got his Ph.D. from the Cornell Department of Computer Science around the beginning of time (in Unix terms). His thesis formalized the notion of deadlock; see any text on operating systems for details. He is also responsible for the Object-Oriented Turing programming language, which is used widely to teach introductory programming. If you think Java is a clean, well-designed language, you should have a close look at OOT.

Personal Info:


Mike Godfrey -- migod@cs.cornell.edu

Last modification: Thu Jul 23 17:50:56 EDT 1998