Dealing with Stumbling in C Language Programming Using Visual Programming Environment
Abstract
For the education of beginning programmers, visual programming that develops programs by combining blocks has attracted significant attention. An environment for generating code in a conventional programming language is also provided. However, existing environments are not fully visualized. In this investigation, we prototyped a development environment for the C language in which users can intuitively understand the concept of variable declarations and include statements, and an execution environment that visualizes the state of evaluation of expressions and changes in the values of variables before and after the execution of the statement. It also has step-forward and step-backward functions. This programming environment is a web application developed with JavaScript. For step-by-step evaluation of an expression, it converts the expression internally to Reverse Polish Notation and visualizes the change in the terms in the expression. To implement the step-backward function, it has a history-of-execution context. We determined experimentally that students who are not proficient in C can program more accurately and quickly in this environment than with text-based coding.
References
Brett A. Becker, An Effective Approach to Enhancing Compiler Error Messages. Proc. of the 47th ACM Technical Symposium on Computing Science Education (SIGCSE ’16), pp.126-131, 2016.
Brett A. Becker, Kyle Goslin, and Graham Glanville, The Effects of Enhanced Compiler Error Messages on a Syntax Error Debugging Test, Proc. of the 49th ACM Technical Symposium on Computer Science Education (SIGCSE ’18), pp.640–645, 2018.
Scratch - imagine, program, share, https://scratch.mit.edu/
Snap! – build your own blocks, https://snap.berkeley.edu/
D. Bau, J. Gray, C. Kelleher, J. Sheldon, F. Turbak, Learnable programming: blocks and beyond, Communications of the ACM, June 2017, pp. 72-80, 2017.
M. Armoni, O. Meerbaum-Salant, M. Ben-Ari, From Scratch to “real” programming, ACM Transaction on Computing Education, Vol.14, No.4, Article No. 25, 2015.
Y. Matsuzawa, Y. Tanaka, S. Sakai "Measuring an impact of block-based language in introductory programming". In: Brinda T., Mavengere N., Haukijarvi I., Lewin C., Passey D. (eds) Stakeholders and Information Technology in Education. SaITE 2016. IFIP Advances in Information and Communication Technology, vol.493, pp.16-25, Springer, Cham, 2016.
T. W. Price, T. Barnes, Comparing textual and block interfaces in a novice programming environment, Proceedings of the eleventh annual International Conference on International Computing Education Research, pp.91-99, 2015.
Mazyar Seraj, Serge Autexier, Jan Janssen, BEESM, a block-based educational programming tool for end users, Proc. of the 10th Nordic Conference on Human-Computer Interaction, pp.886–891, 2018.
Blockly, https://developers.google.com/blockly/
Y. Matsuzawa, H. Tasui, M. Sugiura, S. Sakai, Seamless language migration in introductory programming education through mutual language translation between visual and Java (in Japanese), Vol.55, No.1, pp.57-71, 2014.
D. Bau, A. Bau, M. Dawson, C. S. Pickens, Pencil Code: block code for a text world, Proceedings of the 14th International Conference on Interaction Design and Children, pp.445-448, 2015.
Davin Mccall, Michael Kolling, A New Look at Novice Programmer Errors, ACM Transactions on Computing Education (TOCE), Article No.: 38, 30pages, 2019.
X. Fu, C. Yin, A. Shimada, H. Ogata, Error log analysis in C programming language courses, Proceedings of the 23rd International Conference on Computers in Education, pp.641-650, 2015.
X. Fu, A. Shimada, H. Ogata, Y. Taniguchi, D. Suehiro, Real-time learning analytics for C programming language courses, Proceedings of the Seventh International Learning Analytics & Knowledge Conference, pp. 280-288, 2017.
jQuery Sortable a flexible, opinionated sorting plugin for jQuery, http://johnny.github.io/jquery-sortable/
MameBlock.js, http://ycatch.github.io/mameblock.js/index.html
Gavriel Yarmish, Danny Kopec, Revisiting novice programmer errors, SIGCSE Bull, Vol.39, No.2, pp.131–137, 2007.