When I started my personal project to learn to code almost five months ago, I wrote a blog post titled Why Coding? Why Now?, dated October 6, 2014. I listed out my main motivations for wanting to learn to code, and I want to revisit one of them today: To dissect what “pre-coding” is. I want to spend some time processing what I have learned about coding since this project began, and to pull out some thoughts about what types of skills, ways of thinking, and mindsets precede understanding computer programming. I want to use this blog to continue to explore these ideas, but first I want to look back to October 2014 and revisit my words surrounding this topic:
What is Pre-Coding? (Written in October, 2014)
In 2013, I attended a conference in Chicago entitled “Technology in the Early Years”, hosted by The Erikson Institute and Columbia College in Chicago. We got to visit an amazing school called the Catherine Cook School. This school really embraces utilizing technological tools to enhance children’s learning. A conversation with a preschool teacher at this school was a pivotal moment in motivating me to learn to code. The teacher explained why using a visually linear calendar with children (depicts months as a single line of days, rather than blocked into a rectangle of weeks) provided support for “pre-coding” skills.
This was really interesting to me, because I had heard of linear calendars, but never discussed in this way. Some prekindergarten classrooms at Boulder Journey School (The school at which I work) use them. For preschoolers who are just beginning to learn about time, it is often more logical to present days visually as a single line rather than in seven-day blocks. This does not mean you never get to the traditional blocked, stacked weeks calendar, but it is a more natural progression of learning. However, at this moment in 2013 I was simply amazed to hear someone make a connection between a single line of symbols and supporting a child’s ability to understand computer code later in life.
A slight diversion for those of you who don’t know: “pre-” is what preschool teachers do (and it’s REALLY important!) Preschool teachers do not deliver formal reading instruction. They incorporate pre-literacy skills into what they teach. For example, understanding that letters have sounds, groups of letters are words, words have meaning, words can be grouped together to make sentences, etc. Children need to know all kinds of things about reading before they actually learn to read, and that is one thing preschool is for. Research shows that if children do not have opportunities to learn all this stuff, it is much harder for them to learn to read and is likely to make school harder for the rest of their lives. Pre-math skills are just as important.
I started to wonder what other types of activities supported “pre-coding” thinking and skills, but I realized that I was not very qualified to figure this out. I know how to read and to speak English…so it is easy for me to break language and reading down into more simple components. I know how to do elementary school math…so that is also easy to break down too. I imagine that coding is somewhere in between language/literacy and math, but I also speculate that it is its own thing too! This is why I feel like I need to try to learn to code myself in addition to learning about coding.
Five Months Later: What Now?
So that is what I wrote five months ago, and I feel like I have learned a lot since then. I barely knew what I was talking about when referring to “coding” or “programming” five months ago. Now I feel now that I know a good deal about it…though still not necessarily how to do a lot of it (I am working on it!) I wouldn’t presume to say that I’ve drawn any definitive conclusions, but I think I know enough to start trying to write about coding in a way that might make sense to other educators. Thus, I am going to give this a shot over the next few months through a series of posts titled “Pre-coding parts 1-?”.
What Others Have to Say:
I wanted to begin by sharing a number of resources I have found since I began pondering pre-coding and learning to code:
- Google for Education defines “Computational Thinking” as “a set of problem-solving skills and techniques that software engineers use to write programs that underlie the computer applications you use such as search, email, and maps.”
- In the blog post titled “Computing skills as essential as math, reading and writing“, the authors discuss the many benefits of exposing children to the basic skills and concepts behind coding at a young age. “According to Wired Magazine, one computer scientist’s success in the early part of this century teaching code to children as young as eight years lead him to coding experiments with even younger children. J. Paul Gibson, then at the University of Ireland, now believes ‘you can start teaching computer science before students even know how to read and write’.
- Numerous articles discuss the benefits of pre-coding and computational thinking for children and adults:
- Viewpoint: Computational Thinking, by Jeannette M. Wing
- Computational Thinking: A Digital Age Skill for Everyone, by David Barr, John Harrison, and Leslie Conery
- Operational Definition of Computational Thinking, compiled by The International Society for Technology in Education (ISTE) and the Computer Science Teachers Association (CSTA)
- Several educational institutions have created focuses on computational thinking and pre-coding for adults, which can be helpful for teachers to understand the nature of this line of thinking:
What I Have to Say:
This body of knowledge and research is expanding, but has left me longing for a much deeper body of thought around the incorporation of pre-coding skills and computational thinking into early childhood curriculum and pedagogy. Many of the above resources cite the general importance of such efforts, but offer little in the way of actual strategies and anecdotes about what (if anything) is happening in real schools. Further, most of the strategies and anecdotes offered focus on Kindergarten and up. I have come to believe that very young children are natural problem-solvers. They are natural scientists, artists, and innovators. Thus, while I do believe K-12 is important, I think there are possibilities for even younger children to draw on these natural inclinations through pre-coding.
I also think there is a general misunderstanding that anything involving coding has to include “screen time” and devices, but the idea of computational thinking and pre-coding really transcends this narrow view. Much that same way that many literacy concepts can be learned without books, and pre-mathematical concepts can be learned without numbers, I believe we need to be investigating the ways in which pre-coding concepts can be learned without devices or screens.
Finally, I also wonder how young children naturally think computationally, and how teachers can support and nurture those natural interests and inclinations. The goal need not necessarily be to “teach” young children to code, but rather to support the types of thinking that will serve as a meaningful foundation for many areas they will continue to explore throughout their education and life. How can more savvy teachers make more connections between children’s natural inclinations to innovate and opportunities to support their brain development by offering tools, strategies, and materials that will support their knowledge of coding (or pre-coding)?
One of the best resources I have found that rationalizes the logic behind teaching programming concepts to young children comes from Wired.com. “Forget Foreign Languages and Music. Teach Our Kids to Code”, by Brendan I. Koerner, points out “what all [initiatives that have developed tools aimed at teaching children to code] have in common is an emphasis not on memorizing how to use specific tools but on developing familiarity with the general concepts that underpin all programming—sequencing, conditionals, debugging.”
In subsequent posts in this series, I will explore some possibilities for developing those familiarities, drawing on my experience as a teacher of young children and adults, as well as my discoveries through my own journey with learning to code. I also realize that I am not even close to having all the answers. This project is indeed a journey with no final outcomes decided just yet. Thus, in addition to my own ideas, I will continue to share resources on others’ thinking as I discover them.
What Do You Have to Say?
I am also interested in your thoughts! Please leave me a comment if you have knowledge, expertise, or opinions about any of the following:
Are you an educator or parent? How do you incorporate pre-coding in to your work with children?
Are you a programmer? What do you think is essential to understanding how to code? (Not necessarily the specifics of languages, but rather the types of thinking you have to engage in while coding)
Have you discovered good resources about pre-coding and/or computational thinking you could share?
Thanks for reading, and stay tuned for more posts in this series!
One thought on “Pre-Coding Part 1: A Quick Look Backward, or “What the Heck is Pre-Coding?””
Here goes !
The first thing to be done when creating a computer system to do a particular job is to specify in general terms what that job is.
Then to specify exactly what are the inputs and what are the outputs, ensuring that the inputs are possible and that the outputs satisfy the desired purpose of the system
Then to make some decisions about the way the input information is to be organised
Then to determine what actions the system needs to perform in order to achieve the desired outputs.
Then to design the details of each action, and how it presents its outputs to other actions.
Eventually one is in a position to start coding with a computer language or a higher level system creation package.
So any activity above the dots is pre-coding
For beginners you do not want to be anywhere near a computer. The essence is in structuring your problem as a sequence of actions, with some control actions for keeping track of progress.
A simple example is converting a pile of ingredients into a dinner or a cake.
Another is constructing a set of directions on how to get from place A to place B
Another is to create a set of instructions for drawing a square, or something similar.
The computer part can be done by the recipient of the instructions, ideally delivered one at a time via a telephone or in writing on scraps of paper.
If the students can be persuaded that the recipient of the instructions is really stupid, that is to say a robot, then they will get a very good idea about computers.
Did you ever look up “pseudocode” ?
Flow charts are out of fashion, but a good way of organising the details.