Cover page and Table of Contents: PDF (size: 654KB)
Full Text (PDF, 654KB), PP.1-12
Views: 0 Downloads: 0
Novice Programmer, Code Modularity, Program Design, Cognitive Dissonance Theory, Dual-Process Theory
One of the key indicators for testing code quality is the level of modularity. Nevertheless, novice programmers do not always stick to writing modular code. In this study, we aim to examine the circumstances in which novice programmers decide to do so. To address this aim, two student groups, twenty each, were given a programming assignment, each in a different set-up. The first group was given the assignment in several stages, each add complexity to the previous one, while the second group was given the entire assignment at once. The students' solutions were analyzed using the dual-process theory, cognitive dissonance theory and content analysis methods to examine the extent of modularity. The analysis revealed the following findings: (1) In the first group, a minor increase in the number of modular solutions was found while they progressed along the stages; (2) The number of modular solutions of the second group was higher than of the first group. Analysis of students' justifications for lack of modularity in the first group revealed the following. The first stages of the problem were perceived as rather simple hence many students did not find any reason to invest in designing a modular solution. When the assignment got complex in the following stages, the students realized that a modular solution would fit better, hence a cognitive dissonance was raised. Nevertheless, many of them preferred to decrease the dissonance by continuing their course of non-modular solution instead of re-designing a modular new one. Students of both groups also attributed their non-modular code to lack of explicit criteria for the evaluation of the code quality that lead them to focus on functionality alone.
Ilana Lavy, Rashkovits Rami, " The Circumstances in which Modular Programming becomes the Favor Choice by Novice Programmers", International Journal of Modern Education and Computer Science(IJMECS), Vol.10, No.7, pp. 1-12, 2018. DOI:10.5815/ijmecs.2018.07.01
D. Marr, Vision: a computational investigation into the human representation and processing of visual information. W. H. WH San Francisco: Freeman and Company. 1982.
B. Meyer, Object-oriented software construction. New York: Prentice hall, 1988.
E. Lahtinen, K. Ala-Mutka, & H. M. Järvinen, "A study of the difficulties of novice programmers". Acm Sigcse Bulletin, vol. 37, no. 3, pp. 14-18. ACM. June, 2005.
H. Topi, J. S. Valacich, R. T. Wright, K. M. Kaiser, J. F Nunamaker Jr, J. C Sipior, & G. J. De Vreede, Curriculum guidelines for undergraduate degree programs in information systems. ACM/AIS task force, 2010.
U. Leron, & O. Hazzan, "The rationality debate: Application of cognitive psychology to mathematics education". Educational Studies in Mathematics, vol. 62, no. 2, pp. 105-126, 2006.
T. Bollinger, R. Nelson, S.,Turnbull, & K. Self, "From the editor-response: open-source methods: peering through the clutter". IEEE Software, vol. 16, no. 4, pp. 6-11, 1999.
I. Stamelos, L. Angelis, A. Oikonomou, & G. L. Bleris, "Code quality analysis in open source software development". Information Systems Journal, vol. 12, no. 1, pp. 43-60, 2002.
H. Zhu, Software design methodology: From principles to architectural styles. Oxford: Elsevier. 2005.
D. L. Parnas, "On the criteria to be used in decomposing systems into modules", Communications of the ACM, vol. 15, no. 9, pp. 1053-1058, 1972.
C. Y. Baldwin, & K. B. Clark, Design rules: The power of modularity (Vol. 1). Cambridge: The MIT Press, 2000.
K. J. Sullivan, W. G. Griswold, Y. Cai, & B. Hallen, "The structure and value of modularity in software design", In the Proceedings of the 8th European Software Engineering Conference, Vienna, Austria, 2001.
A. MacCormack, J. Rusnak, & C. Baldwin, "The impact of component modularity on design evolution: Evidence from the software industry", Harvard Business School Working Paper, 2007.
T. Gilovich, D. Griffin, & D. Kahneman, (Eds.). "Heuristics and biases: The psychology of intuitive judgment". Cambridge university press, 2002.
E. Stanovich, & R. West, "Individual differences in reasoning: Implications for the rationality debate". Behavioral and brain science, vol. 23, pp. 645-726, 2000.
K. E. Stanovich, & R. F. West, Evolutionary versus instrumental goals: How evolutionary psychology misconceives human rationality, 2003.
H. Fischbein, Intuition in science and mathematics: An educational approach (Vol. 5). Springer Science & Business Media, 1987.
U. Leron, & O. Hazzan, "Intuitive vs analytical thinking: four perspectives". Educational Studies in Mathematics, vol. 71, no. 3, pp. 263-278, 2009.
T. Paz, & U. Leron, "The slippery road from actions on objects to functions and variables". Journal for Research in Mathematics Education, pp. 18-39, 2009.
I. Lavy, R. Rashkovits, & R. Kouris, "Coping with abstraction in object orientation with special focus on interface class". The Journal of Computer Science Education, vol. 19, no. 3, pp. 155-177, 2009.
L. Festinger, A Theory of Cognitive Dissonance. California: Stanford University Press, 1957.
J. Cooper, Cognitive dissonance theory. Handbook of theories of social psychology, vol. 1, pp. 377-398, 2011.
D. Kahneman, "Maps of bounded rationality: A perspective on intuitive judgment and choice". Nobel prize lecture, vol. 8, pp. 351-401, 2002.
R. P. Weber, Basic content analysis (No. 49). Sage, 1990.
K. A. Neuendorf, The Content Analysis Guidebook. Thousand Oaks, CA: Sage Publications, 2002.
E. Stein, Without good reason: The rationality debate in philosophy and cognitive science. Clarendon Press, 1996.
O. A. Aljohani, R. J. Qureshi, "Proposal to Decrease Code Defects to Improve Software Quality", International Journal of Information Engineering and Electronic Business (IJIEEB), vol.8, no.5, pp.44-51, 2016. DOI: 10.5815/ijieeb.2016.05.06