Spotlight on PPIGers


Alan Blackwell

PPIG members who attended the 2010 conference will remember the discussion of a practical course oriented toward research skills in Psychology of Programming. I can now report on the experience of a first year teaching that syllabus.

The course 'Usability of Programming Languages', was offered as a module in the Cambridge MPhil in Advanced Computer Science for 2010/11. Seven students out of a total cohort of 30 elected to take this module, and all successfully completed it. I expect that some of these will be submitting results of their research projects to PPIG 2011, and that PPIG members will have a chance to meet them there.

The main textbook for the course was Hoc, Green, Samurçay and Gilmore's 1990 book 'Psychology of Programming', supplemented by Carroll's collection of models, theories and frameworks in HCI research, and the recent overview by Cairns and Cox of research methods for HCI. The observant will note that there is one author who has contributed to all of these course texts - thank you Thomas!

As a practical course, formal presentation time was minimised, with only four one-hour lectures. The first of these gave an overview of the most common theoretical approaches to PoP research, and of those groups around the world with the most active programmes of research.

The second outlined the research methods that are most often applied in the field, and the third the particular classes of user that receive most attention: students, 'end-user' programmers, and in our group at Cambridge, domestic and arts programming. The final lecture led the student through a process of research design, after which they started work on the design and execution of individual experimental studies. In retrospect, an additional lecture on cognitive dimensions would have been appreciated. Cambridge undergraduates become familiar with CDs during their degree, but none of the students on this module had been at Cambridge previously.

The bulk of the course work consisted of the completion of an experiment, exploring questions that ranged from evaluation of novel programming languages created by the students themselves, to assessment of manufacturer's claims for systems such as Lego Mindstorms and Google AppInventor. Some interesting studies also applied PPIG perspectives to more conventional HCI problems, such as the specification of email filtering rules in different mail systems, or the usability consequences of creating spreadsheet formulae when working with extremely large data sets.

Over a period of 5 weeks, experimental design, testing and data analysis was punctuated by seminars, at which the students discussed their work in progress, including the familiar challenges of recruiting participants with specific experience, running pilot studies, and balancing internal and external validity in the search for controlled experiments that demonstrate statistically significant effects. All students submitted final reports in the format of the PPIG proceedings, having read extensively in the online PPIG archive.

I am pleased to say that despite the rather intensive workload, student feedback was overwhelmingly positive, and that this module has been a very welcome addition to the Masters syllabus. It will certainly be repeated. Several of the students who took this module are now planning future research careers in which psychology of programming will form an important element, including two who will be starting PhDs in Cambridge next year. In marking their final assignments, I encouraged several to submit their research to PPIG - with luck, newsletter readers will meet them soon!

Full details of the course, including lecture notes and slides, and links to other teaching material, can be found on the course website

Reading List

  • Cairns, P. and Cox, A.L. (2008) Research Methods for Human-Computer Interaction. Cambridge University Press
  • Carroll, J.M. (Ed) (2003). HCI Models, Theories and Frameworks: Toward a multidisciplinary science. Morgan Kaufmann
  • Hoc, J.M, Green , T.R.G, Samurcay, R and Gilmore, D.J (Eds.) (1990) Psychology of Programming. Academic Press

Louis Major

I am a current PhD research student working in the School of Computing and Mathematics at Keele University, UK. My research involves investigating innovative methods of teaching introductory programming with the aim of promoting a greater understanding of the subject and increasing student motivation. I am working under the supervision of Dr Theocharis Kyriacou and Professor Pearl Brereton.

My initial research, after performing a Systematic Literature Review (SLR), has found how the use of robots as teaching tools may help to promote a greater understanding of programming and can overcome some of the difficulties that impact upon the successful teaching of it. A paper reporting the results of the SLR has been presented at the 15th International Conference on Evaluation and Assessment in Software Engineering - EASE 2011 (Durham University, UK, 11 - 12 April 2011).

The SLR highlighted how robots can be a powerful and effective tool when used in an introductory programming course but that the potential remains to further investigate methods for their implementation. In particular it was found how there remains scope to evaluate the effectiveness of simulated robots as tools to teach programming.

The results of the SLR will provide the platform upon which future research activities can be built. The development and testing of simulated software, that utilises the concept of robotic agents, will be undertaken in order to further assess the effectiveness of such a method. It is also being considered how such a tool may be implemented in a high school environment and a preliminary session has already been held with trainee high school teachers to determine their opinions of such a tool.

There is a wealth of literature related to Systematic Literature Reviews available. In a nutshell a SLR is a form of secondary study that aims to provide an objective and unbiased approach for finding relevant primary studies, and for extracting and aggregating the data from these. The Evidence-Based Software Engineering website ( is a great place to start if you want to learn more about SLR's and other similar tools. I have also provided the reference of my SLR below [1].

I would be grateful of any feedback from the PPIG community in regards to the research which I am performing. Likewise I would be happy to answer any questions which you may have. I look forward to meeting some of you in September at the annual PPIG workshop! My email address is:

[1] Major, L., Kyriacou, T. and Brereton, O. P. Systematic Literature Review: Teaching Novices Programming Using Robots. In 15th International Conference on Evaluation and Assessment in Software Engineering (EASE 2011), Durham University, UK, 11 - 12 April 2011. pp. 21-30.

Alex McLean

My paper for PPIG 2010 was about bricolage programmers, in particular artists who write software without any clear plan, but just reacting to the results of each edit. From feedback it is clear that the paper could have done with a decent case study, so I thought I'd contribute the following example to this newsletter. This is not meant to illustrate great art, or indeed great programming, but just to act as a talking point when discussing alternative approaches of programming. Full versions of the examples are available on sketchpatch.

Imagine a visual artist, programming their work using the Processing environment, a language based on Java. They begin with an urge to draw superimposed curved lines, and come up with the following program, shown with its output:

1. float rx() { return(random(width)); }
2. float ry() { return(random(height)); }
4. void draw() {
5.   background(255);
6.   for (int i = 0; i < 20; ++i) {
7.    bezier(rx(), ry(), rx(), ry(), rx(), ry(), rx(), ry());
8.  }
9. }

On seeing the output, they are struck first by how hairy it looks, but then by the suggestion of a scribble. They decide that they are interested in the latter, and change their program to join the curves together, removing the hairiness and accentuating the scribble:

1. void draw() {
2.  background(255);
3.   float x = rx(); float y = ry();
4.   for (int i = 0; i < 5; ++i) {
5.     float x1 = rx(); float y1 = ry();
6 .    bezier(x, y, rx(), ry(), rx(), ry(), x1, y1);
7.     x = x1; y = y1;
8.   }
9. }

The artist reflects upon the letter-like quality of the scribble forms, and decides to try writing letters across the page, grouped into word-like forms:

 1. float letterSpace = 30;
 3. float rx() { return(random(letterSpace + 10)); }
 4. float ry() { return(random(height - 10)); }
 5. int rWordlen() { return(3 + int(random(4))); }
 7. void draw() {
 8.   background(255);
 9.   int letters = (int) (width / letterSpace) - 4;
10.   int wordLen = rWordlen();
11.   int word = 0;
12.   float x = rx(); float y = ry();
13.   for (int letter = 0; letter < letters; ++letter) {
14.     float ox = letter * letterSpace + word * letterSpace;
15.     if (wordLen-- == 0) {
16.       wordLen = rWordlen();
17.       word++;
18.     }
19.     for (int i = 0; i < 3; ++i) {
20.       float x1 = rx() + ox; float y1 = ry();
21.       bezier(x, y, rx() + ox, ry(), rx() + ox, ry(), x1, y1);
22.       x = x1; y = y1;
23.     }
24.   }
25. }

The output has a handwritten quality, almost appearing to be readable, a quality of 'automatic writing' used by mystics to supposedly channel the spirit world. This may bring further conceptual development in our artist's mind, but at this point we leave will them pondering.

Alex is from Goldsmiths, University of London

Rebecca Yates

It's your first day at your new job at Acme Software. Or you've just moved to a new team. Or you need to resurrect ten-year-old software. You browse through the source code with a sinking feeling: where do you start? If only there was someone you could ask... but the original author is stuck in a meeting. Or on holiday. Or left the company years ago.

Knowing how to program is only part of software development. Developers need to understand at least part of a codebase before they can make effective modifications, and accumulating this knowledge is time-consuming especially when no mentor is available.

My research begins to address this problem by investigating how experts explain their code to new team members. Through video recordings, screen capture and code analysis, I'm seeking to understand what information about a codebase is most useful in this situation.

I'm always looking for opportunities to collect data, so if you'll be bringing someone up to speed on your code (or you know someone who is) I'd be very grateful to hear from you. Contact information can be found below, or through my homepage.

Contact: rebecca.yates (at)
Twitter: @tangentmonger

Would you like to tell other PPIGers how you are and what you are doing through the newsletter? If so, please contact us.