Spotlight on PPIGers

Tags:

Saeed Dehnadi

We (me and Richard Bornat) seem to have a test that predicts ability to program with very high accuracy before the subjects have ever seen a program or a programming language. we have a test which picks out the population that can program, before the course begins. We can pick apart the double hump.

We don't know exactly how/why it works, but we have some good theories. A draft paper which incorporates some of the criticism we got at Coventry mini-PPIG in January and the University of Kent and all other relevant files are available on my website.

We are planning to conduct the test in a broader scale. Please contact us if you are interested to collaborate.

Johanna Hunt

I am a first-year researcher using qualitative narrative-communicative research techniques to investigate the community of Agile Systems practitioners. I am particularly looking at notions of community identity, communication, boundary and space as demonstrable in conversational storytelling and personal narratives from this practitioner-group.

I have recently conducted a pilot study, incorporating narrative interviews supported by field observations, of a small software development company in the South of England. Preliminary analysis supports the view that this approach, when further applied to the community of Agile Systems developers, will provide potentially interesting results.

Any suggested references, problems, questions, concerns, suggestions, or just general interest from PPIGers would be greatly appreciated. Please feel free to contact me at j (dot) m (dot) hunt (at) sussex.ac.uk and let me know any thoughts you may have!

Brad Myers

Brad Myers developed and presented a new overview of End User Programming (EUP) as an Invited Research Overview at the ACM SIGCHI conference, with help from Margaret Burnett and Andrew Ko.

The presentation slides are available

The extended abstract is available

The abstract of the paper is summarised below:

In the past few decades there has been considerable work on empowering end users to be able to write their own programs, and as a result, users are indeed doing so. In fact, we estimate that over 12 million people in American workplaces would say that they "do programming" at work, and almost 50 million people use spreadsheets or databases (and therefore may potentially program), compared to only 3 million professional programmers.

The "programming" systems used by these end users include spreadsheet systems, web authoring tools, business process authoring tools such as Visual Basic, graphical languages for demonstrating the desired behavior of educational simulations, and even professional languages such as Java. The motivation for end-user programming is to have the computer be useful for each person's specific individual needs.

While the empirical study of programming has been an HCI topic since the beginning the field, it is only recently that there has been a focus on the End-User Programmer as a separate class from novices who are assumed to be studying to be professional programmers. Another recent focus is on making end-user programming more reliable, using "End-User Software Engineering."

This paper gives a brief summary of some current and past research in the area of End-User Programming.

John Sturdy

The package I wrote about last year: "Sidebrain: a programmers' memory aide" is now available for people to try, at Sourceforge

Also, I'm working on a project to provide higher-level editing facilities, with the aim of exploring what level people think of program changes at (by looking at which of the new facilities they use, and which ones they ignore and prefer to continue with other techniques). The software for this is available at Sourceforge where a series of screenshots are also available

Simon Xu

I completed my Ph.D. study in Computer Science recently in Wayne State University, Detroit, MI, USA under supervision of Prof. V. Rajlich. My dissertation title is "Cognitive Aspects of Software Engineering Processes". The abstract is as below:

Software engineering activities are to process a large amount of knowledge and therefore, the cognitive process is mainly involved. Studying the cognitive process involved in software engineering can greatly help us to understand the whole process and to improve software engineering research.

In order to study the cognitive process, we developed an empirical method that includes dialog-based protocol and self-directed learning theory. The dialog-based protocol is based on the analysis of the dialog that occurs between programmers in pair programming. It is an alternative to the common think-aloud protocol and it may minimize the Hawthorne and placebo effects. The self-directed learning theory is based on the constructivist learning theory and the Bloom taxonomy. It captures the specifics of the programmer's cognitive activities and provides an encoding scheme used in analyzing the empirical data.

We conducted a case study of expert and intermediate programmers during incremental software development. Compared to intermediate programmers:

  • Experts discussed more domain concepts at a greater length before starting to write code.
  • Experts mostly concentrated on one concept at one time, while intermediate programmers often discussed several concepts simultaneously.
  • Experts were willing to reconsider and correct obsolete design decisions, while intermediate programmers retained all design decisions.
  • Experts had more absorption activities at higher Bloom levels such as analysis and synthesis, while intermediate programmers had more absorption activities at lower Bloom levels such as comprehension and application.
  • Experts spent more time analyzing the knowledge and generating test cases, while intermediate programmers spent more time learning the knowledge.

We also conducted a case study on program debugging, and found that programmers apply the cognitive activities at all six Bloom levels and move from lower one to upper one in order to make update. Program debugging is a more complex activity than incremental software development.

A case study on pair programming in software evolution class projects was also performed. The results of the case study showed that paired students completed their change request tasks faster and with higher quality than individuals. They also wrote less lines of code and used more meaningful variable names.

The related publications are as follows:

Xu, S. and Rajlich, V., 2005, Dialog-Based Protocol: An Empirical Research Method for Cognitive Activity in Software Engineering, Proceedings of the 4th ACM/IEEE International Symposium on Empirical Software Engineering, pp. 397-406, November 17-18, 2005, Noosa Heads, Queensland, Australia.

Xu, S. and Rajlich, V., 2005. Pair Programming in Graduate Software Engineering Course Projects. Proceedings of the 2005 IEEE Frontiers in Education Conference (FIE 2005), pp. FIG-7-FIG-12, October 19-22, 2005, Indianapolis, Indiana.

Xu, S., Rajlich, V. and Marcus, A., 2005. An Empirical Study of Programmer Learning during Incremental Software Development. Proceedings of the 4th IEEE International Conference on Cognitive Informatics, pp. 340-349, August 8-10, 2005, Irvine, California.

Xu, S. and Rajlich, V., 2004. Cognitive Process during Program Debugging. Proceedings of the 3rd IEEE International Conference on Cognitive Informatics, p. 176-182, August 16-17, 2004, Victoria, Canada.

Rajlich, V. and Xu, S., 2003. Analogy of Incremental Program Development and Constructivist Learning. Proceedings of the 2nd IEEE International Conference on Cognitive Informatics, p. 142-150, August 18-20, 2003, London, UK.

If you need more information, please feel free to contact using Simon dot Xu (at) algomau.ca. Simon is an assistant professor in the Department of Computer Science, Algoma University College, Laurentian University, Canada.