13 Epistemic Programming

Epistemic Programming (Hüsing, 2021; Hüsing & Podworny, 2022) describes a new programming concept, focusing on gaining insights through programming digital artefacts. It aligns well with the STEAM idea by addressing the five areas of Science, Technology, Engineering, Arts and Mathematics, as will become clear in the following.

The core idea behind Epistemic Programming is to let students perceive programming as a useful tool to gain insights which are meaningful to them and might help improve their lives or their (local) environment (at least to a small extent). In this way, the geek-like cliché of programming is supposed to be dissolved, making Epistemic Programming a programming concept for everyone.

In order to gain and distribute these insights, creating so-called “Computational Essays” (DiSessa, 2000; Wolfram, 2017) is a suitable procedure. Within these interactive documents, students get a means of presenting their programming process as well as their insights about their self-selected topic or question in a reproducible way (McNamara, 2019; Sandve et al., 2013). The essays as products of their investigation and programming encourage other students to understand both their knowledge- and programming-process in such a way, they can adapt or extend the program according to their own needs or interests.

For creating “Computational Essays”, a combination of code and explanations is needed in order to provide adequate documentation of both results and means of obtaining them. Additionally, interpretations of the (programming) results are connected to them (DiSessa, 2000; McNamara, 2019; Sandve et al., 2013; Wolfram, 2017). Jupyter Notebook (Perez & Granger, 2015; https://jupyter.org) has proven to be a suitable tool for this purpose as it constitutes an interactive, web-based computing platform in which interactive documents (so-called Jupyter Notebooks) can be created. Jupyter Notebooks are constructed out of cells, that either contain

  • program code (for example Python-Code),
  • the respective output of the code-cells, or
  • Markdown-Texts to explain the program code or the output.

Through the combination of these cells, interactive documentations of programming projects can be created, making the programming process as well as the insights gained through it comprehensible and reproducible for the “reader”.

Data analysis projects are especially suitable for the conduction of the Epistemic Programming approach. As part of the Project Data Science and Big Data at School (ProDaBi; www.prodabi.de), there have already been a number of implementations for such modules in different grades and schools, focusing on data analysis in the context of environmental data (Hüsing & Podworny, 2022). In these implementations, students created data analyses by programming in Python, focusing on individual research questions, meaningful to them. In this way, students, for example, assessed the CO2-value in their classroom and its changes in relation to certain events and variables (room size, number of people in the room etc.). In other cases, they investigated particulate matter pollution and noise level in road traffic for different speed zones in inner-city traffic. Their goal was not only to gain insights into these specific fields but develop certain actions based on them for the purpose of making their surroundings a little better.

If you are interested in Epistemic Programming and want to learn more about it, please feel free to contact Sven Hüsing, Paderborn University (sven.huesing@uni-paderborn.de).


DiSessa, A. A. (2000). Changing minds: Computers, learning, and literacy. MIT Press.

Hüsing, S. (2021). Epistemic Programming – An insight-driven programming concept for Data Science. 21st Koli Calling International Conference on Computing Education Research, 1–3. https://doi.org/10/gnqv9h

Hüsing, S., & Podworny, S. (2022). Computational Essays as an Approach for Reproducible Data Analysis in lower Secondary School. Proceedings of the IASE 2021 Satellite Conference Satellite Conference: Statistics Education in the Era of Data Science p. 2021. IASE. https://doi.org/10.52041/iase.zwwoh

McNamara, A. (2019). Key attributes of a modern statistical computing tool. American Statistician, 73(4), 375384. https://doi.org/10.1080/00031305.2018.1482784

Perez, F., & Granger, B. E. (2015, July 8). Project jupyter: Computational narratives as the engine of collaborative data science. Jupyter blog. https://blog.jupyter.org/project-jupyter-computational-narratives-as-the-engine-of-collaborative-data-science-2b5fb94c3c58

Sandve, G. K., Nekrutenko, A., Taylor, J., & Hovig, E. (2013). Ten simple rules for reproducible computational research. PLOS Computational Biology, 9(10), e1003285. https://doi.org/10.1371/journal.pcbi.1003285

Wolfram, S. (2017, November 14). What is a computational essay? Stephan Wolfram writings. https://writings.stephenwolfram.com/2017/11/what-is-a-computational-essay/