Computer Literacy and Computational Thinking

Computer Literacy and Computational Thinking

8th Aug 2020
Reading Time: 7 minutes
Technology, Philosophy

What does it mean to be "computer literate"?

It's okay if you don't know the answer to this. Even the person who supposedly invented the phrase didn't know:

"We started computer literacy in '72 [...] We coined that phrase. It's sort of ironic. Nobody knows what computer literacy is. Nobody can define it. And the reason we selected [it] was because nobody could define it, and [...] it was a broad enough term that you could get all of these programs together under one roof".

Since then, numerous studies and authors have attempted to define "computer literacy" or "digital literacy" in very different ways. We have yet to coin a pithy neologism for this concept, something analogous to illiterate for being unable to read and write, or innumerate for being unable to do math. Various appalling portmanteaus have been suggested, like computerate and digiliterate, but thankfully none of them have caught on yet.

A 2019 Pew Research Center survey called "Americans and Digital Knowledge" asked 4,272 American adults a series of 10 questions intended to measure their general knowledge on "digital topics", including whether WhatsApp and Instagram are both owned by Facebook, and whether they could identify a picture of Jack Dorsey, the outspoken co-founder of Twitter.

This is Jack Dorsey, in case it ever comes up.

Studies like this are often cited in the press, usually to illustrate how terribly ignorant we supposedly are about computers. To be fair, some of the questions in the Pew survey were more relevant to actual computer use, like understanding what multi-factor authentication is or what it means when a website has "https://" at the beginning of its URL. But these questions are still focused on the daily navigation of a computerized world; the street smarts of cyberspace. They don't actually address what I think is the real divide between digerati and, uh... non-digerati. (Seriously, wordsmiths. Get on this.)

The International Computer and Information Literacy Study (ICILS) is an assessment of 8th graders' familiarity with computer basics. It now consists of two parts: Computer and Information Literacy (CIL), which they define as "the use of computers as information-seeking, management, and communication tools", and Computational Thinking:

Computational Thinking (CT), new in ICILS 2018, is defined as "an individual’s ability to recognize aspects of real-world problems which are appropriate for computational formulation and to evaluate and develop algorithmic solutions to those problems so that the solutions could be operationalized with a computer"

This "Computational Thinking" is the real leap in understanding that we as a society need to wrap our minds around, even more so than the day-to-day challenges of navigating web applications. Yes, it's important for people to recognize phishing scams, understand how cookies can be used to track your online activity, and how social media platforms make their money. But what's even more important is to understand why computers are ushering in an unprecedented revolution in our way of life - an Automation Revolution that will dramatically reshape our economies and our daily lives.

The digital divide is closing; in a few decades everyone in the world will have access to smart phones, computers, and the Internet. The real divide won't be between the haves and the have-nots, but between those who are merely users of computers and those who know how to actually use them. Being able to mash your way though candy-colored touchscreen icons won't get you a job in the future. Designing accessible, abstracted, and intuitive user interfaces will.

Most of our daily experience with digital devices adds "convenience" to our lives by offering us a very limited and specific set of features - the ones that make their creators money. But computers can be programmed to solve any problem, as long as it can be expressed as math. The real potential of microprocessors is the automation of tedious, repetitive tasks.

Computers have the potential to free humanity from intellectual drudgery, and we're living in the infancy of an automated age we can only begin to imagine. Making machines do things that are or will be boring for humans to do is how programmers contribute every day to building a better world.

Understanding Automation

Learning how to instruct your computer to automate something for you will turn any mundane task into a fun logic puzzle. For example, a few years ago I was reviewing a screenplay for a friend and decided I wanted to do a scene-by-scene breakdown. I decided I'd like to have a spreadsheet, with each scene heading on its own row and numbered, so I could take notes on each scene.

Now, I could've just gone through the screenplay and copy-pasted each scene heading into the spreadsheet, one by one. But, that's a lot less fun than spending a few minutes figuring out how to automate that task instead. Fortunately, screenplays have a very standardized format for scene headings; they all look like EXT. SOMEPLACE - DAY, where the first three characters are always INT. or EXT. for Interior/Exterior. The rest describes the location, time of day, and so forth.

So, rather than spending an hour tediously copying text from one program to another, I spent a few minutes coming up with this little script:

grep -E '(^INT|^EXT)' Script.txt | nl | sed -E -e 's/([0-9]+)./\1,/' -e 's/(INT|EXT).{0,2}/\1,/' > SceneList.csv

This goes through the screenplay text, looking for all the lines that begin with INT. or EXT., numbers them, and then formats the whole line into a nice comma-seperated values (CSV) format which looks like this:

1,EXT,ALAMOSA - 6TH STREET - CONTINUOUS
2,EXT,SAN LUIS VALLEY - SUNRISE
3,EXT,HIGHWAY 160 - FARM COUNRTY - MORNING
4,EXT,FARMHOUSE - DRIVEWAY - CONTINUOUS

Once it's formatted this way, the last part of the command saves it all to a file named SceneList.csv. You can easily open CSV files like this in Excel (or LibreOffice Calc) as a nice neat spreadsheet. Now I had what I had originally wanted to organize my script breakdown:

What the CSV output looked like in Excel

Of course, depending on the complexity of the task I have in mind and my own starting knowledge, it might take me longer to figure out a command like that than it would to just do the job the hard way. But, I find that this way is more fun. Plus, if I ever need to do something like this again, I can re-use it. This command only takes a tenth of a second to run, so every time I use it instead of spending an hour copying and pasting manually, I've saved myself an entire hour. This is exactly what makes automation so powerful - you only have to solve a problem once.

Now, you may be looking at that pretty gnarly command I wrote and thinking that you'll never comprehend such dark wizardry. But I have good news for you. That command didn't spring fully-formed into my mind. Quite the contrary - all I really knew when I started was that 1) the task was tedious, repetitive, and rules-based; and 2) it is possible to use computers to automate such things. That's it!

Search engines and documentation are a programmer's best friend. Most highly experienced programmers will tell you that their primary skill is just being good at Googling for answers. Chances are, a simple problem you're trying to solve has already been solved by somebody, and all you have to do is find what they did and fiddle with it to make it work.

Really, this is all digital literacy really means—recognizing that computers could make a boring job easier, and having the confidence to figure out how to instruct them to do it for you!


Resources for Getting Started

The default command line utility in all Unix/Linux based operating systems (including Mac OS X) is BASH - the Bourne Again SHell. When you open a Terminal window on your Macbook, this is what you're working in. BASH is actually a programming language specially crafted for interacting with files and other common user tasks. The command-line interpreter (or "shell") that you see in the Terminal window lets you enter BASH commands. You can also type a list of commands into a file and save it as a "shell script" which you can then run like a program whenever you want!

If your eyes haven't glazed over and rolled back into your head yet, here's an introductory reading list and topics.

If you're on Mac or on Linux/Unix, just figure out how to open a command-line terminal and dive in. If you're on Windows, check out Windows Subsystem for Linux and/or Cygwin.  

Learning The Shell - this is a very simple and friendly introduction to using the BASH command line. Follow the guide and play around with the commands to get a feel for them.

SS64 is a command-line reference that lists most of the built-in and common commands for BASH as well as other command-line systems. For example, the first word in my command is grep, which can Search file(s) for lines that match a given pattern.

Explainshell.com is a great online tool for breaking down the contents of a BASH command. If you want a complete breakdown of the command I wrote (or any other), just copy and paste it in there!

The TechVomit BASH CheatSheet is a great resource for finding some handy commands.

Once you start getting comfortable playing around in BASH, the next step would be to start learning a more complete programming language. I like Python. There's a fantastic tutorial for it here. To get started with Python, you'll need to install it on your computer. You can download it and learn more about the language on the Python homepage.


© 2020 Craig A. Butler
First Posted: 8th Aug 2020
Last Updated: 23rd Nov 2020