Site menu:

Teaching History

My academic teaching experience began in 1991. Over this period, I have taught a range of papers. Those listed on this page are those in which I have had responsibility for developing the teaching resources and the direction of teaching.

Aston University (2011-current)

Problem Solving / Computatioanl Reasoning and Communication


To explore problem solving and computational reasoning in the context of being able to communicate computational ideas to others and to produce program code. The focus is on computational thinking and the patterns of thought used by programmers primarily using the functional, imperative / procedural and object-oriented paradigms. However, this style of thinking has wider applications so part of the objective is to broaden and strengthen the problem solving skills of the students. The module is aimed at being practical and encouraging thinking about how to improve one's ability to problem solve and to think computationally.

Java Programming Foundations


Making use of the Java language and taking a practical apprenticeship approach, the module acquaints the student with the fundamental concepts of software development in an object-oriented framework and builds ability in applying those concepts within an introductory software construction environment.

Testing and Reliable Software Engineering


Students will gain a practical and academic appreciation of software testing and its importance in creating reliable software. This knowledge will be applied in the context of agile and traditional approaches to developing software.

Reliability in Software Engineering


To explore the issues related to reliable software engineering and the practices that are used. The students will explore the relationship between different software methodologies and process improvement models as they relate to creating and engineering reusable, reliable software.

University of Birmingham (2009-2011)

First Year Software Workshop 1


A first module in imperative, object-oriented programming, with a strong emphasis on practical program development skills.


The aims of this module are to:

Evaluation and comments

Lead the delivery of the introductory programming course. Included planning teaching strategy, lectures, and assessments. Assisted by a Teaching Instructor who managed a team of tutors and demonstrators, and a Teaching Assistant who helped prepare the weekly in-course assessments.

Team Java Workshop (Year 2)


A large programming project using Java. Students work in teams of about five people.


The aims of this module are to:

Evaluation and comments

In this course, the students were assigned to teams of four and given the task of writing a multi-player game. As the lead lecturer, I provided the overall direction for the course and delivered a number of lectures to give the students guidance. I had a team of five teaching assistants who meet with the teams weekly.

System Software Components (Year 2)

The course taught a number of different java programming techniques related to the use of files, XML, graphics, sockets, and threads. My role with this paper was to provide support for the primary lecturer. This included delivering supplementary lectures and assisting in the writing of assessments.

Internet Computing Workshop (MSc)

The course taught a range of internet technologies including the use of secure sockets, Java servlets, Java Server pages (JSP), JavaScript, Hibernate, Spring, and Wicket>. I assisted by delivering some lectures, running a tutorial group, writing assessments, and assisting in the computing labs.

Java Workshop (MSc)

This course taught introductory Java to students with a background other than computing. My role on this course was to run a tutorial group.

Massey University (1999-2007)

Design and Development of Web-based Information Systems (Year 2) (2007)


A fundamental study of modelling principles and techniques used to develop Internet sites and applications in E-Business, learning, entertainment and information sites. A practical approach is taken focusing on development methodology, underlying modelling principles and realisation techniques.

Evaluation and comments

The real focus of this course was the web-based technologies with particular emphasis on XML-based technologies. I attempted to focus on the theories and principles behind the technologies.

Principles of Programming (Year 1) (2006)


An introduction to the practices and principles of modern computer programming. A high-level programming language is used to introduce the concepts that underlie programming languages.

Evaluation and comments

This was taught as a distance learning course using Java programming using BlueJ and an objects first approach. It relied heavily on the prescribed text (Barnes & Kölling 2005). WebCT discussion forums was used to support the paper. An initial web-based exercise designed to generate discussion on "What is a program(me)?" was an addition that I added to the course content.

A strategey was prepared for 2007 using a set of resources that fostered more on-line interaction and discussion of the underlying conceptual frameworks for programming. The assessment strategy was also being changed to further foster involvement in the discussion and to have three submission points of assignment work during the semester. These revisions ideas were based on my PhD research data gathering.

Object-oriented Design and Development (Year 3) (1999-2005)


A study of theories and practices related to object-oriented systems development for business applications, including the structuring of applications, patterns, and emerging systems development practices.

Evaluation and comments

The development and changes in this course show the changes that occurred in the move from the more practical focus of a polytechnic to a more theoretical foundation of a university third year paper. It also moved from being the introductory paper to object-oriented software development to a paper that followed on from a paper that had taught Java programming. The paper ended up with a focus on design principles and patterns (Shalloway & Trott 2005).

The paper focused on developing an understanding of design patterns and object-oriented design principles. Students were expected to complete a design exercise illustrating the use of a number of design patterns.

Class sessions were designed around discussing readings from the set text and the design principles and patterns introduced in those readings. The students were unfamiliar with this approach and seemed to expect to be told the answers to questions rather than work out the solutions for themselves. This improved as the semester progressed.

Class sessions were designed around discussing readings from the set text and the design principles and patterns introduced in those readings. The students were unfamiliar with this approach and seemed to expect to be told the answers to questions rather than work out the solutions for themselves. This improved as the semester progressed.

The teaching strategy utilised regular classroom formative assessments which helped monitor the understanding being developed by the students. These classroom assessments asked questions designed to uncover the conceptual understanding being developed by the students.

Unfortunately this paper was a casualty of a staffing review.

The Open Polytechnic of New Zealand (1996-1999)

Systems Design and Development (Year 2)

I was the primary writer of the learning materials for this paper using a scenario-based learning approach (Thompson 1997). This writing style was then used to influence the development of the rest of the papers for the degree programme. This was my first attempt at writing distance learning materials.

This paper was written to teach object oriented-design and programming using Delphi. The reference text was Norman (1996). It was chosen as it was dedicated to the object-oriented approach to analysis and design. This was also my first attempt to teach a paper that focused on teaching object-oriented software development.

There proved to be too much material in the paper.

The scenario-based learning approach used in the development of these papers was documented in Thompson (2003). A proposal for a scenario-based online learning environment is documented in Thompson (2004).

Unitec Institute of Technology (1991-1994)

Programming Principles (Year 1)

A workbook (Thompson 1993) was developed for this paper that followed a sequence based on what is a program, how do we write programs, what is a syntactically and semantically correct sentence, and procedural programming logic. The development of this workbook changed the course from over 50% drop out rate to 70% plus completion rate. The theory behind why this worked was not studied or considered.


Barnes, D. J., & Kölling, M. (2005). Objects first with Java: A practical introduction using BlueJ (2nd ed.). Harlow, England: Pearson Education Limited.

Norman, R. J. (1996) Object-oriented systems analysis and design, Upper Saddle River, NJ, Prentice Hall.

Shalloway, A., & Trott, J. R. (2005). Design patterns explained: A new perspective on object-oriented design (2nd ed.). Boston: Addison Wesley.

Thompson, E. (1993) CBC-PP100 programming principles workbook , Auckland, Carrington Polytechnic.

Thompson, E. (1997) 71253 Systems Design and Development, Lower Hutt, The Open Polytechnic of New Zealand.

Thompson, E. (2003). Giving a context to learning. In E. Errington (Ed.), Developing Scenario-based Learning: Practical insights for tertiary teachers (pp. 74-82). Palmerston North: Dunmore Press.

Thompson, E. (2004). Design issues for a scenario-based learning environment (Technical Report No. 4/2004). Palmerston North: Department of Information Systems, Massey University.