Thinking Computationally in the Digital Humanities: Toward Block-Based Programming for Humanists

paper, specified "long paper"
  1. 1. Clifford B. Anderson

    Vanderbilt University

  2. 2. Lynn T. Ramey

    Vanderbilt University

Work text
This plain text was ingested for the purpose of full-text search, not to preserve original formatting or readability. For the most complete copy, refer to the original conference program.

What is computational thinking in the digital humanities?
The question whether digital humanists should learn to code has been highly-contested (Ramsay, 2011: 243–45). The ‘hack’ versus ‘yack’ debate has lost its edge as scholars concede that theory and programming praxis can be brought together productively through what Davidson terms “collaboration by difference” (Davidson, 2015: 134). Given that the majority of digital humanists will not need to program professionally, to what extent ought computation be taught in the digital humanities? Jeannette M. Wing coined the term “computational thinking” to address the teaching of digital literacy beyond computer science. She contended that “computational thinking is a fundamental skill for everyone, not just for computer scientists” (Wing, 2006: 33). In
Digital Humanities, Berry and Fagerjord comment at length on Wing’s definition, concluding that “a critical understanding of computing at its different levels is a prerequisite for a digital humanist...” (Berry and Fagerjord, 2017: 59). There is little agreement, however, about the best way to teach computational thinking to humanists. We review the potential of visual or “block-based” programming languages for teaching computational literacy in the digital humanities. We argue that digital humanists should learn from these tools’ emphasis on the ludic over the pragmatic. We also offer suggestions about how digital humanists might adapt and critically adopt block-based programming as they seek to expand their understanding of fundamental concepts of computer science.

Review of educational programming environments
The use of visual or “block-based” programming has become a mainstay for computer science education in the K-12 arena. Block-based programming involves the manipulation of graphical elements to create units of computation. The authors of
Learnable Programming: Blocks and Beyond argue that block-based programming makes it easier to learn to program for three primary reasons: emphasizing recognition over recall, “chunking code,” and constraining options (Bau et al., 2017: 72–80). These pedagogical advantages would also seem to apply in the digital humanities though, as a quick review of the evolution of these languages demonstrates, they were not created to teach computational thinking to adults.

Logo. The origins of block-based programming stretch back to Logo, a programming language and graphical environment for computer science education. While not a visual programming language, when paired with Turtle Graphics Logo provides students with the ability to visualize their computations (Papert, 1980: 16–20). Logo has gained renewed popularity among the elementary age set due to Gene Luen Yang and Mike Holmes’
Secret Coders, a series of graphic novels that employs Logo to teach basic computational literacy (Yang and Holmes, 2015).

Scratch. The designers of Scratch sought to create a computational environment for kids and teens to become active manipulators rather than passive consumers of digital media. The designers stripped away many of the complexities of software development (e.g., linking libraries and compiling binaries) to create what they term a “tinkerable” environment, pioneering the use of blocks for syntax (Maloney et al., 2010: 16:4).

Snap! While Scratch succeeded in developing an extensive community of users in the K-12 arena, its emphasis on semantic simplicity inhibits its usefulness for teaching students computer science at the postsecondary level. The Snap! programming environment emerged from a collaboration between Brian Harvey at Berkeley and Jens Mönig, a software developer currently at SAP. Drawing on long experience teaching functional programming in Scheme, the authors created a semantics with lambda expressions, recursion, and high-order functions using a Scratch-like syntax (Harvey and Mönig, 2015: 35–38).

NetsBlox. NetsBlox is an adaptation of Snap! that makes it straightforward for users to communicate with internet services and to communicate peer-to-peer (Broll et al., 2017: 81–86). Students can draw on these features of NetsBlox, for example, to place markers representing art museums in the vicinity on a Google Map or to create a shared digital whiteboard. By fostering the ability to communicate beyond the boundaries of the programmer’s laptop, NetsBlox paves the way for creating data-driven digital humanities projects. Data may also be persisted in the cloud, making it possible to preserve state. Currently, NetsBlox comes with the ability to call out to a select number of services. However, the developers envision “adding a lot of new services and data sources to NetsBlox...”(Broll et al., 2017: 86). This raises the question whether a version of NetsBlox could be developed specifically for digital humanists, integrating web-based application programming interfaces (or APIs) for platforms like the DPLA, the HathiTrust, and Europeana, among others.

NetsBlox with prototype RPC block for Wikidata
The digital humanities community also embraces visual programming models. Voyant Tools, for instance, provides a graphical interface for scholars seeking to study textual corpora (Sinclair et al., 2016). To date, there appears to be little to no scholarship about the pedagogical effectiveness of using visual programming environments in the digital humanities.

Programming as ludic rather than pragmatic
Is learning block-based programming a means to an end or an end in itself? While computer science students will inevitably move from block-based to text-based programming (Kölling et al., 2015: 29–38), the designers of Scratch claim that many students will fruitfully remain within its environment (Resnick et al., 2009: 66f). At the secondary and post-secondary level, “The Beauty and Joy of Computing” curriculum likewise promotes the enjoyment of programming within the Snap! environment: “having fun is an explicit course goal” (Garcia et al., 2015: 71). Leading digital humanists also acknowledge the playful aspects of programing. In “On Building,” Stephen Ramsay remarks, “Learn to code because it’s fun and because it will change the way you look at the world” (Ramsay, 2011: 245). Nick Montfort argues that motivations for learning programming go beyond the “merely instrumental” (Montfort, 2016: 268), remarking “it is enjoyable to write computer programs and to use them to create and discover” (Montfort, 2016: 277). By customizing the visual representations and selecting domain-specific exercises, block-based programming could find wide application in the digital humanities, promoting the joy of learning computation for its own sake while providing humanists with a better conceptual grounding for the evaluation and application of algorithms and software in their digital research.

Prolegomena to any future visual programming environment for the digital humanities
What would a digital humanities version of a block-based programing environment look like? By way of conclusion, we suggest how NetsBlox might evolve past its origins in Scratch to provide a shared platform for teaching computational thinking in the digital humanities. We propose three developments: 1. creating default sprites that represent the domains of digital humanities research (i.e. representing books rather than basketballs); 2. establishing libraries of blocks to call commonly-used web-based APIs in the digital humanities; 3. providing a curriculum focusing on major research areas in the digital humanities, including distant reading, educational gaming, geospatial analysis, and steganography, among other topics. By developing a block-based environment for the digital humanities, we hope not only to advance computational thinking in our field, but also to provide resources for introducing the digital humanities into secondary and postsecondary courses on computational thinking.


Bau, D., Gray, J., Kelleher, C., Sheldon, J. and Turbak, F. (2017). Learnable programming: Blocks and beyond.
Commun. ACM,
60(6). New York, NY, USA: ACM: 72–80.

Berry, D. M. and Fagerjord, A. (2017).
Digital Humanities: Knowledge and Critique in a Digital Age. Cambridge: Polity.

Broll, B., Lédeczi, A., Volgyesi, P., Sallai, J., Maroti, M., Carrillo, A., Weeden-Wright, S. L., Vanags, C., Swartz, J. D. and Lu, M. (2017). A visual programming environment for learning distributed programming. In,
Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education. ACM, pp. 81–86.

Davidson, C. (2015). Why yack needs hack (and vice versa): From digital humanities to digital literacy.
Svensson, P. , Goldberg, DT, Ed: 131–45.

Garcia, D., Harvey, B. and Barnes, T. (2015). The beauty and joy of computing.
ACM Inroads,
6(4). New York, NY, USA: ACM: 71–79.

Harvey, B. and Mönig, J. (2015). Lambda in blocks languages: Lessons learned. In,
2015 IEEE Blocks and Beyond Workshop (Blocks and Beyond). pp. 35–38.

Kölling, M., Brown, N. C. C. and Altadmri, A. (2015). Frame-based editing: Easing the transition from blocks to text-based programming. In,
Proceedings of the Workshop in Primary and Secondary Computing Education. (WiPSCE ’15). New York, NY, USA: ACM, pp. 29–38.

Maloney, J., Resnick, M., Rusk, N., Silverman, B. and Eastmond, E. (2010). The scratch programming language and environment.
Trans. Comput. Educ.,
10(4). New York, NY, USA: ACM: 16:1–16:15.

Montfort, N. (2016).
Exploratory Programming for the Arts and Humanities. Cambridge: MIT Press.

Papert, S. (1980).
Mindstorms: Children, Computers, and Powerful Ideas. New York, NY, USA: Basic Books, Inc.

Ramsay, S. (2011). On building. In Melissa Terras, Julianne Nyhan, (ed),
Defining Digital Humanities: A Reader. London: Routledge, pp. 243–45.

Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., et al. (2009). Scratch: Programming for all.
Commun. ACM,
52(11). New York, NY, USA: ACM: 60–67.

Sinclair, S., Rockwell, G. and Others (2016). Voyant tools.
URL: Http://Voyant-Tools. Org/[September 5, 2016].

Wing, J. M. (2006). Computational thinking.
Commun. ACM,
49(3): 33–35.

Yang, G. L. and Holmes, M. (2015).
Secret Coders. New York: Macmillan.

If this content appears in violation of your intellectual property rights, or you see errors or omissions, please reach out to Scott B. Weingart to discuss removing or amending the materials.

Conference Info

In review

ADHO - 2019

Hosted at Utrecht University

Utrecht, Netherlands

July 9, 2019 - July 12, 2019

436 works by 1162 authors indexed

Series: ADHO (14)

Organizers: ADHO