ABSTRACT
The Syntax-Free Approach (SFA) to teaching programming was proposed in response to the perceived challenges often faced by novice programmers while taking their first course in programming. The idea of the SFA is to provide a level of abstraction over the language syntax and teach programming to novices as algorithms instead of lines of code. In this paper, we report the development of a tool that translates novice programs into detailed textual algorithms using regular expressions. We refer to these algorithms as narrations. These narrations are syntax-free, can improve readability and aid the comprehension of programs. The technique described can also be employed for automatic generation of hints or tips for novice programmers during classroom or laboratory sessions.
- Amalfitano, D., Fasolino, A., Polcaro, A., and Tramontana, P. DynaRIA: A tool for AJAX web application comprehension. IEEE 18th International Conference on Program Comprehension (2010), 46--47. Google ScholarDigital Library
- Bornat, R. Programming from First Principles. Prentice Hall International Series in Computer Science. Prentice-Hall International, 1987. Google ScholarDigital Library
- Dalton, A., and Kreahling, W. Automated construction of memory diagrams for program comprehension. In Proceedings of the 48th Annual Southeast Regional Conference (2010), ACM. Google ScholarDigital Library
- Ebrahimi, A. Novice programmer errors: Language constructs and plan composition. International Journal of Human-Computer Studies 41, 4 (1994), 457--480. Google ScholarDigital Library
- Ebrahimi, A., and Schweikert, C. Empirical study of novice programming with plans and objects. ACM SIGCSE Bulletin 38, 4 (2006), 52--54. Google ScholarDigital Library
- Fincher, S. What are we doing when we teach programming? 29th Annual Frontiers in Education Conference 1 (1999), 12A4--1.Google ScholarCross Ref
- GCC. GCC releases: A timeline of GNU compiler collection. http://www.gnu.org/software/gcc/releases.html. Accessed: 2014-03-20.Google Scholar
- Haiduc, S., Aponte, J., and Marcus, A. Supporting program comprehension with source code summarization. ACM/IEEE 32nd International Conference on Software Engineering 2 (2010), 223--226. Google ScholarDigital Library
- Heninger, A. Analyzing unicode text with regular expressions. Proceedings of the 26th Internationalization and Unicode Conference, San Jose, CA (2004), 1--18.Google Scholar
- Johnson, W. Understanding and debugging novice programs. Artificial Intelligence 42, 1 (1990), 51--97. Google ScholarDigital Library
- Johnson, W., and Soloway, E. PROUST: Knowledge-based program understanding. IEEE Transactions on Software Engineering 3 (1985), 267--275. Google ScholarDigital Library
- Kuhn, A., Erni, D., and Nierstrasz, O. Towards improving the mental model of software developers through cartographic visualization. arXiv preprint arXiv:1001.2386 (2010).Google Scholar
- Lahtinen, E., Ala-Mutka, K., and Järvinen, H. A study of the difficulties of novice programmers. ACM SIGCSE Bulletin 37, 3 (2005), 14--18. Google ScholarDigital Library
- Lanza, M., Ducasse, S., Gall, H., and Pinzger, M. Code Crawler--an information visualization tool for program comprehension. In Proceedings of the 27th IEEE International Conference on Software Engineering (2005), pp. 672--673. Google ScholarDigital Library
- Martin, J. Introduction to Languages and the Theory of Computation. McGraw-Hill, New York, 2003. Google ScholarDigital Library
- Mössenböck, H. An example of a Taste program. The compiler generator Coco/R User Manual (2010), 30--32.Google Scholar
- MSDN. Regular Expression Language--quick reference: Microsoft Developer Network Documentation on the .Net framework, version 4.5, regular expressions. http://msdn.microsoft.com/en-us/library/az24scfc.asp. Accessed: 2013-12-19.Google Scholar
- Pyott, S., and Sanders, I. ALEX: an aid to teaching algorithms. ACM SIGCSE Bulletin 23, 3 (1991), 36--44. Google ScholarDigital Library
- RiSE. Rise4fun tools: Online visual C++ compiler and regular expression evaluator. http://rise4fun.com. Accessed: 2013-12-23.Google Scholar
- Satir, G., and Brown, D. C++: the core language. O'Reilly Media, Inc., 1995. Google ScholarDigital Library
- Shackelford, R. Introduction to Computing and Algorithms. Addison-Wesley Longman Publishing Co., 1997. Google ScholarDigital Library
- Sipser, M. Introduction to the Theory of Computation. Cengage Learning, 2006.Google Scholar
- Soloway, E., and Spohrer, J. Studying the Novice Programmer. Lawrence Erlbaum Associates, 1989. Google ScholarDigital Library
- Spohrer, J. MARCEL: Simulating the novice programmer. Ablex Publishing Corporation, 1992. Google ScholarDigital Library
- Storey, M. Theories, tools and research methods in program comprehension: past, present and future. Software Quality Journal 14, 3 (2006), 187--208. Google ScholarDigital Library
- Storey, M. An interactive visualization environment for exploring Java programs: SHriMP views revisited. IEEE 19th International Conference on Program Comprehension (2011), xviii--xviii.Google ScholarDigital Library
- Storey, M., Best, C., and Michand, J. SHriMP views: An interactive environment for exploring Java programs. Proceedings of the 9th International Workshop on Program Comprehension (2001), 111--112. Google ScholarDigital Library
Index Terms
- Abstracting and Narrating Novice Programs Using Regular Expressions
Recommendations
Navigation and Comprehension of Programs by Novice Programmers
IWPC '01: Proceedings of the 9th International Workshop on Program ComprehensionAbstract: The purpose of this research is to examine the influence of different methods of program navigation on the mental representation and comprehension of novice procedural programmers. As a programmer tries to comprehend a program, a particular ...
A play on regular expressions: functional pearl
ICFP '10Cody, Hazel, and Theo, two experienced Haskell programmers and an expert in automata theory, develop an elegant Haskell program for matching regular expressions: (i) the program is purely functional; (ii) it is overloaded over arbitrary semirings, which ...
Reimagining literate programming
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applicationsIn this paper we describe Ginger, a new language with first class support for literate programming. Literate programming is a philosophy that argues computer programs should be written as literature with human readability and understanding of paramount ...
Comments