Welcome to John Hamer's Home Page (est.1994)

A human being should be able to change a diaper, plan an invasion, butcher a hog, con a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyse a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. — R.A Heinlein, Notebook of Lazarus Long

I left the University of Auckland in 2012

I retain an Honorary position. You can still email me at J.Hamer@cs.auckland.ac.nz, but I am not available for supervision.

Research interests


Contributing-student pedagogy

Contributing-student pedagogies involves students authoring and sharing learning resources within and between courses. The learning environment is collaborative and cooperative, rather than competitive and individual.

Peer review

A long time ago, a solid grasp of the discipline's core knowledge was both necessary and sufficient for a graduate's career. Today, such core knowledge has become relatively less valuable: we typically measure the half-live of knowledge in small numbers of years or even months. Society is now demanding graduates who are adaptable, reflective thinkers capable of communicating and co-operating effectively. Specific domain knowledge routinely comes well behind such transferable skills in employer surveys.

The assignments and forms of assessment in common use today are largely a legacy from this bygone era. We persist in setting individual assignments that are (belatedly) marked by tutors (or, more often, senior students), providing little by way of useful, timely feedback. There is a clear need for novel forms of assessment better suited to the modern world

My contribution to this area is a web-based system, Aropä, for administering peer-reviewed assignments. Aropä provides several complementary mechanisms for evaluating the quality of the reviewing, and can be adapted to a wide variety of assessment contexts.

Aropä is written in PHP and runs on a MySQL database. Please contact me if you would like further information.

BRACE working group

I was a member of the BRACE study, a group of fifteen researchers from eleven institutions (in New Zealand, Australia, England and Scotland) investigating predictors to success in introductory programming.

The Leeds Working Group

The ITiCSE 2004 working group investigated the ability of introductory programming students to read (trace) and understand short programs involving generic, iterative processes on arrays. Twelve researchers from Australia, USA, Wales, New Zealand, Denmark, Sweden, and Finland collected performance data, interview transcripts and scratch paper doodles from a 12 question multi-choice test.

We concluded that many students exhibit fragile knowledge in these core skills, a result that goes some way to explaining the poor problem solving ability studied by the 2001 ITiCSE working group and observed by lecturers worldwide.

Our report appeared in the December issue of the ACM SIGCSE Bulletin

A follow-up study, using a broader set of MCQs, is currently being conducted by a group of New Zealand researchers (the "BRACE-let study").


The Lightweight Java Visualizer (LJV)

LJV.java is tool for visualizing Java data structures, using Graphviz. It has been used to good effect in a CS1 and CS2-level data structures course. The software is available under the GNU General Public License. Documentation for the system is in preparation. Meanwhile, there are some examples, and a paper I wrote on the system for the ACE 2004 conference (slides), and another paper that appeared in the 3rd Program Visualization Workshop (Research Report 407, Department of Computer Science, University of Warwick, 2004).

If you find this tool helpful, please send me an email.

Kyle Gillette has put together some material for AP Computer Science teachers that should be useful to anyone wanting a gentle introduction to the tool.

SE project students

MSc thesis students

Students thinking about taking a project or thesis are welcome to browse my list of research topics. to get an idea of the kinds of topics I am interested in supervising.

You might also like to read about the kind of grading criteria that may be used when marking theses and projects.

Fun stuff

Personal background

I have been associated with the Computer Science department since way back in 1983. The department had been in existence all of two years back then, so I can fairly claim to be one of its longest serving associates. I came to Auckland after studying for two years at Victoria University of Wellington, and completed my Victoria BSc during my first year at Auckland. I went on to enrol in a MSc, and then converted to a PhD in 1986. My PhD involved developing a declarative object-oriented language intended for applications in the building industry. The work was funded by the Building Research Association of New Zealand (BRANZ), and this enabled me to work as a Research Officer during 1988 and 1989. I completed my PhD in 1990 and became a lecturer in the department in December that year.

I have taught classes in Artificial Intelligence (07.363), Language Design and Implementation (07.431, SOFTENG 701), Software Engineering (07.230, SOFTENG 206), Logic and Functional Programming (415.360, SOFTENG 325), Introductory Computing (07.111), Computer Systems (415.210), Algorithms and Data Structures (415.105, 415.220, SOFTENG 250), Introductory Programming (COMPSCI 101), Formal Methods (SOFTENG 461/462), and Common Lisp (SOFTENG 701). I received a University of Auckland Distinguished Teaching Award in 1997, and was voted Best Lecturer in Software Engineering in 2003 and again in 2004 by the graduating year Software Engineering students. In 2007 I received AaeE's Programme that Enhances Excellence in Learning award for my work on Aropä.

I referee football (soccer), earning my NZ badge (#2139) in May 2008, and keep fit by running and cycling. I ran the Auckland marathon in 2006 and 2009, completed all six long races in the Leppin (now Xterra) off-road run series in 2007. In 2008 I swam, clambered and ran the "Full Monty" North Shore Coastal Challenge and ran the magnificent Cape Brett Challenge in the rain. I returned in 2009 to complete the Cape Brett Challenge in blazing sunshine. While on sabbatical in 2008, I completed four races in the Scottish Long Classics series: Ben Rinnes (profile), Ochil 2000s, Two Breweries, and Pentland Skyline (profile), as well as the Three Shires Hill Race (profile) in the Lake District. My slowest marathon was the 2010 Kaweka Challenge, in which I failed to break 9 hours (there were some hills, mind you).

I go out to find whatever comes
But the first fifteen minutes
are for trying to breathe, the next
fifteen are for using both legs
without almost having to count
cadence, and the second half hour
for water, two cheeps of a bird,
and the reassurance that
important chemicals
are now in the bloodstream ...
the first hour
is the hardest hour, but in the
second hour
something goes right without
your knowing:
a mixture of good motions, oxygen
and a certain giving-up
that permits you not to hurry
and gives you back for every
slow minute
two that are behind you ...
— Marvin Bell (1937–)