June 14, 2015
June 14, 2015
June 17, 2015
Liberal Education/Engineering & Society and Computing & Information Technology
26.1779.1 - 26.1779.13
Writing to Learn to Program using a Programmer’s Word Processor As educators, we have trained a generation of illiterate programmers. Despite myriads of documents that software engineering should (and occasionally actually does) produce, such as requirements documents, UML diagrams specifying interfaces, and API documentation extraction tools (Javadoc, Doxygen, etc.), few practicing programmers use the written word to enable them to produce code. What documentation is produced often bears little relationship to the actual implementation after the first major revision or refactoring of the program. Writing distinguishes humans from animals, making thoughts visible while prompting reflection and deep understanding. It is essential in almost every area of human endeavor, by extending our abilities (memory, recall, etc.) to enable us to solve complex problems that would otherwise be insoluble. Yet, in the context of software engineering, little is done to mediate the transference of ideas to code with the written word. While external documentation serves to provide a conceptual framework for the externals of a program (its interfaces, requirements, and specifications), poorly used, typically omitted comments provide the only means for programmers to record their ideas, along with the implementation they create. How have we created a system designed to make writing as difficult and inflexible as possible, forcing programmers to be coders, not writers? Therefore, we propose writing to learn to program (WTLTP), in which writing is intermingled with the program itself, following the literate programming paradigm. While students are typically given an overall goal their program must satisfy and then instructed in specific constructs (loops, functions, recursive algorithms, etc.), the struggle most students face is to find the set of constructs that satisfies the goal. This is the creative process, the heart of any programming exercise, and it is typically omitted from all classroom instruction. Experts can intuitively perform this mapping from goals to code, while most novices struggle with this step. This is the point at which WTLTP can be of immense benefit because by providing the novice with the opportunity to reflect, in writing, on goals and structures, visualizing their thought process within a document. To assist students in viewing a program as a document, rather than as a series of instructions for a computer, the CodeChat extensions contributed by the authors to the Enki text editor provide a WYSIWYGlike environment that shows a both the unformatted source code of a program side byside with a typeset HTML version of the program. Changes made to the source code are immediately rendered to the web page, encouraging them to treat their program as a document. Through the writing process, the unconscious art form of programming becomes a concrete reality in which students begin to discover what they do not understand and find solutions to problems previously insoluble. Fig. 1: CodeChat in Enki, show source code on the left and the corresponding web page on the right, complete with typeset equations and plots produced by the underlying Matlab code.
Jones, B. A., & Mohammadi-Aragh, M. J., & Barton, A. K., & Reese, D., & Pan, H. (2015, June), Writing-to-Learn-to-Program: Examining the Need for a New Genre in Programming Pedagogy Paper presented at 2015 ASEE Annual Conference & Exposition, Seattle, Washington. 10.18260/p.25114
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2015 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015