Literate Programming for Authorship of Interactive Textbooks for Programming-centric Courses
Bryan A. Jones, Jane Moorhead · 2020
Abstract Software defines and empowers much of our modern society, from water treatment plants to banking, social media to anti-lock brakes. A wide variety of programming languages (C/C++, JavaScript, Python, etc.) enable computer scientists and software engineers to create the software and firmware necessary to our modern society. As educators, we must therefore find effective ways to instruct students in the use of these complex languages. Therefore, this paper presents a novel approach to programming pedagogy by combining literate programming, in which a program is presented as a web page, with Runestone Interactive, an open-source platform to author and host interactive textbooks. Each program/web page becomes a section in the text, meaning that students can both read the text as a web page, or execute it in their development environment as a program. Questions and programming exercises directly embedded within these program/web pages allow authors to present brief, concise exposition of a new concept followed by comprehension questions and automatically-graded programming exercises to reinforce this concept. Since the textual version of the web page can also be executed as a demonstration program, students can observe these programs in operation, while instructors can automatically check that all their code compiles and executes correctly. A comprehensive set of tools enables instructors to quickly and easily compose books consisting of program/web pages, embed exercises, check the correctness of the programs, then host their textbooks for student use. Student feedback provides preliminary indicators of this approach’s effectiveness.