Employing Literate Programming Instruction in a Microprocessors Course - Jones, Bryan A; Mohammadi-Aragh, Mahnas Jean (Association for Engineering Education - Engineering Library Division Papers, 2016)
Learning to program is difficult and has been documented as a persistent problem not just for computer science majors, but also for other engineering majors who use programming as a tool within their disciplines. One solution may lie in Knuth’s literate programming paradigm, which treats a program as an essay, intermingling code with explanation in a beautifully typeset document. This stands in contrast to traditional programming pedagogy where difficult-to-understand code is isolated from its explanation, in a separate file from the flowcharts and text which detail the operation of the program. Knuth’s literate programming paradigm is consistent with cognitive load theory, which states that keeping related concepts close, temporally or spatially, can improve the ability of students to grasp difficult ideas. Based on this, we hypothesize that programs intermingled with explanation and typeset as a document will improve student learning when compared to traditional instruction in which programs and their explanation remain separated. In this paper, we examine the use of literate programming in a junior-level course on microprocessors in the Department of Electrical and Computer Engineering using both a student survey and analysis of test scores. By alternating between literate programs/documents and traditional programs with accompanying explanations, we evaluate learning gains measured by performance on tests with and without literate programming. Results show a mild preference by students for the literate programming form, and analysis of student performance on tests shows small (but statistically insignificant) gains when using literate programming. Based on these results, we discuss future directions for this new approach to programming pedagogy.