There’s no question that computational literacy is incredibly important today, and yet is less prevalent than it should be. Unfortunately, solutions to this today focus unevenly on all aspects of computational literacy — the “learn to code” camp being one of the biggest offenders. The main purpose of this site is highlight these other aspects of computational thinking, in the hopes of redirecting focus towards more effective efforts in supporting our population’s computational literacy.
First of all, what is computational literacy? The biggest computing education bodies in the US (CSTA, NICERC, NMS) met to decide a framework for computer science education and have categorized the main concepts and practices at https://k12cs.org/. Note that code is included only within practice #5 (and maybe #6, though that is less often taught).

“Learn to code” is only a narrow-minded solution if the goal is only to learn how to use a programming language, for example. However, using learning to code as a stepping stone towards a more holistic goal is perfectly reasonable for developing a computationally focused mind. Here is a particularly long-form discussion about learning to code, while stressing all the concerns professional programmers face apart from code: https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/#should-you-learn-to-code Note that much of these concerns are professional, and so may not be directly applicable to computational thinking in K-12 students. However it does well in explaining what code is, how code is a tool, and what the goal of learning to code should be (hint: it’s not to know how to code).

“Not a line of code is written throughout this process.”
(from the linked article by Paul Ford)
However, there are certainly resources other than code which support learning computational concepts. CS Unplugged https://csunplugged.org/, advertised as “Computer Science without a computer”, is one such example. It provides teaching materials and curricula for educators who support teaching computation through offline methods.

(clip from https://www.youtube.com/watch?v=30WcPnvfiKE)
Discouraging the focus on code is part of the goals of this blog: to redirect educational efforts towards problems blocking successful computer science education. Many of these blocking problems, related to integration of CS into the modern educational community, have been cleanly summarized here https://sites.google.com/site/highschoolcseducation/background/problems-in-cs-education.

(from the linked site, by Dani McAvoy)
One of the broader issues is current representation in computing education. Of note is gender. The gender gap in computing has been significantly widening since the 1980s. The classic comprehensive article describing this phenomenon can be found here: https://www.insidehighered.com/news/2018/06/25/lecturers-explanation-gender-gap-computer-science-it-reflect-womens-choices Lack of diverse representation may contribute to stereotypes about computer science that discourage minority learners from considering computer science as something to learn, which hurts computational literacy in general.

(from Digest of Education Statistics, also linked on the page)
There is also a mysterious lack of focus on the technical issues in teaching computing. Speaking personally from my experience as a learner, a lot of frustration came from figuring out things like not having a visualization of the code, or incomprehensible syntax errors. Talk to anyone who’s taken a coding class — this is not an uncommon thing to encounter when learning through programming tools like Java and C, the command line, and graphics libraries. These tools with which some schools teach computer science tend to be professionally used — meaning their use often requires some amount of unnecessary prerequisite domain knowledge or protocol, which may frustrate computer science newbies trying to learn what loops are. The reason I believe these commonly-used languages are inadequate for learning is because for people like me, a drag and drop interface is good enough for doing most tasks I would want to do that utilize computation. Many learners learn visually, and text is not a great visual medium for learning computing. Here is a great article that expands on how visual mediums of programming helps with reasoning: https://blog.statebox.org/why-visual-programming-doesnt-suck-2c1ece2a414e.

(from the linked article by Anton Livaja)
In addition, here is a (by no means complete) listing of successful visual programming environments that I am aware of:
- Scratch (also check out Snap)
- macOS Automator (also check out Alfred workflows)
- Unreal Engine blueprints
- Blender shaders
- LabVIEW block diagrams
- Node-RED
- PureData
- Luna (general-purpose)