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 .
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,
- I think Java is a fabulous second language. It's also a pretty
good first language.
- I have great trouble with the argument that beginning CS majors ought
to learn C (or C++) first so they can get a summer job. My view is
that first-year CS students should not be programming in C in
the ``real world'' before they have a good handle on basic programming
skills.
- While it is probably inevitable that an ``objects-first'' approach
will become the way to teach CS1 in the near future, I think it's a
more of a coping technique than a way of teaching real understanding
and insight.
- Many CS1/CS2 instructors do not fully appreciate how hard it is to for
their students to program with buggy tools, unchecked array bounds, and
various moving targets. Part of dealing with complexity is minimizing
distractions.
- You shouldn't teach recursion in much detail before your students know
what a stack is (not everyone shares this point of view).
- CS undergraduates do need to learn program in C eventually or
they will never develop an appropriate level of intuition/paranoia
about what can go wrong and how. C is not just another programming
language; its proper use requires a profound understanding of
programming at a lower level of abstraction than most highl-level
languages. Likely this issue will become less important over time, but
it's still important now.
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:
- Visiting Toronto? Here is a page of my
favourite things to do.
- Je suis canadien errant
newly arrived in Ithaca as of August 1996. I still say 'zed' and
'to-matt-owe', eh. For fun, I've started a page of coping tips for
Canadians who live in the US here
(contributions welcome!).
- My wife's name is Anita Buttemer. She teaches Suzuki violin and
viola. There's a photo of her here.
- We have a vigorous toddler, named Trevor Cameron Buttemer Godfrey.
He has red hair, unlike either of his parents, but like his grandfather
and two uncles. I have a bunch of photos of him
here.
- Here is a work in
progress.
- In private life, I am a hockey maniac, folk music afficionado, amateur
food snob, and connoisseur of fine British comedy.
Mike Godfrey --
migod@cs.cornell.edu
Last modification: Thu Jul 23 17:50:56 EDT 1998