Welcome

Welcome to my SE Education page. Like a lot of my pages, it's still under construction, so please excuse any oddities that you may observe!
Danger - men at work!

The eventual intention (for when I reach that mythical state of having more time spare!) is to include some details of general resources relating to SE education. For the moment, though, it mainly contains details of my papers on the subject, plus three comments on the subject of more general resources relating to SE education.

Firstly, the most comprehensive (and hence probably most valuable) resource is the collected material from the Conferences on SE Education & Training, or CSEE&T.  These first started in 1987, initially under the acronym CSEE - the Training bit was added in 1997 - and have run almost every year since (to be precise, every year except 1993).  During the first years the conference was basically run by SEI (the Software Engineering Institute at Carnegie-Mellon University), but it has gradually grown into a separate entity, although SEI still provide some sponsorship for it.  The web site for the conference can be accessed by following this link, and this site includes links to the proceedings of nearly all of the conferences.

Secondly, I have occasionally been asked for my views on the relative merits of the various single-volume texts on SE.  My response is simple:  SE is such a large field that it can not be covered in one text book, and I think that authors who try to do so therefore run the risk of giving readers a view of the discipline that is just far too restricted.  Yes, I know that the better ones provide suggestions in every chapter for further reading, but I still think that the basic premise is wrong.  So, I wouldn't want to recommend any of them - sorry!

Thirdly, Tom Hilburn at Embry-Riddle Aeronautical University, who has been actively involved in the SE education research community for a long time, has assembled quite a comprehensive list of other resources on his SE education page.  As a practical example of reuse, I am not going to try to duplicate it:  follow this link to access it.


Overview of Papers

As I see it, there are three key issues in SE education: These three issues are so closely interlinked, though, that trying to classify papers rigidly under these headings didn't really work.  Originally, therefore, I had taken the boringly conventional approach of just listing the papers in chronological order, with a few notes for each to indicate how it relates to these three issues, if that's not obvious from the title.  For most of these papers abstracts are available, and for some (where the original version might be hard to get at, and I don't have to worry about copyright restrictions) the full text is available as well, usually as an Adobe Acrobat pdf file.

More recently, a wise colleague remarked to me at a conference that the list was sufficiently long that he would appreciate some guidance as to which papers he should look at first.  At the time I gave him the obvious answer - start with the most recent (ie the end of the list) and work back - but I realised that some more in the way of classification would be a good idea.  So, I have picked out some more detailed themes, and tried to assign the papers to them. 

In doing this, I realised that the themes do actually more-or-less split into two groups, one mainly concerned with the "what" and "why" questions above, and the other with the "how" question, so that's how they are organised here.

Themes in What to Teach in SE and Why

The Philosophy of SE Education

This theme includes particularly the roles of various kinds of issues in SE education.  The first of these, reflecting some of my other research interests, was the question of how mathematics (and associated formalisms) relate (or should relate) to SE education, and this is covered in [4] and [7].  Peter Henderson cited the latter in a column in ACM's SE Notes (30.1, January 2005, p 8 - but you may well need a subscription to the ACM digital library to access the full text from this page), and made some kind comments about it ("Highly recommended reading since the important points ring true today - they have been echoed in the CCSE Volume, ..." and he goes on to list other places).

The next question (chronologically) was that of how professional issues should relate to SE, since it is important to avoid the "professional issues ghetto" effect, and this issue is covered in [8].  Then, after our undergraduate SE programme had been running for ten years, I wrote a paper [12] that described its evolution over the period, and a discussion of how the underlying philosophy of the programme had evolved was an important part of that paper, even though much of it was concerned with more practical issues.  (Indeed, the discussion of these issues was thorough enough that one referee was kind enough to write of this paper that it "is a 'must read' for any one seriously considering the development of an undergraduate degree in SE"). 

A more general philosophical issue is the relationship between knowledge and skills (where I use the term "skills" in the high-level sense of "how someone can apply their knowledge", rather than in the limited sense of being able to drive particular software tools).  It seems to me that this is actually an increasingly important issue, because SE is essentially a practical discipline (and, for that matter, so too is most of the rest of computing), and this emphasis on practicality means that skills in this sense are at least as important as the knowledge that is being applied.  Indeed, I have come increasingly to the view that, both for planning the delivery of an individual module and for plannig a complete curriculum, the skills that students should be developing - and particularly skills at doing realistic tasks - are probably the most important aspect, meaning that the knowledge which the students have to acquire is determined primarily by what they will need to be able to apply when using those skills.

The first paper where I dealt explicitly with the importance of skills was [13], but that was a fairly general discussion of the issue of how knowledge and skills are related.  On the other hand, the concepts from it have then underpinned a number of the other papers discussed below, and in particular those related to the issue of progression in the curriculum, such as [17], [18], [19], [21], [25] and [31].

Curriculum Structures for SE

The early papers on this theme were concerned specifically with the structure of the SE curriculum, but more recently I have been trying to generalise this work to the whole of informatics.  (Aside:  I use the terms "informatics" and "computing" interchangeably, but of the two I usually prefer "informatics", at least within Europe;  readers who prefer the term computing can safely perform the relevant string substitution without losing anything.). 

My first thoughts on this subject, concerned with the roles of products, processes and people, were covered in [6], and these are still relevant, although they have been developed further since, notably in [10] (which to some extent is also reflected in [12]) and more recently in [24], which covers the application of this structure to the whole of informatics.  Other aspects have emerged along the way.  One of these is the role of recurring concepts, which is discussed in [14] and also in [22].  Another is the roles of the disciplines that are related to SE, but that are not part of its core, where a key issue is precisely how these do relate to the core of the SE curriculum, and this is covered in [15] and [16].  Perhaps the most important of these aspects is the role of modelling within SE, which I am increasingly coming to regard as an absolutely fundamental issue:  it is mainly covered in [19], [20] and [22], but because it relates to the role of formalisms (as mentioned above) it also underpins much of the discussion in [31].

Progression in the Curriculum

This is partly related to the issue of curriculum structures, since they need to support appropriate progressive development of knowledge and skills, but it also includes the issue of what standards students can be expected to reach at different stages.  This latter issue actually came first, and was covered initially in [17], which is concerned just with graduates at bachelors level;  the ideas are then extended to cover master's level graduates as well in [18]

The more general issue of progression is then based round a structure of three phases, namely programming, software development and software engineering, where these are defined primarily in terms of the kinds of skills that are being practised in each of these three activities.  This structure was introduced initially in [22], and is also referred to in [21] (which was written later but published first) and in [23].  A key feature of this structure, and the associated need for progressive development of skills, is that it is inteded to be applied to different topics within SE, and so far this has been done for two core topics:  one is software design, which is analysed in [25], and the other is the use of formal methods, which is analysed in [31].

Curriculum Structures for Informatics

As indicated above, a more recent concern has been to try to extend these SE concepts to cover the whole field of  informatics.  The first of these extensions, of the three-dimensional model of products, processes and people, has already been mentioned above [24]

The second of these extensions that I have looked at is concerned with the role of application domains [27].  This is a concept that is beginning to be recognised as increasingly important for SE curricula, and this paper both analyses this concept and argues that it is also highly relevant to wider curricula in informatics. 

The most recent of these extensions has been to extend the concept of three phases in the development of SE (as described above) to the more general issue of the role of SE within the wider informatics curriculum.  This has led to the recognition that current informatics curricula actually put too much emphasis on programming, and that to counter-balance this one needs to widen the view of what constitutes the core of the curriculum from programming to the second of these three phases, viz software development [30].  Of course, this then raises the issue of what the role of programming actually is, and that is analysed in [31]. What then emerged from this is that within informatics a distinction can be identified between what, by analogy with the equivalent distinction in mathematics, can be called pure and applied informatics, and this distinction is analysed in [33].

Themes in How to Teach SE

Tools and their use

This was where I started in SE education (although in those days I didn't particularly think of it as SE):  so [1] is concerned with helping in the teaching of assembly language programming, [2] with an early use of microprocessors in teaching and [3] with a tool for supporting programming exercises.  Since then I have not done anything specific on this topic, although the availability of suitable tools is still an important issue, particularly in the context of teaching formal methods.  There are some comments on this (but no significant analysis) in [23], and a bit more discussion in [28].

Case Studies

From tools I moved on to the issue of the approaches that could be taken to practical work in SE (whether supported by tools or not), and in particular to the issue of using case studies.  [5] describes some of the earliest approaches that I developed, relating to concurrent systems, and [9] and [11] look more generally at the role of systems analysis techniques, where case studies are often used.  For larger topics case studies tend to merge into projects (particularly when used early in the curriculum - capstone projects are a different matter, but so much has been written about them by others that I have avoided the topic of how such projects can be run), and this approach to using case-study type projects at earlier stages in the curriculum is the topic of [21] and of [26].

Another aspect of approaches to practical work that I have looked at more recently has been the issue of how students who are working on it find the information that they need to solve the problems that they encounter during it.  Initial results for this are described in [29], and more work has been done on it, but not yet published, since I had found more significant issues to examine.

Delivery of Particular Topics

This theme explicitly excludes the issue of case studies and tools, since they are dealt with separately above, even though some of the papers dealing with these issues are obviously relevant to this theme too.  Thus, there are two other particular topics that I have covered, and which need to be listed here.  One of these is data structures and algorithms [16].  The other is formal methods, and particularly the problems involved in introducing students to them:  specifically Z [23] and the use of extreme X-machine models [28], and the experiences reported in these papers have underpinned the work on developing skills at applying formal methods [32].

The Papers

A list of the paper titles follows, with links to the sections of this page that describe them.
  1. MicroSim as a Teaching Aid ;
  2. A Multi-User Microprocessor System Used for Teaching ;
  3. HANDIN: a System for Helping with the Teaching of Programming ;
  4. Mathematics in the Software Engineering Curriculum ;
  5. Practical Case Studies in Teaching Concurrency ;
  6. A Framework for Developing the Software Engineering Curriculum ;
  7. Software Engineering Education: Where's the Appliance of Science ;
  8. Curriculum Support for Professionalism ;
  9. The Role of Systems Analysis Techniques in Teaching Software Engineering ;
10. A Multi-Dimensional Model of the Software Engineering Curriculum ;
11. Teaching Systems Analysis Methodologies to Software Engineering Students: Experience with a Structured Methodology ;
12. The First Decade of an Undergraduate Degree Programme in Software Engineering ;
13. Knowing versus Doing:  Academic and Vocational Education for Informatics in the UK ;
14. Structuring the Recurring Concepts in the Software Engineering Curriculum ;
15. Structuring the Disciplines Related to Software Engineering:  A General Model ;
16. Teaching Data Structures and Algorithms in a Software Engineering Degree:  Some Experience with Java ;
17. Towards a Graduate Output Standard for Software Engineering ;
18. What Should Graduating Software Engineers Be Able To Do? ;
19. Modelling:  A Neglected Feature in the Software Engineering Curriculum ;
20. A Proposal for A SEEK Knowledge Area on Software Modelling ;
21. The Crossover Project as an Introduction to Software Engineering ;
22. The Role of Modelling in the Software Engineering Curriculum ;
23. Translating Diagrams:  A New Approach to Introducing Formal Methods ;
24. A Systems Model for the Field of Informatics ;
25. Stages in Teaching Software Design ;
26. Introducing Team Projects Early in the Curriculum ;
27. The Role of Application Domains in Informatics Curricula ;
28. A Semi-Formal Approach to Introducing Formal Methods ;
29. Where Do Students Look for Information? ;
30. Software Development as the Core of Informatics ;
31. The Role of Programming in Informatics Curricula ;
32. Stages in Teaching Formal Methods ;
33. Pure Versus Applied Informatics ;
34. Academy for SE Education & Training 2011 .



MicroSim as a Teaching Aid

Written jointly with Graham Brookes;
published in the Journal of MicroComputer Applications 6 (1983), pages 113-121.


A Multi-User Microprocessor System Used for Teaching

Written jointly with Graham Brookes and Gordon Manson;
published in the Journal of MicroComputer Applications, volume 7 (1984), pages 73-79.


HANDIN: a System for Helping with the Teaching of Programming

Written jointly with Jim McGregor;
published in Software - Practice and Experience, volume 15 (1985), pages 611-622.


Mathematics in the Software Engineering Curriculum

Originally published as pages 58-60 of the proceedings of the Second Workshop on the Teaching of Software Engineering, which was held in Sheffield (1991).
I had also organised this workshop, and so edited the proceedings, which appeared as Department of Computer Science Research Report CS-91-14 (1991). There are a few paper copies of this still available, and so I could supply one, if anybody should want to email me to ask for it.

An abstract is available.
The full text is available (in pdf format).


Practical Case Studies in Teaching Concurrency

Originally published as pages 48-53 of the proceedings of the IMPACT TEMPUS JEP and Hungarian Transputer Users Group Workshop on Parallel Processing in Education, which was held in Miskolc (Hungary) in 1993.

An abstract is available.
The full text is available (in pdf format), and includes some of the diagrams which were not in the original version, but were used in presenting it at the workshop.


A Framework for Developing the Software Engineering Curriculum

Originally published as pages 111 - 118 of the proceedings of ISEE-94, the ACM/IEEE sponsored International Workshop on Software Engineering Education (which was held in conjunction with ICSE 16), Sorrento (Italy) in 1994.

An abstract is available.
The full text is available (in pdf format).


Software Engineering Education: Where's the Appliance of Science

Originally published as pages 385 - 392 of Software Engineering in Higher Education (which was edited by G. King, C.A. Brebbia, M. Ross & G. Staples, and was the proceedings of the conference of the same name).
This was published by Computational Mechanics Publications, Southampton & Boston (1994).

An abstract is available.
The full text is available (in pdf format).


Curriculum Support for Professionalism

Published as pages 285 - 295 of The Responsible Software Engineer: Selected Readings in IT Professionalism (which was edited by C. Myers, T. Hall & D. Pitt, and was the proceedings of a conference called Professional Awareness in Software Engineering, that was held at the Royal Society in 1996).
The book is published by Springer Verlag, London (1997).

An abstract is available, and so is an extended abstract.


The Role of Systems Analysis Techniques in Teaching Software Engineering

This was submitted to IWSEE-96, the ACM/IEEE International Workshop on Software Engineering Education (which was held in conjunction with ICSE 18), Berlin, Germany (1996). However, it wasn't selected for presentation, and so isn't included in the proceedings of that workshop.
It was written to a fairly specific brief, set by the workshop organisers, but some of the material in it explored ideas that were then worked out in a different context in the paper Teaching Systems Analysis Methodologies to Software Engineering Students: Experience with a Structured Methodology which is documented below.

An abstract is available.
The full text is available (in pdf format).


A Multi-Dimensional Model of the Software Engineering Curriculum

Published as pages 44 - 55 of the Proceedings of the 11th SEI sponsored Conference on Software Engineering Education and Training, Atlanta, USA.
These are published by the IEEE Computer Society Press (1998).

An abstract is available, and this page also describes how online versions of the full text can be accessed.


Teaching Systems Analysis Methodologies to Software Engineering Students: Experience with a Structured Methodology

Published as pages 102 - 113 of the Proceedings of the 11th SEI sponsored Conference on Software Engineering Education and Training, Atlanta, USA.
These are published by the IEEE Computer Society Press (1998).

An abstract is available, and this page also describes how online versions of the full text can be accessed.


The First Decade of an Undergraduate Degree Programme in Software Engineering

Published in Annals of Software Engineering, volume 6 (1998), pages 61 - 90.

An abstract is available.


Knowing versus Doing:  Academic and Vocational Education for Informatics in the UK

As far as I am aware, this has not been published.  It was an invited paper, which was given at the International Symposium on Computer Employment and Education that was held in Amiens (France) in 1998.  It was intended that the formal proceedings would be published by the IEEE Computer Society Press, but I have never been advised that this actually happened, and I have not found any reference to these proceedings in the relevant digital archives.

An abstract is available.
The full text is available (in pdf format).


Structuring the Recurring Concepts in the Software Engineering Curriculum

Published in the e-journal FASE (Forum for Advancing Software Engineeering Education), volume 9 (February 1999).

Articles in FASE don't usually have abstracts, and so there isn't one available for this paper.
The full text of the issue containing the article is available (in txt format).


Structuring the Disciplines Related to Software Engineering:  A General Model

Published as pages 231 - 239 of the Proceedings of the 14th Conference on Software Engineering Education and Training, Charlotte, North Carolina, USA.
These are published by the IEEE Computer Society Press (2001).

An abstract is available, and this page also describes how online versions of the full text can be accessed.


Teaching Data Structures and Algorithms in a Software Engineering Degree:  Some Experience with Java

Published as pages 247 - 257 of the Proceedings of the 14th Conference on Software Engineering Education and Training, Charlotte, North Carolina, USA.
These are published by the IEEE Computer Society Press (2001).

An abstract is available, and this page also describes how online versions of the full text can be accessed.


Towards a Graduate Output Standard for Software Engineering

To be published in the proceedings of the International Summit on Software Engineering Professionalism, which was co-located with the International Conference on Software Engineering (ICSE) 2002, Orlando, Florida, USA.
These will be edited by the organisers of the summit (Barrie Thompson & Helen Edwards), and published by Sunderland University Press (2002).

An abstract is available.
The full text is available (in pdf format).
The OHP slides used for presenting it are available  (in pdf format, size 471kB).


What Should Graduating Software Engineers Be Able To Do?

Published as pages 88 - 98 of the Proceedings of the 16th Conference on Software Engineering Education and Training, Madrid, Spain.
These are published by the IEEE Computer Society Press (2003).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 309kB).


Modelling:  A Neglected Feature in the Software Engineering Curriculum

Published as pages 206 - 215 of the Proceedings of the 16th Conference on Software Engineering Education and Training, Madrid, Spain.
These are published by the IEEE Computer Society Press (2003).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 310kB).


A Proposal for A SEEK Knowledge Area on Software Modelling

Produced as a working document during the course of the 16th Conference on Software Engineering Education and Training, Madrid, Spain, and submitted to the Steering Committee for the development of the Software Engineering Volume within the Computing Curricula 2001 project.  This paper has not been published elsewhere.

An abstract is available. 
The full text is available (in pdf format).
 


The Crossover Project as an Introduction to Software Engineering

Published as pages 12 - 17 of the Proceedings of the 17th Conference on Software Engineering Education and Training, Norfolk, Virginia, USA.
These are published by the IEEE Computer Society Press (2004).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 472kB).


The Role of Modelling in the Software Engineering Curriculum

An extended version of the paper "Modelling:  A Neglected Feature in the Software Engineering Curriculum", selected after presentation at CSEE&T03 in Madrid for inclusion in a special issue of the Journal of Systems and Software.

Published in the Journal of Systems and Software, volume 75, (February 2005), pages 41 - 53.

An abstract is available, and this page also describes how online versions of the full text can be accessed.
 

Translating Diagrams:  A New Approach to Introducing Formal Methods

Published as pages 121 - 128 of the Proceedings of the 18th Conference on Software Engineering Education and Training, Ottawa, Canada.
These are published by the IEEE Computer Society Press (2005).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 312kB).


A Systems Model for the Field of Informatics

Originally presented at the Informatics Education Europe conference, Montpelier, France (9th & 10th November 2006), and then after the conference selected for inclusion in a special issue of Italics, the journal of the UK's Higher Education Academy Subject Centre for Information and Computer Sciences.

Published in Italics, volume 6.3, (July 2007), pages 47 - 64.

An extended abstract is available on the conference website, as is the PowerPoint presentation (in PowerPoint Show format) that was used when giving the paper at the conference.
The full text is available from the Italics website.
 

Stages in Teaching Software Design

Published as pages 141 - 148 of the Proceedings of the 20th Conference on Software Engineering Education and Training, Dublin, Ireland.
These are published by the IEEE Computer Society Press (2007).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 284kB).
 

Introducing Team Projects Early in the Curriculum

This was a session that I ran at the Academy for Software Engineering Education and Training, which was held as part of the programme for the 20th Conference on Software Engineering Education and Training, Dublin, Ireland. Unfortunately, however, there was no reference to the Academy in the conference proceedings, even though the other presenter was Mary Shaw, and so there is no citable publication for this session.
I produced quite a lot of material for this session, and this page provides access to this material.


The Role of Application Domains in Informatics Curricula

Published as pages 166 - 175 of the Proceedings of the 2nd Informatics Education Europe conference, Thessaloniki, Greece (29th & 30th November 2007).

An abstract is available.
The full text is available (in pdf format, size 57kB).
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 173kB).
 

A Semi-Formal Approach to Introducing Formal Methods

Published as pages 126 - 140 of the Proceedings of the 3rd South-East European Workshop on Formal Methods, Thessaloniki, Greece, November 2007.

An abstract is available.
The full text is available (in pdf format, size 468kB).
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 150kB).
  

Where Do Students Look for Information?

Published as pages 207 - 214 of the Proceedings of the 21st Conference on Software Engineering Education and Training, Charleston, S. Carolina, USA.
These are published by the IEEE Computer Society Press (2008).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 155kB).
 

Software Development as the Core of Informatics

Published as pages 155 - 169 of the Proceedings of the 3rd Informatics Education Europe conference, Venice, Italy (4th & 5th December 2008).

An abstract is available.
The full text is available (in pdf format, size 114kB).
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 179kB).
 

The Role of Programming in Informatics Curricula

Published as pages 3 - 10 of the Proceedings of the 4th Informatics Education Europe conference, Freiburg, Germany (5th & 6th November 2009).

An abstract is available.
The full text is available (in pdf format, size 114kB).
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 179kB).


Stages in Teaching Formal Methods

Published as pages 17 - 24 of the Proceedings of the 23rd Conference on Software Engineering Education and Training, Pittsburgh, Pennsylvania, USA.
These are published by the IEEE Computer Society Press (2010).

An abstract is available, and this page also describes how online versions of the full text can be accessed.
The slide handout from PowerPoint used for presenting it is available  (in pdf format, size 159kB).
 

Pure Versus Applied Informatics

Published in the Proceedings of the Eqanie Conference on Learning Outcomes, Vienna, Austria. These proceedings are only accessible via the web, and so there are no page numbers for the paper.

An abstract is available, and this page also describes how the online versions of both the full text and the slides used in presenting the paper can be accessed.
 

Academy for SE Education & Training 2011

I acted as chair for the Academy for Software Engineering Education and Training, which was held as part of the programme for the 24th Conference on Software Engineering Education and Training, Honolulu, Hawaii, USA. In this role, I was therefore responsible for organising the programme for the Academy. Unfortunately, however, there was no reference to the Academy in the conference proceedings, and so I do not have any citable publications for it.
Details of the programme that I organised can be found by following this link.
 


This page created by A. J. Cowling, and last updated on 22 March 2012