With one Hour of Code experience under my belt, I invited two more friends to code with me. I had explored only minimally in preparation for my previous experience, and was able to follow and support a fairly open-ended exploration by 10 year old Z. I was feeling much more brave before this second time, and was interested what it would be like to work with two children at the same time.
I invited two siblings, L and Q, to code with me. They both attend a public neighborhood school near their house in the Denver Metro Area. Their school employs a fairly traditional approach to education, incorporating computers and other technology as learning tools, balanced with common methods of teaching al subject matter. Here’s a little bit more about them as individuals:
L is a ten year boy in fourth grade:
He lists his favorite subjects as P.E. and reading.
He is caring, thoughtful, and has been known to win awards at school for character and citizenship.
He is active and loves football.
He loves the rain and Seattle, aspiring to live there when he grows up.
He has a great sense of style, from mohawks to hipster glasses.
Q is an eight year old girl in second grade:
She lists her favorite subjects as reading, math, and art.
She loves all things creative, and is an avid crafter.
Has a natural and powerful connection with animals. She is a loving caretaker to many furry creatures at her home.
Is naturally social and enjoys getting to know all kinds of different people.
Her last two Halloween costumes were “Cleopatra” and “movie star”…with the big personality to pull them off.
I sat at a Thanksgiving dinner table about a week and a half ago with a group of friends. We were enjoying our feast and chatting about this and that. Since most of us at the table were either teachers, spouses of teachers, or children…you can imagine how our conversation kept drifting back to issues in education. I started telling one friend about my goal of learning to code, and she asked a simple question:
“What IS coding anyway?”
This question provoked a little nervous tingle, as I realized this was the first time I had been asked to explain something about coding to another teacher. I had to stop, rewind my brain to just over two months ago when I started to explore this very question, and try to conceive an answer that would make sense to someone with the same background and lack of technical expertise as myself. My response was something like this:
“Coding is very basically giving your computer a set of instructions that you write in a programming language. The computer then responds by doing what you told it to do.”
I was relieved when this came out of my mouth and I realized that it largely made sense. This conversation also made me realize that could be important to spend some more time considering what that coding really is, and ponder some ways to synthesize and explain it to people who might not have any background, or might never have had any interest before.
When I was first learning to code, I would Google things like “programming for beginners”, “what is coding?” and “learning to code”. My search efforts would return tons of great resources for people who already know a little bit about computers, and are not completely intimidated by words like “algorithm”. Many of the search results assume you know what a “console” is, are already comfortable with words like “variables” and “data types”, or what a “platform” is. If you don’t already know these things, do not worry about them! I think there is a level of beginner explanation that is just plain difficult to find. Just to be clear, I recognize that there are tons of great beginner resources out there…I just found myself wishing for an even more novice level of basic description. With this in mind, I’m going to attempt to offer my own supplement, and explain programming in a way that makes sense to me and might appeal to a broad array of non-programmers.
This seems like a particularly relevant thing to do now, since this isComputer Science Education Week (Dec. 8 – 14). All this week, millions of children around the world will participate in “An Hour of Code“. This is a challenge to teachers, administrators, community members, and families to offer children “a one-hour introduction to computer science, designed to demystify code and show that anybody can learn the basics.”Code.orgis organizing and promoting this challenge, and they offer tons of great resources on their website.
Note: Although some argue that there are differences, I use “coding” and “programming” interchangeably throughout this post in reference to “the act of writing computer programs”.
Keep reading if:
You have ever wondered about coding/programming
You have never wondered about coding/programming (because it is never too late to start!)
You have tried to look up coding and programming before, and didn’t gain a whole lot of understanding
You do not consider yourself very tech-savvy or computer literate
You are curious about how someone who meets the above criteria might explain programming
You are curious what children are actually learning from beginner tutorials
As the 2014 Hour of Code challenge offered by Code.org draws near (Dec. 8-12), I wanted to spend a little time with the history of what has gotten us to the place we are in today. To many educators, the ideas of edtech and coding in schools still seems far off and mysterious. However, the innovators who embrace these ideas are incorporating them into learning experiences and seeing children become inspired and motivated by code.
From 1980 to 2003, technology moved forward, but what moved backward? Examined through the lens of two thinkers: Seymour Papert and Why the Lucky Stiff
Why the Lucky Stiff (_why) was “a prolific writer, cartoonist, artist, and computer programmer notable for his work with the Ruby programming language” (Wikipedia). Seymour Papert was a mathematician and professor at MIT. He was one of the creators of the Logo programming language (remember the turtle?) and author of the 1980 book Mindstorms: Children, Computers, and Powerful Ideas (and others).
Papert and _why are indeed very different types of thinkers. Papert was a scholar, rooted in academia and with time logged collaborating with constructivist learning theorist Jean Piaget. _why was a self-proclaimed “freelance professor”, who created art, code, and everything in between as tools for social provocation and advocacy. I refer to them both in the past tense because while both are still alive, neither are actively engaged in the contemporary public conversation. Their work and legacies are what live on and serve as inspiration.
In 2003, _why wrote an essay titled: The Little Coder’s Predicament, specifically calling to task all the companies who have systematically been adding layers of features, regulation and security to their technology. These anti-piracy measures had resulted in a societal distancing from the understanding of code, and a lack of ability to access actual code.
…I’m thinking a toy language for consoles and desktops alike could be monumental…
…You’ve got to be able to write a single line of code and see a result. We need some instant results to give absolute beginners confidence…
…Tinkering with hardware is learning. Lobotomizing and renovating is meaningful, magical. On behalf of those who prefer to code, I make these wishes. Not to take away jobs from the Phillips screwdriver…. (2003 essay)
In my post on the Logo, I share that Papert advocated for his dream of children being able to program. He called for easy and accessible tools almost 20 years before _why’s plea. In his essay, _why reminisced about the era of being able to program directly from your Commodore 64, or Atari 800 (which was the very same era that Papert was working on Logo with his MIT team). So what happened between Papert’s call for accessibility in 1980 and _why’s call for accessibility in 2003?
Advancement. Piracy. Fear.
Innovation has driven a more user-friendly experience. However, the more user-friendly the experience, the deeper the code becomes buried. Companies are creating better and better tools, and protecting them more and more fiercely. The more protections, the harder the code is to access. Everything in technology has gotten faster, better, closer, more useable, more understandable…except the code. In the 2003 environment in which _why wrote his article, there were many barriers to children getting involved in coding because it was so hard to get to the code and be able to play with it.
These are my original goals identified two months ago when I started this project:
Goal #1: Learn to code
Goal #2: Write a blog about my learning in order to process my thinking, share with other people, and gain insights from readers.
I have learned a great deal since I started working toward these goals almost 2 months ago, but have recently identified an unexpected outcome: I’ve begun to consume and process my technological experiences differently. (Clarification: This outcome was unexpected to me…not necessarily anyone else!) Continue reading →
Hello. My name is Lauren and I’m an over-thinker…I’ve been learning to program for 29 days.
I commented this week that it seems like the Ruby tutorials I’ve been working through are getting harder and it’s taking me longer to figure out write the code that’s prompted. I have recently realized that half of the time I’m completely overthinking, which just makes me laugh at myself.
For example, I spent 25 minutes trying to solve one particular prompt, trying all angles of writing the code only to result in error message after error message. I stuck with it, miserable yet determined, and eventually realized that I had simply read the prompt wrong. The prompt was to add some code before the print command, and I was adding the code after. It turned out that I had correctly written the code the first time. Rather than going back and re-reading the instructions, I just spiraled down the rabbit hole…my code getting more and more complex with each try.
This is not the first time something like this has happened. I’ve noticed that the fewer angles I examine, the faster I’m able to complete the prompts. This is interesting to me, because it does not feel natural at all! Continue reading →
I love Halloween! The whole spirit of the day is so refreshing and whimsical. Everyone has fun, and there are few family or religious obligations attached. (…obligations that can make other holidays more stressful!) Plus, if you happen to be a Halloween grinch, all you have to do is make sure your porch light is off, and Viola! You have the perfect excuse to curl up in your basement with a good book or a movie and ignore the world for a night. Halloween is a win-win.
One of my favorite parts about the holiday is that it gives all of us over-worked, over-tired, over-stressed, and entirely-too-serious adults an excuse to just take a breath and to think like children for a day. We can delight in the excitement of the little ghosts and goblins (and Elsa’s and Spidermen) that haunt our streets for just one night every year We all get to have fun, forget our troubles, and pretend we are someone else. We can adopt a sense of wonder and just PLAY! Continue reading →
Codecademy environment, Ruby Tutorial…Left is instructions, center is where you type the code, and right is where you see the program run.
As I’ve been making my way through tutorials, something was starting to bother me. Tutorials let you practice in nice little environments that provide three fields: One for the tutorial’s instructions, a second for you to write code, and a third to show the results of your programs.
The problem is…This all happens on a webpage, and I couldn’t figure out how that translates to writing actual code and having it do something on my real computer. If I don’t know this, I would bet that others as green as me don’t really know either. Thus, I decided to figure it out (with help of course), and spell it out in this post. Maybe this will be helpful to other novices out there, and I know it will be helpful to me in the future if I need a reminder.
I asked my most trusted advisor, the husband, how to program something for real, and he explained the steps you need to go through. The “Hello, world!” program seems to be an initiation ritual of sorts, so I decided to use my little “programming for real” lesson to make my computer say “Hello, world!”
From “Why’s Poignant Guide to Ruby”. Click the image to see the book!
Ruby has quickly become my language of choice. There’s something about it that just draws me. It might be because I’ve started reading “Why’s Poignant Guide to Ruby”, and he agrees it’s important to submit to something that draws you.
Not familiar? Here’s a passage:
“This world’s too big for such a a little language, I thought. Poor little thing doesn’t stand a chance. Doesn’t have legs to stand on. Doesn’t have arms to swim.”
…”So, now you’re wondering why I changed my mind about Ruby. The quick answer is: we clicked.
Like when you meet Somebody in college and they look like somebody who used to hit you in the face with paintbrushes when you were a kid. And so, impulsively, you conclude that this new Somebody is likely a non-friend. You wince at their hair. You hang up phones loudly during crucial moments in their anecdotes. You use your pogo stick right there where they are trying to walk!
I’ve been at my self-challenge of learning to code for a few weeks now. I figured it was time for some self-reflection on what I’ve actually been doing, because I’ve been doing a lot of different things including online tutorials, human interaction, reading, and self-reflection. Part of me feels really good about what I’ve been doing, and part of me feels concerned that I’ve going about this in the wrong way. Is this how it always feels when you decide to learn something completely foreign and hard?
So far, I’ve played with lots of different strategies for learning. I really like bulleted lists, so I’m just going to make a whole bunch that detail my attempts at learning to code:
I signed up for Code Academy about a week ago to access tutorials for JavaScript and Ruby, and I like how they email me little messages every once in a while. The funny thing is, I’m not usually a fan of this. I can’t stand arbitrary marketing emails, and with the November election coming up, my political affiliations are trying my patience! Anyway, I actually enjoy the little messages from Zach Simms, CEO of Codecademy.
I have been questioning which language to focus my novice coding energy on, and have concluded that I need to figure out a couple things:
Which language feels easiest to me
Which will help me do the things I want to do
Yesterday, I decided my mission is to figure out something I want to do in order to address the second question. Well, it’s like Zach psychically picked up on my thoughts, (and I know that’s what internet marketers everywhere want me to think), because I awoke to find a very helpful little message in my inbox this morning, and thought I would share!
Via Zach Simms, CEO of Code Academy:
People often ask me what programming language they should learn, and I always say the same thing: “It depends.”
Want to be more web savvy, or build a website? — start with Web Fundamentals. This covers all the basic HTML and CSS you’ll need to know to understand the web.
Want to make a game or app? — give JavaScript a try. This dynamic language will let you create interactive apps that you can use on a smartphone.
Want to process data or explore databases? – Ruby or Python are your best bet.
Psychic energy or internet marketing? Does it really matter?