Note: This outline was created in Spring 2008 for a program at UConn, and may be outdated in some areas. It may not reflect the current state of the CommLineLit section of this wiki.
Command Line Literacy Activities
Sean O'Brien, M.A.Ed. Educational Technology, University of Connecticut
This paper describes the design and development of a learning tool intended to facilitate command line literacy. Command line literacy is defined as proficiency in utilizing a command line interface (CLI) to complete tasks within a computer software environment. The learning tool combines instruction with interactive Web-based tools, and asks users to complete activities related to CLIs. These activities evaluate user ability to gather and sort information, synthesizing Internet resources with questions related to online reading comprehension (ORC). The structure of this paper will follow that of the model used in the design of the learning tool, the ADDIE instructional design model.
Many operating systems rely upon a command line interface (CLI). CLIs allow users to interact with computer software by typing commands, often combining a series of commands to achieve a goal. Commands may interact in intricate ways, with the output of each command processed by another. For this reason, CLIs are utilized for complex tasks by system administrators, computer programmers, and researchers in a variety of fields.
The CLI is the predecessor of the graphical user interface (GUI), but is still central to many operating systems (especially Unix or Unix-like systems). Command line interfaces have several advantages when contrasted with GUIs, most notably in tasks requiring batch processing or the sorting of large amounts of data. CLIs are also ideal as a problem-solving medium, as they produce real-time output for the user, including detailed error messages that would be cumbersome in a GUI environment.
In modern operating systems, GUIs hide many complex actions and configuration options. CLIs allow users to access these actions and options, configure/customize their systems to a greater degree, secure their system and investigate security vulnerabilities, and debug and potentially fix problems that arise. In this way, CLIs provide an ideal Constructivist learning environment, one where users are empowered and actively constructing knowledge of the software interface.
However, most computer users today prefer to use GUIs to perform common operations and have little or no knowledge of CLIs. This is an unfortunate consequence of GUI popularity, and relegates many users to the role of simply a consumer, unable to take full advantage of the software they have become increasingly reliant upon. Also, they are unable to reap the full benefits of automating monotonous tasks in a CLI. Rather than recognizing the strengths of GUI tools (e.g. graphic manipulation and Web browsing) along with their weaknesses (e.g. batch processing of files, text manipulation), many users incorrectly assume the GUI is the only available software environment.
The goal of the learning tool outlined in this paper is to encourage command line literacy in students. Command line literacy is defined as proficiency in utilizing a command line interface (CLI) to complete tasks within a computer software environment. Such an understanding will allow students to recognize the strengths and weaknesses of CLIs and utilize the optimal tools for specific software tasks (e.g. GUI tools for editing photos, CLI tools for automating data backups).
Even a basic understanding of CLIs is an important skill to possess, one that may potentially open new doors for a future profession. The Internet relies heavily upon CLIs for its operation, and most Web servers do not have GUIs installed. Given the prominence of CLIs and their important role in computer systems, command line literacy is a valuable tool for students to possess.
During the analysis phase of this project, the following information was determined. Discussions with peers (university students) were very valuable during this phase and influenced the target audience of the learning activities.
Users of this learning tool will be university students, both on the undergraduate and graduate level. These students have varying levels of proficiency with software, but most own a personal computer.
Students currently enrolled in college spend a large amount of time on the computer, and most own a desktop or laptop computer. Software is essential to their academic lives, and their coursework becomes more closely integrated with the Internet each semester. Although these students are proficient in GUI environments, a CLI might be utilized to empower them as users, as well as better prepare them for interaction with operating systems in their future professions.
The goal of the learning tool is to encourage command line literacy in students, allowing them to recognize the strengths and weaknesses of CLIs as well as the GUI tools they are already familiar with.
After completing the learning module and activities that are central to this project, students should be able to:
- 1. Locate information
- 2. Critically evaluate information
- 3. Synthesize information from multiple sources
- 4. Utilize that information for basic CLI tasks
- 5. Communicate the results efficiently to others
The learning module and activities will be available in the form of a wiki website, hosted at https://webio.me/cll. Portions of the module and activities may be better utilized in some classrooms if printed and handed out as worksheets.
- Software Compatibility: Without consistency of computer systems, it is difficult to focus learning activities upon a specific CLI tool. Although this was overcome to a large extent due to the implementation of Web-based CLI tools, differences in software environments cannot be overcome completely.
- Personal Interaction with Peers and Instructors: The learning module and activities do not encourage group work, nor is there an active role for the instructor to play. Students are mainly left to explore on their own, utilizing their critical literacy and online reading comprehension skills to complete the evaluations. This may be troublesome for students weak in these areas, or those disinterested with computers and software.
- Accessibility: Vision and motor skill impairments could hinder users completing the learning activities. CLI screens are not well-suited for users with visual impairments. Users with difficulty typing may also have a rough time exploring a CLI, due to the large strings of text it may be necessary to type.
In the design phase of this project, experimentation was essential. The project's focus upon software tools introduces limitations, and it quickly became apparent that certain approaches were unfeasible. Thus, not much time was lost in exploring dead-end approaches. However, without exploring multiple designs, the project might never have reached a level of maturity.
Concept 1: Native CLI Application (shell)
Four laptops, each running an Ubuntu Linux LiveCD, were set up as the focal point of the project. Utilizing the Gnome Terminal CLI, users would follow an online tutorial, completing an evaluation at the end of the learning activities.
Concept 2: "Screencast" Videos
|"Screencast" video tutorials were recorded to coincide with the learning activities.|
Concept 3: Web-based CLI Tools
|Web-based command line programs were implemented, simulating specific aspects of interaction with a CLI environment. These coincided with full tutorials on a basic Unix command, |
During the design phase, I focused on the following considerations:
- Ease of use/access: The design of the project is very simple, keeping to a basic graphical format and simple layout that can be viewed uniformly in different Web browsers and on different operating systems. The Web tools chosen for the project are all easily viewable in any modern browser, and do not require special plugins.
- New literacies: The concept of command line literacy is closely related to other new literacies, and the goals of this learning project are similar to those of the Online Reading Comprehension Assessment Blog (ORCA-Blog). While formulating the concept of command line literacy, I tried to keep the end-users in mind. The activities focus on independent exploration, very much rooted in the Constructivist conception of learning.
Early on in the design process, I decided that MediaWiki, the wiki software that runs Wikipedia, would be the ideal platform for this learning project. MediaWiki allows for a very clean, organized layout and easy manipulation of text and graphics. Furthermore, I already had some development experience with MediaWiki. The final version of the learning project contains many tweaks, which include:
- Fine-grained permissions management, for restricting public editing of all pages and viewing of others. This level of control was also necessary to keep student responses isolated so that they would not influence each other.
- Modified search engine, which allows for quick searching with Google, so that users may easily find external Internet resources related to the learning activities.
- Restricted toolbox and toolbar, so that the "Print Version" tool is the only one available to students. Otherwise, they would have much broader access to the wiki, access which could compromise the results of the learning activities.
- Forced "new window" links for external websites. This allows students to explore external resources while staying on the website.
- Modified comments extension, which allows students to post feedback and their responses to the learning activities.
- Flash demo extension for playing FLV and SWF "screencast" files (see Concept 2 above).
- Interactive quiz and quiz results extension, which was superseded by the simpler and less-strict format of the comments extension.
Two additional tools were also integrated into the project, a tutorial on the Unix chmod command (which includes interactive command line simulators) and a chmod calculator (which calculates numeric values for Unix file permissions). Both of these tools were freely available on the Internet, but required slight modification to function correctly within the scope of this project.
I utilized Wikipedia heavily for this project, linking to it frequently to define computer-related terms within the learning module and activities. I also relied upon it for graphics, paying close attention to the licensing information of all content.
My development process focused upon these concerns:
- Simplicity of Appearance
- Platform consistency
- Clear Navigation
- Printable Content
- Web Standards
Overall, I feel the approach was successful. The simplification of this learning project allows users to focus on the content, without becoming sidetracked by plugins or visual overload.
The project runs upon the LAMP stack (Linux/Apache/MySQL/PHP), and it is fitting that I had to utilize a CLI often to install and configure the project.
The learning project was initially made available to a small sample of five university students, ages 20-26, with varying backgrounds. Of these five students, three responded fully to the learning activities.
These students were given access to the project at https://webio.me/cll and were asked to review the learning module before moving on to the activities. The learning module consisted of a broad overview of command line literacy and command line interfaces, including examples of modern CLIs in various operating systems. A series of brainstorming questions were posed to the students before moving on to information about more specific CLI usage. In this way, the value of command line literacy was explained to the students before they "got their hands dirty".
Before accessing the learning activities, students were exposed to two interactive tools that focused on a simple Unix command, chmod. This command provides an appropriate introduction to CLIs, since it introduces basic concepts about filesystems and allows for non-destructive interaction with files. These two tools consisted of a detailed tutorial on chmod/Unix file permissions, and a calculator of numeric chmod values.
These tools exposed the students to the instant, detailed feedback of the command line while also introducing them to multiple methods of manipulating files. Such CLI utilization can lead to creative, even playful, interaction with the software environment (albeit with more complex commands than chmod). This type of empowerment is in contrasts starkly with most GUI environments, where users are typically pigeon-holed into a few menu or icon choices.
After spending some time with the chmod tutorial, students moved on to the learning activities, which challenged them with questions based upon their exposure to the CLI tools. The learning activities consisted of three scenarios (Susan's Homework, Juan the Sysadmin, Seila's Spreadsheet), each with a consistent format.
Questions in each learning activity challenge students to:
- 1. Understand strengths and weaknesses of the CLI
- 2. Locate information from the tutorial and apply it to an example
- 3. Clearly communicate CLI concepts to others
- 4. Complete tasks with CLI tools
- 5. Search and locate Web resources with a search engine
- 6. Critically evaluate Web resources
Evaluation of the command line literacy learning project was built into its design. The last question of each of the three activities was always, "Please list any of the resources you may have used to answer the questions above." In addition to this, students that participated in the activities were asked to respond to separate feedback questions.
Initial reactions seem to be positive, although the sample size of students that have completed the learning activities is very small. Even so, the student feedback highlights a few concerns:
- 1. The amount of information contained in the chmod tutorial is perhaps too much, making retention of the information less likely.
- 2. There is a perception that CLIs are old-fashioned, and that GUI tools have replaced them completely. Even though the learning module attempts to counter this perception, it is very strong amongst the target audience (and anyone younger) who have never used a terminal or mainframe before.
- 3. The supplied resources are not being utilized to complete the learning activities. Since the activities focus upon the chmod tutorial and the text in the learning module, users seem unlikely to view the resources listed unless out of curiosity.