K. Jassem, D. Grajewska

Adam Mickiewicz University (POLAND)
“The command line has many great advantages that can really make you a more efficient and productive data scientist. Roughly grouping the advantages, the command line is: agile, augmenting, scalable, extensible, and ubiquitous”.

This citation from Jansens (2014) summarizes the reasons why a data scientist should have the competency to program in the command line. Practice proves, however, that command-line programming (also known as Bash programming) is regarded as a preserve of “programming experts” while beginners are taught “friendly” programming languages, such as Python or Java, often using teaching aids which are supposed to help them grasp basic programming concepts.

One of the most successful approaches to teaching programming skills is the application of visual blocks. The Google Blockly library ( helps learn 5 different programming languages (JavaScript, PHP, Python, Lua, and Dart) with visual blocks translated to the language of your choice. Numerous other platforms (e.g.,,, or, etc.) share the very same idea: a computer program can be visualized using various types of blocks, linked together to form a unified structure.

A few papers presented at the Edulearn conference between 2015 and 2019 discuss the possibility of incorporating entertainment into programming teaching. Mladenović (2016) analyzes the efficiency of using game coding to teach programming skills. Levels of motivation and efficiency are compared while using “procedural” Python versus “visual” Scratch. Leskela et al. (2015) compare the effectiveness of visual (block) programming to the effects of a fun-based approach where children are introduced to new concepts by means of games and play. Buckova (2018) claims that the Scratch environment may help young students grasp the general concepts of computer science, and Kiesler (2016) shows that blocks may prove helpful not only for youngsters but also for university students.

To the best of our knowledge, no visual tool has so far been designed for the teaching of Bash programming. The unjustified belief that command-line scripts require extensive expertise has prevented educators from making Bash programming friendly for beginners.

Our intention is to change this situation by developing a visual block-based tool serving to teach command-line programming. In our opinion, one of the major problems in teaching on-line programming is the misunderstanding of the terms: redirection and pipeline. We believe that visualizing these terms using interconnected blocks may significantly improve the process of learning programming skills.

Our system, Bash Box, is supposed to teach how to process text files of various formats. The learner first selects a document from a pre-defined list of examples or chooses a file of their choice to be processed. Then, the student creates a program using operational blocks. Each of those corresponds to a certain type of processing: reading, filtering, modifying or writing. In the next step, the visual program is translated automatically into a Bash script, which is displayed on the student’s screen. Finally, the input file is processed using the script and the output is saved and presented to the author of the script.