Performing Tasks Can Improve Program Comprehension Mental Model of Novice Developers: An Empirical Approach

Program comprehension is challenging for many novice developers. Literature indicates that program comprehension is greatly influenced by the specific purpose of reading a program, i.e., the task. However, the task has often been used in research as a measure for program comprehension. Our study takes an inverse approach to investigate the effect of using the task as a facilitator to improve novice developers program comprehension. To measure the effect, our previously published program comprehension mental model of novice developers was utilized. In a sense, the study provides an empirical evaluation of our proposed model in terms of its ability to capture the novice developer's mental model properly. The comprehensive experiment involved one hundred and seventy-eight (178) novice developers from three (3) universities and investigated the effect of six (6) tasks with difficulties ranked according to the cognitive categories of Revised Bloom Taxonomy. The results of the experiment confirmed that performing the tasks can improve program comprehension of novice developers. It demonstrated that different tasks improved different abstraction levels of the mental model and further indicated that higher cognitive category tasks improve program comprehension mental model at higher abstraction levels. The results also showed that the mental model we have proposed earlier is able to capture what novice developers know in response to the tasks they perform. The general implication of the study is that the tasks can be an effective tool for computing educators to incorporate program comprehension in programming courses, whereby these tasks need to be introduced in stages in the teaching of programming; starting initially from the lower cognitive categories' tasks such as Recall and culminating at the higher cognitive categories' tasks such as Modification by first taking into consideration the novices' programming levels.

[1]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[2]  Fábio Petrillo,et al.  Visualizing Sequences of Debugging Sessions using Swarm Debugging , 2019, 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC).

[3]  Ben Shneiderman,et al.  Syntactic/semantic interactions in programmer behavior: A model and experimental results , 1979, International Journal of Computer & Information Sciences.

[4]  Anneliese Amschler Andrews,et al.  Program Comprehension During Software Maintenance and Evolution , 1995, Computer.

[5]  H. Kagdi,et al.  Expressiveness and effectiveness of program comprehension: Thoughts on future research directions , 2008, 2008 Frontiers of Software Maintenance.

[6]  Michele Risi,et al.  MetricAttitude++: Enhancing Polymetric Views with Information Retrieval , 2017, 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC).

[7]  Sven Apel,et al.  CodersMUSE: Multi-Modal Data Exploration of Program-Comprehension Experiments , 2019, 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC).

[8]  Victor R. Basili,et al.  Experimentation in software engineering , 1986, IEEE Transactions on Software Engineering.

[9]  Françoise Détienne,et al.  Object-Oriented Program Comprehension: Effect of Expertise, Task and Phase , 2002, Empirical Software Engineering.

[10]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[11]  Elliot Soloway,et al.  Mental models and software maintenance , 1986, J. Syst. Softw..

[12]  Cruz Izu,et al.  Fostering Program Comprehension in Novice Programmers - Learning Activities and Learning Trajectories , 2019, ITiCSE-WGR.

[13]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[14]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[15]  Marc Roper,et al.  The role of comprehension in software inspection , 2000, J. Syst. Softw..

[16]  Pierre LaBorde,et al.  CCSpec: A Correctness Condition Specification Tool , 2019, 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC).

[17]  LahtinenEssi,et al.  A study of the difficulties of novice programmers , 2005 .

[18]  Janet Siegmund,et al.  Program Comprehension: Past, Present, and Future , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[19]  Gail C. Murphy,et al.  Asking and Answering Questions during a Programming Change Task , 2008, IEEE Transactions on Software Engineering.

[20]  Margaret-Anne D. Storey,et al.  Theories, Methods and Tools in Program Comprehension: Past, Present and Future , 2005, IWPC.

[21]  Carsten Schulte,et al.  Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching , 2008, ICER '08.

[22]  Alf Inge Wang,et al.  The effect of task order on the maintainability of object-oriented software , 2009, Inf. Softw. Technol..

[23]  Kirsti Ala-Mutka,et al.  A study of the difficulties of novice programmers , 2005, ITiCSE '05.

[24]  Janet Siegmund,et al.  Framework for measuring program comprehension , 2012 .

[25]  D. Sheskin Handbook of Parametric and Nonparametric Statistical Procedures: Third Edition , 2000 .