The Role of Source Code Vocabulary in Programming Teaching and Learning

This full paper, categorized as Research-to-Practice, presents an investigation on the role of source code vocabulary in introductory programming learning practices. According to software engineering literature, source code vocabulary is a fundamental aspect of software quality as it contributes to software readability and eases maintenance and evolution tasks. Furthermore, some studies show that identifier naming and comments in the code tend to use terms that reflect the software problem domain specification and can be used, for instance, to localize feature. In this paper, we build upon this knowledge of software engineering and investigate how we can take advantage of it in computer science education, specially on the teaching of programming. We conducted a twofold empirical study in an introductory programming course to investigate: (1) How to give automated feedback about identifier naming, aiming to improve software readability, and (2) To what extent source code vocabulary reflects problem specification comprehension, which is crucial to effective programming problem-solving. In the first study, we found that 51.7% of the students improved their source code vocabulary, after receiving such feedback. In the second study, the results showed that students tend to manage to better comprehend the programming problem being solved when their code identifier names are connected to the related description. It is a promising indicative that we can use this information to assess the problem requirements comprehension, which is a fundamental step in the programming problem-solving cycle. The main contribution of this paper is to shed light on the source code vocabulary and promote its role in the programming teaching and learning scenario. We present some evidence that students’ source code vocabulary is a rich information source about their understanding and we can use it to produce formative feedback.

[1]  Elena L. Glassman,et al.  Foobaz: Variable Name Feedback for Student Code at Scale , 2015, UIST.

[2]  Wei Zhao,et al.  SNIAFL: towards a static non-interactive approach to feature location , 2004, Proceedings. 26th International Conference on Software Engineering.

[3]  Giuliano Antoniol,et al.  Analyzing the Evolution of the Source Code Vocabulary , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[4]  Emily Hill,et al.  Using natural language program analysis to locate and understand action-oriented concerns , 2007, AOSD.

[5]  Christopher Douce,et al.  Automatic test-based assessment of programming: A review , 2005, JERC.

[6]  Petri Ihantola,et al.  Review of recent systems for automatic assessment of programming assignments , 2010, Koli Calling.

[7]  Michael J. Rees,et al.  Automatic assessment aids for Pascal programs , 1982, SIGP.

[8]  David Jackson,et al.  Grading student programs using ASSYST , 1997, SIGCSE '97.

[9]  David W. Binkley,et al.  Leveraged Quality Assessment using Information Retrieval Techniques , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[10]  Simon Butler The effect of identifier naming on source code readability and quality , 2009, ESEC/FSE Doctoral Symposium '09.

[11]  Eliane Araújo,et al.  Giving Automated Feedback About Student Code Identifiers: a Method Based on the Description of Programming Problem , 2019 .

[12]  DouceChristopher,et al.  Automatic test-based assessment of programming , 2005 .

[13]  Robert C. Martin Clean Code - a Handbook of Agile Software Craftsmanship , 2008 .

[14]  Kirsti Ala-Mutka,et al.  Journal of Information Technology Education Supporting Students in C++ Programming Courses with Automatic Program Style Assessment Supporting Students on C++ Programming Courses , 2022 .

[15]  Andrea De Lucia,et al.  Improving Source Code Lexicon via Traceability and Information Retrieval , 2011, IEEE Transactions on Software Engineering.

[16]  Miguel Nussbaum,et al.  Some recommendations for the reporting of quantitative studies , 2015, Comput. Educ..