|Psychology of Programming
|about newsletters workshops resources contents|
Editor: Chris Douce
Welcome to the Autumn 2008 edition of the PPIG newsletter. This issue has taken quite some time to prepare, but I hope it is worth the wait.
Firstly, a bit of news. My time as editor of the PPIG newsletter has come to an end. I am indebted to the time and energies of all the past contributors: it is you who make the newsletter what it is. I have had a great time editing the newsletter and have learnt a great deal, but now the time has come to give others the chance to edit the newsletter. The newsletter baton will be passed onto Roman Bednarik, Assistant Professor at the Department of Computer Science and Statistics, University of Joensuu, Finland. Roman, I wish you luck!
This issue begins with a description of the last PPIG workshop, hosted at the University of Lancaster, skillfully organised by John Rooksby, who has since escaped to St Andrews. Cheers, John! You did a great job! Alison Hull does a sterling job of telling us what happened, and to whom!
This issue also contains an outline of the last work in progress workshop that took place at the University of Sussex back in February 2008. The event was orchestrated by Johanna Hunt who came armed with a whole range of different prizes relating to performance in poetry (and not programming). This section of the newsletter contains some information about the next Work in Progress event which is to be held at the Open University in the UK.
In this issue, Thomas Green presents as with an article about a programming language called Inform 7 - a language that can be used to create textual worlds. This links closely to an announcement by Judith Good which can be found in the perpetual spotlight section.
Please find enclosed all the regular collection of bits and pieces. Perhaps this formula will change in the next issue? Only Roman can tell us! As always, if you have any ideas or suggestions for articles, please feel free to get in contact. Keep in touch!
by Alison hull
The twentieth Annual Workshop of Psychology of Programming was held at the University of Lancaster. The campus itself is located just south of the City of Lancaster, which is in the North West of England. The campus is set in country surroundings, which is emphasised when entering the campus via the main approach road with the roadside sign of "Warning Ducks Crossing" (not a road sign commonly found on a city centre campus!).
The workshop got underway in the morning with the Doctoral Consortium, which was well attended in the InfoLab21 building.
A large proportion of the papers presented were concerned with the learning of programming. Ana Isabel Pacheco's project is looking at problem solving skills and identifying key mathematical skills that students must understand in order to succeed in programming courses. Gabriela Pavel's project is looking at how people learn complex concepts from images and how learning can be supported using machine learning techniques. Joana Henriques is exploring cognitive skills for learning programming. Siti Soraya Abdul Rahman is focussing on using learning styles to develop an adaptive example-based educational programming environment. Finally in this area, my work is using cognitive and motivational feedback in learning programming.
Aiko Fallas Yamashita's project is focussed on a multi-method approach to evaluating software comprehensibility and maintainability. Iftikar Ahmed Khan is exploring possible links between a programmer's keyboard/mouse clicks and their mood. Peter Khooshabeh is examining augmenting spatial information processing in 3-D visualisation. Luke Church is concerned with improving user experiences of computation. Last but by no means least, Glauco de F. Carneiro's project is concerned with software visualisation tools in terms of comprehension.
Thank you to Maria Kutar, Thomas Green, Jim Buckley and Chris Exton for their useful feedback to each participant of the Doctoral Consortium.
The main workshop started on Wednesday afternoon and contained keynote speakers, paper sessions and tutorials. The workshop was held in the Anglican & Free Church chapel within the Chaplaincy Centre.
The Chaplaincy Centre
The conference opened with the first keynote talk provided by Alan Dix who explored the changes in coding over the past forty years, from the first publication of Knuth's "The Art of Computer Programming".
The first paper of the first session ('Program Comprehension') was presented by Jim Buckley and examined the issue of information seeking by Open Source software programmers. Chris Exton kindly moved his presentation forward a session after one paper author was unable to attend. Chris presented a paper that considered questions from a psychological viewpoint of why, how and when we think in objects. The final presentation of this session was given by Chris Douce who presented the Stores Model for program comprehension.
The second paper session ('Core Beliefs') started with a presentation by Luke Church who gave alternative perspectives to computational thinking. The final paper of the day was given by Judith Segal who discussed the differences between scientists developing their own software and software engineers developing scientific software.
The InfoLab21 building was the location for the evening reception where good food/wine and a good time were enjoyed by all. John Rooksby was the quiz master throughout the evening with a programming themed quiz (a sample question is shown below. The answer is at the end of this review...).
The quiz was won by the "Quickly" team with the prize of two bottles of wine, which were well received, hic...
The Winning 'Quickly' Team
Sample Quiz Question
Thursday contained a full schedule that started with a keynote talk from Margaret-Anne Storey who discussed the use of comments and annotations in source code.
The first session ('Pair Programming') of the day contained two papers. Stephan Salinger discussed work concerned with defining a multi-layer terminology for analysing pair programming. Laura Plonka talked about differences and similarities from studying student and professional pair programmers.
The next session ('Software Development') started with a presentation from Luke Church who described a technique of transforming structured text by inferring an underlying model. Steve Russ presented a paper, on behalf of his colleagues, which focussed on the role of intuition in software development. Next Zahid Hussain described a research project to integrate Extreme Programming with user-centred design. This followed by a presentation from Martin Lechner which analysed problems that can be experienced when introducing Extreme Programming.
The third session ('Factors Affecting Coding') got underway after lunch with a presentation from David Greathead who discussed research exploring relationships between personality type and student code comprehension. Next Adrian Creegan talked about work researching the effect of inheritance depth in object oriented programs on programmer maintenance. The final paper of the session was presented by Iftikhar Ahmed Khan who discussed research on measuring the mood of programmers by monitoring their keyboard presses and mouse clicks.
The afternoon ended in a tutorial session, with the choice of two tutorials that ran in parallel. Thomas Green and Luke Church lead a workshop that explored the Cognitive Dimensions framework, while Dave Randall, John Rooksby and Mark Rouncefield lead the workshop that looked at the various practical issues that can be encountered during fieldwork.
The conference dinner was held at The Borough, a gastro pub in the heart of the Lancaster city centre. A good evening was enjoyed by all, where everyone had the opportunity to round off their meal with some Cool Cow ice cream that found its way into every choice of desert.
A thank you should go to PPIG for kindly paying for the evening's drinks...
The final day of the workshop started with a 'Teaching Programming' session containing two papers. Walter Milner presented work on researching how novices comprehend elementary programming notions, with particular focus given to mental spaces and loop statements representing compressions. The second paper by Jussi Kasurinen discussed a research project studying visualisation in introductory programming with the use of 'Turtlet', a 2-D visualisation tool.
Next followed the 'special' session, where everyone had a choice joining one of four groups to discuss a particular topic and then report back to the main group. The list of breakout sessions and the speakers who were 'nominated' from each group are:
The 'Meta Session' was the final paper session of the workshop. David Budgen presented outcomes and experiences from six mapping studies, identifying challenges faced in improving classification guidelines. Mark Turner presented findings from an initial systematic literature review of studies on pair programming to teach introductory programming. The final paper in this session was given by Glauco de F. Carneiro who discussed concepts and guidelines for requirements of software visualisation tools in terms of comprehension.
The lunch on the final day was in the form of pack lunches, with the original plan to walk down to the pond and park area on campus to enjoy lunch outdoors. Unfortunately even such best laid plans can be foiled by the great British weather... Earlier heavy rain meant that plan B was put in place, with the pack lunches enjoyed in and around the Chaplaincy Centre.
The final keynote talk was given by Adrian MacKenzie who discussed trends in the field of synthetic biology from a software engineering perspective.
In keeping with PPIG tradition, the workshop was concluded with a prize giving session, with the prizes listed below (apologies if I have left anyone out of this list, I wasn't there!).
A thank you gift for John Rooksby
In conclusion, a big thank you to John Rooksby and the rest of the organising committee for all their work, which ensured that PPIG 2008 was another well attended, interesting and varied workshop.
I hope to see you all again in Limerick, Ireland, for PPIG 2009.
As promised, the answer for the quiz!
by Luke Church and Chris Douce
21-22 February, 2008
Department of Informatics, University of Sussex, UK
The fourth PPIG work in progress meeting was hosted (and skilfully organised) by Johanna Hunt, from the Department of Informatics of the University of Sussex between the 21st and 22nd February.
The aim of the workshop was to provide an informal forum to foster discussion of new and on-going projects within the area of the psychology of programming. As with all PPIG events, the interdisciplinary nature of the 'organisation' was highlighted with an introductory presentation by Thomas Green.
The first presentation, entitled, 'Work practices and the economics and psychology of Software Testing' by John Rooksby connected the importance of testing practice to some ethnographic studies of diagnostic practice he had conducted. John also presented an overview of the forthcoming annual workshop which is to be held in Lancaster University. He tempted us all with sumptuous images of Lancaster, the university, the venue and promised that a good time would be had by all.
The organiser of the work in progress workshop, Johanna Hunt, gave a thought provoking presentation how programmers of mixed ability levels can work together to solve a programming problem within an event known as a 'Coding DoJo'. Pairs of programmers were randomly selected to work together for five minutes at a time before being changed. I found it interesting that the activity also occurred within the Brighton Arts festival, and that the resulting solutions were quite substantial in terms of their length. More information about what a DoJo is can be found on the CodingDojo website
Sharing of knowledge and wisdom is something that always happens at PPIG events. In this workshop a special slot was made for Judith Segal who talked about what she has been doing, what has inspired her and the challenges that she has faced. Judith described some of the areas in which she worked: beginning with algebra, looking at the understanding of recursion and the emergence of tutoring systems. Recently she has been performing qualitative studies of programmers working within science communities. Judith emphasised that both qualitative and quantitative approaches are equally useful and passed on to us her observation that people are sometimes more willing to help with research than you might expect.
A presentation by Chris Douce took us to a different dimension where he spoke about how the immersive virtual environment Second Life might be able to be used to teach certain aspects of Programming. Chris took us on a quick tour of the things that he found during a short period of investigation, taking us to a nightclub, a poster exhibition, a programming class, two libraries and a 'sandbox' area where you can build things. Potential uses may include introduction to what a programming language is, the use of 'virtual quests' and the potential to develop immersive animations of data structures and algorithms.
Luke Church presented a visually appealing presentation that described a continuum (or dimension) where programming as a formal design activity exists on one side and programming as an activity where designs emerge from the environments in which they are situated is on the other. An interesting example from the came Command and Conquer was used to illustrate the difference between the two extremes. Following Thomas's introduction, Luke's presentation was thoroughly interdisciplinary. He drew on gaming, design and choreography as sources of inspiration.
Alison Hull presented her work within the area of Intelligent Tutoring systems where she addressees the important areas of user interface design and how it may effect end user motivation. Her work to date has explored the feedback mechanisms of a number of different intelligent tutoring systems, including that of ELM-ART, a system described by Weber and Brusilovsky. Alison poses a number of current research questions including whether storing of earlier code fragments in an ITS may be useful, issues surrounding task granularity and how motivation might be recorded.
Quentin Cutts with the help of Emily Durrant presented a study that assessed the effectiveness of interventions that were designed to improve the views of students who may be experiencing difficulties with programming. Their presentation opened an interesting and relevant discussion about experimental methods, statistics and ethics - issues that underpin every one of the earlier presentations.
After a rather exciting bus ride back into town the meeting moved to the Gars Restaurant in Brighton, serving an excellent range of Chinese food. As the beef sizzled and the wine was consumed the day's events were discussed and digested.
The second day started with a talk by Judith Good and Pablo Romero demonstrating the STAGE project, helping children to learn programming techniques through recording scripts for virtual characters. Much thought was given to the educational question of how children might go from the specific tasks, to a general understanding of 'computational thinking'.
Luke Church then returned to present a discussion of how lessons learnt in the psychology of programming community could be applied to the design of programming languages for modelling biological systems, with some consideration of how such languages may share properties with domain specific languages in general.
Thomas Green then wrapped up, concisely summarising the material covered and wondering whether natural language processing technology has become sufficiently mature to support interesting programming languages such as Inform, a language for interactive fiction. Is this an interesting way to reduce viscosity, or just a recipe for hidden dependencies? Perhaps time will tell...
Thanks are extended to Johanna Hunt who provided the badge making equipment, fantastic refreshments and bags containing copies of all presentations.
As a result of discussions that occurred during the main PPIG workshop, the next Work in Progress event is likely to take place in the Open University, Milton Keynes.
[ top ]
Centre for Research in Computing, Open University, Milton Keynes, UK, 8-9 January 2009
The Psychology of Programming Group (PPIG) invites software engineers and researchers to submit abstracts for its 5th Work-in-Progress meeting, to be held at the Centre for Research in Computing at the Open University, Milton Keynes, UK.
The PPIG work-in-progress workshop is a forum in which researchers at all levels can present and discuss current work and recent results, findings and developments concerned with psychological aspects of software development. A feature of the PPIG workshops has been their openness to a wide spectrum of concerns related to programming and software engineering, from the design of programming languages to communication issues in software teams, and from computing education to high-performance professional practice. Similarly, PPIG entertains a broad spectrum of research approaches, from theoretical perspectives drawing on psychological theory to empirical perspectives grounded in real-world experience.
Papers should address issues related to cognitive or social aspects of programming and/or analysis of software development behaviours. If you are not sure that your topic is suitable for the workshop, you are welcome to send an email to Gabriela Pavel (G.Pavel (at) open.ac.uk).
Experienced researchers and practitioners, as well as doctoral students, are equally invited to submit.
Looking forward to meeting you at the Open University.
16th November 2008, submission of extended abstracts (1 to 2 pages)
30th November 2008, notification of acceptance
14th December 2008, submission of final copy
Abstracts should be uploaded on the submission page dedicated to the event. Accepted papers will be circulated to workshop participants prior to the workshop, and will appear on the PPIG web site.
Further information about the event can be found at the workshop information page.
Gabriela Pavel (local chair)
Prof. Marian Petre (local chair)
Dr Maria Kutar (PPIG)
Prof. Thomas Green (PPIG)
[ top ]
by Chris Exton and Jim Buckley
PPIG will have its 21st Workshop next year, hosted by the University of Limerick. The preliminary dates for the workshop are the 29th, 30th of June and the 1st of July.
Having a 21st birthday for PPIG is a testament to how successful this group has been over its life, and this workshop will be a great forum to celebrate this success.
The workshop will be hosted by Dr. Chris Exton and Dr. Jim Buckley, both of the University of Limerick and we hope to make it a wonderful occasion in which to meet up with old and new peers, evaluate new work in the area, celebrate the core works in the area and get new ideas buzzing round the community's collective heads!
[ top ]
After a brief hiatus relating to the PPIG discuss and announce lists, normal service has been resumed.
As before, there are two lists currently in operation: a discuss list and an announce list. Currently, the lists are managed manually by myself whilst I summon the courage and the time to edit a couple of HTML files.
To send to the discuss list, send a note to: ppig-discuss-list (at) open.ac.uk
To send to the announce list, send a note to: ppig-announce-list (at) open.ac.uk
Both lists are relatively low volume. The discuss list is a place to ask questions and start raging debates, whereas announce is intended for workshop and conference announcements that subscribers are likely to find interesting.
Many thanks are extended to Paola Kathura and Frank Wales who have hosted (and operated) the PPIG discussion lists for as long as I can remember!
[ top ]
The online journal "Human Technology" has just published a special issue containing last year's best PPIG papers.
The papers were selected based on the original PPIG reviews; after the workshop, the selected papers were re-reviewed and improved for publication in the journal. The special issue contains the following five papers:
The special issue is freely available
by Yishay Mor and Richard Noss
Published in the International Journal of Continuing Engineering Education and Life-Long Learning 2008 - Vol. 18, No.2 pp. 214-233, this paper describes a narrative-oriented approach to the design and the analysis of a computational system and a set of activities for mathematical learning.
Our central contention is that programming can offer a key to resolving the tension between the different representational structures of narrative and mathematical formalism. In the course of describing our approach, we make a distinction between the epistemic-cognitive elements of narrative and the social, cultural and affective elements. We then elaborate the theoretical grounds of the individual epistemic facets of narrative.
We propose a link between narrative theories of learning and constructionist traditions, specifically the notion of situated abstraction. This link suggests the possibility of further dialogue between the two academic communities.
A preprint is available for download
A full abstract is available from the publishers website
[ top ]
by T R G Green University of Leeds, UK
t.r.g.green (at) comp.leeds.ac.uk
I was recently intrigued and inspired by Inform 7, a new programming language/environment, originating entirely outside the PPIG and human-centered computing communities but dominated by the same ideals of ease of use in every possible aspect. I have not seen such thoroughgoing dedication since the days when Eisenstadt and Lewis (1992) analysed every single user error ever made in their pedagogical language SOLO. What can we learn from it? Can we adopt similar techniques for other purposes?
Inform 7 (see references) is the first programming language I have encountered that makes a serious attempt to be like English or any other natural language (that might just mean I'm ignorant of what's going on, of course). Moreover, it is a working, publicly available, well-used language. Being 'like' English does not mean literal translation as in AppleScript or Cobol. Inform 7 is far more sophisticated, using some of the techniques for discourse understanding that people normally use. More of this below.
Graham Nelson (2006), the creator of Inform, consciously and explicitly addresses a wide variety of learner difficulties. All the following will be familiar to PPIGers (and are therefore unreferenced). The syntax of programming languages is unforgiving and arcane; they demand understanding of many new concepts and skills that relate only to the world of programming, not to any other world; variables and loops, the stuff of life to an procedural programming language, are known to be difficult concepts for learners; the natural strategies of problem-solving seem to be different from what can readily be done in a typical programming language; the tools of programming (the IDE as a rule) usually make additional problems for learners; and most people find the standard example problems are dull and meaningless, so motivation suffers.
Inform 7 attempts to remove or diminish all of those problems. In many cases the goals stated by Nelson, and the reasoning given, are very close to the desiderata that emerged by Pane et al.'s study (2001) of natural programming strategies.
The computational linguistics techniques used in Inform 7 are not novel, as far as I know. What is novel is that such techniques have been put to practical use, and have worked. Previous Inform versions won't be mentioned, so for convenience I shall henceforth use 'Inform' to mean 'Inform 7'.) The book metaphor used for the IDE, sketched below, may or may not be novel; but again, the important point is that it exists and has been found effective.
What follows may read like a paean to Inform. A balanced review of strengths and weaknesses would pay far more attention to the things I found difficult. That's because what I want to argue that here is, I believe, a promising line for PPIGers, and I hope to enthuse a few researchers into following its lead into new territories.
Inform is a domain-specific language, which is probably essential for a system that has some background knowledge and assumptions. The domain is interactive fiction (IF), the genre previously known as text adventure games. Writing interactive fiction is somewhere between programming and writing a short story.
Interactive fiction (IF) typically presents a world with a puzzle (or sometimes a world with no puzzle, to be explored for fun). Working usually in pure text, or sometimes text with static graphics, the player explores the world through an avatar, able to see, touch, eat, hear, smell, hold, carry things; other 'non-playing' characters may appear, to be talked to, asked questions, etc. The world is usually divided into locations connected by moving in given directions -- sometimes with a few unexpected twists. Here is a scene from such a game:
The attics, full of low beams and awkward angles, begin here in a relatively tidy area which extends north, south and east. The wooden floorboards seem fairly sound, just as well considering how heavy all these tea-chests are. But the old wiring went years ago, and there's no electric light. A hinged trapdoor in the floor stands open, and light streams in from below.
From Attic the player can request to move north, south or east, or down (via the trapdoor); or can close the trapdoor, look in the tea-chests, etc. In this game, moving north brings us to a new scene, the Old Winery:
This small cavity at the north end of the attic once housed all manner of home-made wine paraphernalia, now lost and unlamented. Steps, provided with a good strong banister rail, lead down and to the west, and the banister rail continues along a passage east. You can see a labelled glass demijohn (which is closed) (in which are a nasty-looking red battery and a tourist map) here. As you disturb the still air, the attic key, which was balanced on top of the demijohn, slips onto the floor and disappears into a crack in the floorboards. Your spirits sink as it does, rattling down some distance. How on earth are you going to get it back?
To solve the puzzle, the player usually has to gain access to a variety of different locations, often needing specific objects to accomplish subgoals. For example, the 'nasty-looking red battery' will be needed elsewhere in this game for a torch, which will itself be needed to penetrate a dark area; and getting the key back is quite a hard problem. Things can possess a wide range of properties: they can be movable, carryable, openable, eatable, etc; they can be containers for other things, or supporters for other things; they can be part of other things, or they can be members of a set of things, and so on.
So here is a fragment of Inform, creating a room, an object standing on another object, and an exit:
The bar is north of the lecture hall. A counter is here. It is fixed in place. The glass is on it. A daisy is in it. The barman is a person in the bar. "You are in the bar of a small university college."
Inform 'deduces' that:
None of those properties are specifically mentioned, nor are they default values (although Inform does include plenty of default values: unless otherwise specified, objects are inedible not edible, for example). Inform's 'understanding' is reached by creating a model of the scene described, adding to that model as each new sentence is read. Much tedious specification of detail is taken care of, leading to statements that are succinct yet clear.
The fragment above, far from being arcane, is written in English. Inform is not arcane; nor does it require understanding of new concepts, like an object hierarchy. The fragment is surprisingly succinct, compared to the tedium of most conventional language fragments. Determiners take succinctness further. Nelson (p. 11) observes that for all its brevity, "if a person is carrying a container" is a double search, over both people and containers.
Loops and loop variables, those habitual trouble-makers, can be weeded down to minimal proportions: we can refer to "the list of things in the sack", or "if any of the things in the sack ... ". Variables used to retain state history, in conventional programming languages, can also be reduced, because Inform has access to past history and allows no less than four tenses: is, was, has been, or had been, allowing comparisons between various states.
Here is another fragment, this time illustrating how new terms can be added:
Brightness is a kind of value. The brightnesses are dim, shining, and blazing.
The example continues:
These are values, but we can create them freely, giving each of them names, just as we do with objects.
And we could then add:
A brightness can be adequate or inadequate. A brightness is usually adequate. Dim is inadequate.
Programming needs data structures. Data structures are not part of normal conversational English, but Inform adopts the standard and familiar data structure of the printed book, the table, as a powerful and familiar metaphor. The following example also shows how a new unit can be created: Height is a kind of value. 10 cm specifies a height.
Table of Average Rainfall:
Of the new unit, Graham Nelson observes: "And now whenever a value from the rainfall column is printed, it's printed correctly; and type-checking prevents you from multiplying two rainfalls together (what would an area of rain mean?), and so on."
The treatment of tables is designed to eliminate index variables as far as possible, since they are so problematic. Instead there are such phrases as these:
Repeat through the Table of Average Rainfall:
say "The ran in [month entry] is typically [rainfall entry]."
if there is a rainfall of 38 cm in the Table of Average Rainfall, say "It happened in [month entry]."
Lastly, another nice English-like feature is the definition:
Definition: a thing is tantalising if it is in a locked opaque container which the player can see.
Every dog has two ends, and they are different: input at one end, output at the other. So it is with programming languages -- and, as with dogs, we talk much more about one end than the other: we talk about reading them, but not about writing them. When I ask 'what do you mean by English?' the notorious Turing test no doubt springs to mind: but it's irrelevant here -- it's about reading words, not about writing them. (It's also completely unhelpful, since it doesn't say anything about what properties are necessary and sufficient.)
If we wish to reduce the number of what I called above "new concepts and skills that relate only to the world of programming, not to any other world", then the language must feel like English when it's being written. Inform does not, of course, allow all the strategies of speech to be used, but it does a good job. The first example above illustrates:
Together these help the writer of Inform to achieve one of the Gricean maxims: "Do not make your contribution more informative than is required".
When the receiver, the person being spoken to, can perfectly well manage to figure something out, we don't demean them by stating the obvious. When we are forced to state everything in full, we have to learn new strategies. In Inform, we can say
Mr Darcy wears a top hat.
and we know that Inform will deduce that Darcy is a person, because inanimate objects do not ordinarily wear clothes, and that the top hat is clothing.
The properties listed above are necessary but they are not sufficient, and if you start using Inform you find soon enough that there are some new verbal strategies to be learnt. Nevertheless, they go a long way, and merely by existing they demonstrate that a programming language can be much more like English than usual.
Some things are so beautifully made and so intriguing that we want to use them just for their own sake. Inform feels that way to me. Karel the Robot does not.
As much or more thought went into Inform's development environment as the language itself. Nelson chose to present the interface as an open book with facing pages, using the author's work (the program) on the left, and on the right its consequences, the computer's replies. Instead of treating incorrect input as an 'error' with an 'error message' (all too often, as Nelson says, nasty, brutish and short), Inform responds to 'problems' with generous messages and with guesses at how the problem arose, attempting to treat programming in more conversational terms:
Problem. There doesn't seem to be any location in this story, so there's nowhere for the player to begin. This may be because I have misunderstood what was meant to be a room and what wasn't: I only know something is a room if you tell me explicitly ('The Observatory is a room') or if you imply it by giving map directions ('East of the Observatory is the Planetarium').
Because of this problem, the source could not be translated into a working game. (Correct the source text to remove the difficulty and click on Go once again.)
The development environment includes careful documentation, well-larded with examples (over 250 at last count), each of which can be injected into the source-text pane at the press of a button. The world model inferred during the compilation phase is available to be searched in other panes - map, index of locations of things, list of defined values, etc, each with a link to its occurrence in the source text. My experiences so far have been very positive. This is the kind of care that should go into pedagogical environments.
I have plenty of criticisms of Inform; for example, its handling of small typos is sometimes abysmal. The syntax of nested conditionals continually trips me up, and there are a few irritating inconsistencies in syntactic structure. At a deeper level, I have found it extremely hard to grasp some of the distinctions, so that creating new things and values seems to be trial and error, despite the attempts made to give sympathetic, useful error messages.
None of that is relevant to my purpose, because I am not touting Inform for its own sake. I believe that although the usability problems are real enough to stand in the way of using Inform for pedagogical purposes as it currently exists, they are relatively superficial.
The first language I learnt was Mercury Autocode, and the first worked example was how to tabulate Sievert's integral. Despite having perfectly good A level maths and a mild interest in reading about maths and physics, I had never heard of Sievert's integral and I didn't care tuppence. A good example of a really bad example. Today's equivalent is the sorting algorithm (yawn).
Learners need to be motivated by interesting, engaging examples, and interactive fiction might be promising. Not many people would use a tabulation of Sievert's integral as a courtship gift, but who knows, a personalised IF game might go down quite well. (In fact, there is apparently a sub-genre of erotic IF games. Bet you can't say that about Quicksort, or even Karel the Robot.)
The real point here, of course, is much more general: learners who are motivated by needing to use a language for professional work in their own domain would probably learn most happily from domain-relevant examples -- and that's just Inform's strength.
Many programming languages have been created for educational purposes, with a variety of guiding principles; Inform, although not intended for educational purposes, appears to succeed in at least one their aims, minimising the new concepts to be learnt.
Creating something small in Inform takes very little typing, compared to more traditional languages. Really big things, however, would take much more typing than in conventional languages, or so I imagine, because they would run into the areas that Inform is bad at (complex procedural programming).
For the learner, scaling is essential; failure to scale has killed some very smart ideas. Remember HyperCard? Really easy to make your first button, fairly easy to get your first quick result, but as the program grew the problems grew too. HyperCard had poor visibility, with small interacting packets of code distributed everywhere in a document with no macro-structure, making debugging very hard work. (See Eisenstadt 1993). Consequently, HyperCard simply did not scale up.
As a learner, my first-hand experience of Inform is limited to toys: but there plenty of games of some magnitude available, and I have been assured by both Nelson and Short (personal communications) that Inform can produce "a maintainable, scalable base of code for an ambitious project" (Short, ibid). To assist, the code can be divided into parts, chapters, sections, etc, just like any other text; the world model inferred during compilation is made available; and the play of the game can be divided into scenes, starting when some condition becomes true.
- or rather, lack of evaluation. All the familiar questions are yet to be answered about viscosity, hidden dependencies, and the other cognitive dimensions. But I am intrigued to encounter a new type of difficulty. What Inform understands is English, sure enough, but nothing like all English: the difficulty is knowing what's allowed, whether lexically (a device be switched on or turned on - what about put on?), syntactically (limitations abound), or semantically (what inferences does it make, and what reasonable inferences does it not make?). To date, in my limited explorations, a good deal of time has been spent on twiddling things until they work.
My main thrust is that Inform, with its English-based language and conversation-like environment, could be interesting for computer education, allowing learners to create micro-worlds. Need we stop there? If these micro-worlds truly scale, we could very well apply similar techniques to specialised domains of likely interest to end-user programmers. Various contexts can be envisaged. Inform can easily be imagined controlling equipment, the sort of tasks that Forth was created for. Marian Petre and Alan Blackwell have observed teenagers performing small programming tasks in social contexts, using today's social interfaces (2007). More daringly, maybe English is a candidate medium for programming home automation. In this context Blackwell et al. (2007) have studied tangible programming languages as a contrast to the familiar WIMP interface, observing that "the options for innovation when generating or evaluating new kinds of interaction can be obscured by reliance on old metaphors": programming in (near) English would make another contrast of a very different kind.
Many thanks to Drs Graham Nelson and Emily Short for reading a first draft, correcting both my code and my assertions, and making very positive suggestions. Naturally the remaining mistakes are nothing to do with them.
All URLs were checked in Sep 2008.
Blackwell, A.F., Morrison, C. and Edge, D. (2007). A solid diagram metaphor for tangible interaction. Paper presented at CHI 2007 workshop on Tangible user interfaces in context and theory.
Eisenstadt, M. (1993) Why HyperTalk debugging is more painful than it ought to be. In J. L. Alty, D. Diaper and S. Guest (Eds.) People and Computers VII: Proc. HCI '93 Conference. Cambridge: Cambridge University Press.
Eisenstadt, M., and Lewis, M.W. (1992) Novice programmers' syntax errors: causes and cures. In M. Eisenstadt, M. Keane, and T. Rajan (Eds.) Novice programming environments: explorations in human-computer interaction and artificial intelligence. London: Lawrence Erlbaum Associates, 1992. Available for download (gzipped postscript)
Inform (home page)
Nelson, G. (2006) Natural language, semantic analysis and interactive fiction. White Paper
Pane, J. F., Ratanamahatana, C. and Myers, B. A. (2001) Studying the language and structure in non-programmers' solutions to programming problems. Int. J. Human-Computer Studies 54, 237-264. Available online
Petre, M. and Blackwell, A.F. (2007). Children as unwitting end-user programmers. In P. Cox and J. Hosking (Eds), Proceedings of 2007 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), pp 239-242.
[ top ]
The issue of blogs comes up from time to time. Perhaps you have a blog? Perhaps you would like others to know? (or perhaps you don't?) If you do, then please drop us a line. PPIGers might then be tempted to leave a comment... Which makes me wonder: perhaps it might be possible to aggregate member blogs on the PPIG site? This is a technical challenge for someone other than myself. If you are interested in taking up this challenge, please feel free to send me a note, and I'll happily tell you how to contact our illustrious web master, Lindsay Marshall.
Chris Douce on something to be decided yet
Mark Guzdial on computing education
If you have a blog, why not let us know!
[ top ]
by Chris Douce
One of the programming languages and systems that I have been threatening (and hoping) to use in anger for the last couple of years is PHP. I have heard a lot about its flexibility, expressiveness and the fact that it powers an increasing number of substantial projects, such as Wikipedia, content management systems like Drupal and e-learning management systems like Moodle and ATutor.
Two of my programmer senses include: aesthetics (that code should 'look' and 'read' right, describing action as a sensible level of abstraction), and laziness (that certain things should be done with not too much difficulty). These two senses took me on a brief exploration into the area of PHP development frameworks. I was shocked to find that so many PHP related development tools and 'systems' were already in existance.
I had a thought experiment in mind: assuming that I had a new 'green field' development, or had to aggressively maintain an existing PHP-based system, what system or framework could potentially help me to minimise comprehension and maintenance time in the future? Of course, answering this question is closely bound to the nature of my requirements, how well they are defined, how often they are likely to be changed, and the environment in which my new application or system is to be used.
Other issues that spring to mind includes: how popular or how much support does a particular platform offer, how long has this platform been started for, how clear is the corresponding documentations, how often releases are issued... I have many questions!
Choosing a software development framework is an increasingly difficult thing to do unless you are faced with the situation of having to work within a development that must conform to pre-existing choices and guidelines.
One source of information is to attempt to find some on-line discussions that explore differences between different platforms and systems. Although these can be useful, occasionally you may be confronted with subjective opinion or explanations related to very particular problems.
The question of 'how do I make judgements about what may or may not be useful?' is not an easy one to answer. You have to know your problem intimately, be prepared to expend time to assess both the works and opinons of other developers.
Marking can also play an important role in helping a confused developer (like myself) arrive at a decision about what to use and what not to use (or what to evaluate or what not to evaluate).
A recent 'framework marking tool' has been the demonstration of blog applications, i.e. demonstrations of how easy it is to to write 'a blog application in 20 minutes'. Here the psychology of programming becomes intrinsically connected to the psychology of marketing: how best to communiate a complex set of ideals and issues to a wide developer audience.
I still have a long way to go before I have a more complete understanding of the different PHP development frameworks. But at least I at least I know where to start!
I now have to find the time to try to unpick what they can do for me, perhaps who has made use of them before, and explore what problems may lay in store for me in the future should I choose one over the other. Perhaps I should write a blog entry about writing a blog app!
Wish me luck!
[ top ]
in Elsevier's Information & Software Technology
This special issue on human judgment and decision-making in software development and management (psychology of software development and management) welcomes contributions on normative, descriptive and prescriptive analyses of human judgments and decisions in software development and management contexts.
Suggested topics include, but are not restricted to:
Submission deadline: 1 November 2008
Special issue editor: Prof. Magne Jørgensen, Simula Research Laboratory, Oslo, Norway (Please, send an email to magnej (at) simula.no for information about the submission and review process.)
24 - 26 June 2008 Maternushaus, Cologne.
The aim of the annual international conference on e-Social Science is to bring together leading representatives of the social science, e-Infrastructure, cyberinfrastructure and e-Research communities in order to improve mutual awareness and promote coordinated activities to accelerate research, development and deployment of powerful, new methods and tools for the social sciences and beyond.
We invite contributions from members of the social science, e-Infrastructure, cyberinfrastructure and e-Research communities with experience of, or interests in:
Exploring, developing, and applying new methods, practices, and tools afforded by new infrastructure technologies - such as the Grid and Web 2.0 - in order to further social science research; and studying issues impacting on the wider take-up of e-Research.
Contributions from professionals working in and with data services to support research and teaching in the social sciences are especially welcome.
Submission categories include: full and short papers, posters, demos, workshops, tutorials and panels.
Topics of interest include, but are not restricted to, the following:
Authors are requested to submit an abstract of approximately 1000 words.
Workshop, tutorial and panel organisers are requested to submit a one page outline of the topic, format, likely audience, special requirements.
Paper abstracts: 26 January 2009.
Workshop, tutorial and panel outlines: 23 February 2009.
Poster and demo abstracts: 23 March 2009.
For full submission details and more information, please visit the conference website
ICCM is the premier international conference for research on computational models and computation-based theories of human behavior. ICCM is a forum for presenting, discussing, and evaluating the complete spectrum of cognitive models, including connectionism, symbolic modeling, dynamical systems, Bayesian modeling, and cognitive architectures. ICCM includes basic and applied research, across a wide variety of domains, ranging from low-level perception and attention to higher-level problem-solving and learning. Conference website
Submissions are not yet open. Further information will be posted on the website. Follows on from an the earlier 2007 conference
[ top ]
I am pleased to inform you of a recent book published by Springer-Verlag as Lecture Notes in Computer Science, Vol. 4821, State-of-the-Art Survey:
Reflections on the Teaching of Programming - Methods and Implementations
by Jens Bennedsen, Michael E. Caspersen, Michael Kölling (Eds.)
Forword by David Gries
General information about the book is available from the publisher, Springer.
If you have access to SpringerLink you can access the book online via Springerlink
or you can get it from Amazon
The authors are all members of the Scandinavian Pedagogy of Programming Network (SPoP), and bring together a diverse body of experiences from the Nordic countries.
The topics addressed span a wide range of problems and solutions associated with the teaching of programming such as introductory programming courses, exposition of the programming process, apprentice-based learning, functional programming first, problem-based learning, the use of on-line tutorials, object-oriented programming and Java, the BlueJ environment to introduce programming, model-driven programming as opposed to the prevailing language-driven approach, teaching software engineering, testing, extreme programming, frameworks, feedback and assessment, active learning, technology-based individual feedback, and mini project programming exams.
I've recently been awarded an EPSRC grant to develop a bi-modal (graphical and textual) programming language (called Flip) which has two purposes: 1) to allow young people, when creating their own virtual role-play games, to script events in an easier (dare I say natural?!) way and 2) to try and scaffold their understanding of some of the higher level reasoning activities associated with programming. The idea is that the textual component will be designed in such a way as to mirror the way young people spontaneously describe actions and events in the games they are creating, and the graphical component will highlight higher level programmatic structures, and therefore act as aids for reasoning about the programs that have been created.
Flip will be designed to integrate with the Neverwinter Nights 2 Electron toolkit, and will complement the work being carried out by Judy Robertson on Adventure Author, who is using the same platform, but looking at issues around creativity in children's game authoring. Role-play game creation is a great area in which to investigate the development of programming and reasoning skills, and has many similarities with interactive fiction, hence Thomas' article on Inform 7 is very relevant to the design of the textual component of the programming language.
I'd be delighted to chat more about this, and I'll also be looking for a programmer on the project, so if you're interested, keep an eye on the Sussex jobs page: the advert should be up any day now!"
I recently graduated from the HCI Institute at Carnegie Mellon University in May and am now an Assistant Professor at the Information School at the University of Washington. As in my Ph.D. work, where I looked at the intersection of HCI and software development, I'll be continuing to investigate issues surrounding end-user programming and debugging.
I'm also working on some new fronts as well. I'm currently studying peoples' first encounters with source code and how that later influenced their perceived self-efficacy with technology. I'm also looking at the other side of debugging, where, after finding the logical cause of an issue, a developer needs to understand the social, organizational, domain and business rationale that constrain even a single line of code. I'll also be doing research in other areas of HCI with students involved with DUB, the University of Washington's cross-department HCI group.
If you have undergraduate or masters students looking to do a Ph.D. in these areas, send them my way! They can work with me through a number of departments on campus, including the Information School, Computer Science and Engineering, Technical Communications, or DXArts, our new center for design.
Please feel free to email Andy using: ajko (at) u.washington.edu
Would you like to tell other PPIGers how you are and what you are doing through the newsletter? If so, please e-mail c.douce(at)open.ac.uk.
[ top ]
by Chris Douce
Another day, another ground breaking technological development... Sometimes the rate at which new developments arise can be bewildering. I find reading hard work, especially when it comes to reading technical documents, which can easily send anyone to sleep. Sometimes I find myself sketching diagrams to remember what I read, and how certain components relate. I was astonished to 'read' about the Google Chrome project, , not because here was a new paradigm busting browser that could revolutionise how we use the web, but because of the way it was presented. It was clear, understandable and fun! Whilst leafing through the virtual pages, I recalled a passing interest in graphic novels that I once had, and also remembered a fairly new series of technical books from O'Reilly called the Head First series. Learning about technical subjects need not be hard.
It seems that I'm not the only one flummoxed by the fact that things change all the time. Could we even say that choice could be considered harmful? We've all heard of the software crisis (by the way, did that ever get solved?), but are we faced with a web development crisis?
On the topic of learning things, I learnt about AppJet from tech essayist and programmer Paul Graham
When working as a programmer, you have to consider how to tell the user things have not worked out as initially expected: you have to compose an error message or make use of magical error numbers that programmers who have gone before you have devised. If you're unlucky enough, your work may end up an error message 'hall of fame'. If you need another excuse to procrastinate, you can always view the Thirteen Greatest Error Messages of All Time (but let's hope you don't get a 404!)
From time to time, you have to learn a new language. I still haven't gotten around to meddling with Python or Ruby, but one of these days... The number thirteen seems to be all the rage at the moment. I know it is an unlucky number, but I always thought that seven was the magic one. Here's an article entitled Thirteen reasons why Ruby, Python and the gang will put Java to die... of old age
I really enjoyed reading Donkey Kong and Me
it took me back to a time when I also was a lucky owner of an Atari 800 (an XL version, not the older, and bigger version). I was astonished to find 2 channels of two eight bit A to D converters, allowing you to plug in four paddle controllers. If you read on, you'll find some comments on comments.
Here is a connected link to the Atari series.
I found an article entitled Learning to Program without Basic very interesting. It look me back to the days when I developed my typing abilities by transcribing printouts from computer magazines (the end result was that I was very good at punctuation, numbers and keywords, but terrible at prose!), learning how to drive my mysterious machine.
I have heard of one member of PPIG who has a claim to fame of having had one of their programs published in this way!
We all know that programming is far from being a 'walk in the park'. Well, Linus Torvalds is thinking like we are when he said it isn't anything like a picnic
I totally agree! There is a serious point here. Different open source communities work in different ways, but I have no idea how different they can be since Iíve only 'dipped my foot into the watersí of one or two. This remains an interesting question.
Remaining in the area of Open Source, Iíve recently discovered this book: Code Quality: The Open Source Perspective.
Coding standards and other people's indentation can inspire the use of colourful vernacular. This article, entitled Men Write Code from Mars, Women write more helpful Code from Venus, had a similar effect. I ask you, please donít get me onto the subject of parking...
This interview with Bjarne Stroustrup was published a number of months ago. For me, this link was, 'great! Iíll read this when I have time!í I hope its useful. Itís a useful resource in understanding the history of the language.
On a related note, I discovered this List of Programming Language Popularity which caused me to be rather bemused. Perhaps the couple of years I learnt Pascal as an undergraduate has not been in vain (I suspect its use of strong typing helped me deal with Java when I encountered it in the workplace).
XML has made a regular appearance in the PPIG newsletter (but not to describe itís contents Ė this remains, at present, plain old HTML!)
IBM have published an article entitled The Future of XML. I have little doubt I will continue to battle with the emergence of new XML related 'stuffí for many years to come. I have just about figured out the difference between a SAX and a DOM parsers, but please, don't ask me to explain them.
Apparently PHP is going to get namespaces. This seems to me to be a great idea, but one important question is: how should it be done?
I was recently directed to this blog entry entitled: Set Sail for PHP namespaces
Security is an issue that developers and designers alike have to contend with, but I feel that the notion of trust and security with regard to the use of computing systems (of various types) does not often receive the attention it deserves. Here is a very short essay entitled Inside the Twisted Mind of the Security Professional
I have to admit, I have only watched the video.
But, now I know exactly what to do when I need to procrastinate.
I have long held a passing interest in software metrics. It has been said that if something can be measured, it might be able to be controlled. Assigning numbers to software may help us to understand what is meant by complexity.
We might ask the questions: (1) what can we make visible through numbers, and (2) is it useful to do this?
A couple of months ago I learnt of an approach to assign numbers against the performance of open source software developers through an article entitled: is counting open source code contributions really useful?
On a connected note, I found this blog post: how to recognise a good programmer.
Some attributes cannot easily be converted into metrics. This takes us onto the next connected theme of programmer profiles.
Another interest of mine is the notion of a programming career, how it can change over time in terms of the type of work programmers perform and what serves as sources of motivation (and the extent to which different people have different sources of motivation). I find reading biographies of developers really interesting, perhaps because as a developer I can immediately appreciate some of the frustrations that others come up against when trying to compose the 'magical mind stuff' that sits inside a computer.
I recently noticed a link to this book on a well known on-line book store: Programmers at Work: Interviews With 19 Programmers Who Shaped the Computer Industry by Susan Lammers.
It's quite an old book, and I'm sure that many of you have heard of it...
On a related note, I discovered this blog posting that had the enticing title of Embracing My Inner Geek? which touches upon themes of art, elegance and beauty.
A poster on Slashdot found himself in a new job faced with having to understand (and work with) a new and unfamiliar codebase. This is a real example of a substantial program comprehension challenge. Your company is paying you to learn stuff, and ideally they want you to learn it as quickly as possible. A poster posed the seemingly simple question of: what tools do you use to understand code?
Keeping with the theme of nostalgia, I remember my lecturer extolling the virtues of grep after he introduced the 40kloc FORTRAN code that we had to contend with as a part of a software maintenance project. Those were the days... the acrid smell of solder...
Frank Wales kindly directed me to a site entitled StackOverflow.
He tells me that it's a new site where people ask programming questions, and other programmers answer, and they're trying to make it useful to working programmers by filtering out rubbish questions and running a reputation scheme based on ratings of the quality of questions asked and answers given.
Frank also sent me this blog post about a programmer and his fish.
[ top ]
Many thanks go to the efforts of the reviewers of this edition of the newsletter. All your comments and words of wisdom are always appreciated.