Anyone know how to get this to Miley Cyrus?
Anyone know how to get this to Miley Cyrus?
Google had just launched a program to turn the Raspberry Pi into a mini web server. Download this code onto an SD card and the Pi becomes an educational tool to teach kids the basics of app coding.
About a month ago, The New York Times declared 2012 the year of the MOOC. That’s Massive Open Online Course, in case you haven’t come across the term yet.
Given how much time I spent enrolled in MOOCs this year, I kind of knew this already. But for those now dipping their toes into this phenomenon, here are the top 5 things I learned this year.
1. MOOCs are addictive. Like seriously addictive. You think the internet is distracting now. Wait until you’re juggling the demands of the five fascinating Ivy League courses you signed up with through Coursera. I’m kidding, but not entirely. Somewhere around July I found myself wrestling between my Code Year resolution with Codecademy and my determination to complete the Studio Track of Stanford’s Human Computer Interaction course. What began as a five week project soon stretched into something closer to eight weeks as Stanford realized how unprepared most people were for the work involved in field researching, building, testing and peer reviewing a web app. I did it. But by September I was burnt out. Had I not dropped out of Machine Learning after half a video and made a firm decision to bear down, I never would have grocked Python (or learned the word “grock”). So if MOOCs are something that might interest you in 2013, make a resolution now not to become a MOOC slut.
2. MOOCs are an awesome way to meet people in your home town. This is especially true if you live in a tech oriented city. If there isn’t already a meet up somewhere in your town in the subject you’ve become interested in you can probably start one. Or you can start meetups specifically around the course you happen to have enrolled in. Those meet ups will no doubt lead to other meetups. After organizing the first Code Year meet up in Montreal, I met and introduced people who went on to put on the first Montreal Maker Faire. The interests I cultivated through that venture led me to WordCamp Montreal, Semantic Web meet ups, MTL Girl Geeks, MTL Girl Hackers, to mention only a few groups I discovered over the year. Problem was I was so over enrolled in MOOCs, I often couldn’t go to all the things I wanted to.
3. MOOCS are like running. They’re free. They require little expense or equipment. They’re outside the usual parameters of civilized life. You make your own challenges. You feel your strength, endurance, and confidence build. You’ll want to quit right before you reach the finish line/personal goal/personal best. But if you bear down, you’ll learn the effort is really worth it.
4. MOOCS are like a treadmill. They can be a great stepping stone to real life learning. If you’re shy of university life for whatever reason, or you want to try out a subject first to see if it’s for you, MOOCs are great. But at a certain point you need to find an entry point into the complexities of real life learning. That might be a meet up, a project independent of what you’re learning in the MOOC, or, in the end, a classroom course in that subject. If MOOCs are your only source of learning you’re going to get bored.
5. MOOCs are especially great for women. At one point this year, I came across a popular tech ed blog, where it was speculated that the gender ratio of MOOCS were probably not much different from those in regular Computer Science courses. i.e dismally biased towards men. I’m not convinced that’s true. Almost all the people who showed up to my Montreal Code Year meet ups were women. My experience of peer review in the Coursera HCI course is that there were many women in the course. And, while I don’t know the numbers, I feel safe speculating that MOOCs will be a significant factor in restoring gender balance to computer science. (Yes I did use the word RESTORE.)
MOOCS in my experience are a great gateway to equity. This isn’t to say that societies should abandon a commitment to traditional learning. We’re all going to have to be careful to make sure that MOOCs enable low cost high quality learning, not undermine it.
But I’m from Montreal. Here we march in the streets and bang kitchenware to keep university tuition fees low. As a result one out of two Montreal university graduates are first generation (i.e. the first person in their family to go beyond highschool), by far the highest ratio in North America.
The MOOC can be an excellent learning path, and can do much to fill the equity gap, but it will never be a substitute for a deep social commitment to affordable higher learning.
Posted in Codecademy, economics, Education, technology
Tagged Computer Education, education, MOOCS, technology
So six months ago Ben and I signed up for Code Year, with Michael Bloomberg and about 400,000 people. We didn’t even really know what coding was. Codecademy was just five month old puppy of a Start-up.
And look at us now. Here’s Codecademy announcing $10 million in their second round of venture funding (a big chunk of that from Richard Branson). But notice who’s mentioned in the list of accomplished students. Yes that’s us, Juliet Waters and her son Ben.
I haven’t been blogging as much lately because I’m deep into Human Computer Interaction, a free five week online course given by Stanford through Coursera, another high quality free education startup. There I’m designing my first web/app and getting rigorously vetted by my online peers. But I’m still keeping up with my Code Year. More than ever, I’m going to need all that JavaScript to get it functional.
If that weren’t keeping me busy enough, last night I went to a first meeting of organizers of Montreal’s inaugural Mini Maker Faire, which will be at the Olympic Stadium August 25-26.
One day soon, I will come up for air and do a nice long blog post.
In the meantime here’s MythBuster’s Adam Savage talking about the importance of taking risks….
Posted in Codecademy, Education, programming, technology
Tagged computer, human computer interaction, juliet waters, technology
It will soon be six months since I started my Code Year pledge with codecademy.com. I’m still going strong. I’ve even started beta testing a few courses ahead of time. But this doesn’t mean that learning to program has been easy.
All my new learning is at the fresh cement stage. If I don’t take stock while I can still see the rocky road behind me, I become useless to the people still on it. So, I’ve decided this would be a good time to write about one of my biggest stumbling blocks coming out of the gate.
It was that damn = sign, and the subtle, but really important ways that this sign is different in imperative programming than it is in arithmetic and algebra.
For those of us who never continued with math beyond high school, = has a pretty rigid meaning. It means “the same as”. Things on each side of it evaluate as the same. Sure, we understand that the value of a variable can change. If x = y + 1 in one algebra exercise, we accept x = 2y + 1 in the next one. But essentially, what isn’t supposed to change is that both things on each side of that symbol have the same value.
In JavaScript, however, = means something more like “attached to”. Or “associated with” or “same type” or “contains all of these things” or is the same as “for a limited time only!”, depending on the context in which it is being used.
Much of coding is building quickie archives of associations, archives that can just as quickly be dismantled. So programming needs an equal sign to have a much broader, less sticky meaning than it does in math. In math the equal sign is like glue. In programming it’s more like a post-it note.
For instance x = 0 used in a programming algorithm usually does not really mean x is equal to 0. It’s a way of saying that x is a number and it will be starting at 0. So if we put x in a standard programming loop like (x = 0; x < 10; x++) it means that x’s value is going to increase in numerical value by one, each of the 10 times we run that loop.
If we write x = ” ” then what we’re saying is that x is a string, i.e. some kind of phrase, which usually means x will be used as a container for whatever words or sentences we want to plug into x.
If we want to make x stand for a particular series of actions, we turn it into a function by writing x = function (). That series of actions will be repeated every time we write x().
X can also be an array, a list of things, as in x = [1, train, $, 104, poodle].
In programming if you want to convey that something is actually equal in the way normal people understand equal, you add an extra =, or just to be safe two extra equal signs, x === y. This gives x what is called a “Boolean” value, i.e. the variable either is or isn’t exactly this thing. For example:
if (x === 3) {do this thing};
in this case x has to be 3 for the action in between the curly brackets to be executed.
if (x !==3){do this thing};
means do this thing only if x isn’t 3.
Write: if (x=3) {do this thing}, and the computer will spaz out because your definition of x is too vague, so it doesn’t know what to do.
****
If you learn to program with a bright sixth grader, as I did, you may find that they grasp this floaty = concept much faster than you do.
Sixth graders don’t have to unlearn the = sign because they’ve just started learning algebra. Their brain has just freshly opened to the fact that an equal sign can be used in more interesting ways than previously known.
If your sixth grader is anything like my sixth grader, he or she may very well kick your ass in the first twenty hours of programming, as you stumble again and again over whether that variable is the “same as “ or “sort of like” something, and hurt your brain further, trying to figure out why it’s attached to that meaning in one place of the algorithm, but not in another place.
Even when I understood the difference theoretically, my brain kept reading the sign badly again and again. It was like that Stroop Test, where someone shows you the word BLUE written in green ink. When they ask you the color of the ink, you keep saying blue because your brain prioritizes the language definition over the visual. My brain was clamped on equal being equal, even when I knew it wasn’t.
“But wait!”, you and an unfortunate number of other educators might say. “If we expose children too early to the more complex and nuanced programming concept of = won’t they get all confused when they learn algebra? Don’t they need a period of time when the = sign has a more limited scope?”
You may even develop this idea further. “What if after being exposed to all this = sign confusion, some children end up learning algebra [cue music to soundtrack from Psycho] at a slower rate. What horrible things will this do to their self esteem? Maybe they’ll give up and refuse to learn algebra all together, in total frustration!”
This is the argument used by those who think only really, demonstrably super smart kids should be exposed to programming in middle school. Ideally in expensive summer coding camps reserved just for them. And this is probably the argument that will solidify the growing gap between the technologically literate, and the now merely language literate, for much longer than it should exist.
It’s also the argument that will keep girls from mastering code as a matter of course, since they don’t tend to sign up for summer coding camp as frequently as boys, and by the time the girls are given the option of learning programming, they’ve developed a misconception about computer science as something only of interest to social isolates (var nerdyGeek = “social isolate”).
This is the same reasoning people use when they bring up studies that show children raised in bilingual environments exhibit a significant language delay. (Trilingual environments, they argue are even worse!)
I can only argue against this from anecdotal experience. But I will argue against it, passionately.
I’m a Montrealer, so my son, Ben, learned English at home, but went to daycare in our French speaking neighborhood. To make matters “worse”, I had joint custody with his father, who was born in Israel and spoke to him in Hebrew.
Indeed, this created a significant language delay, to the point where, when he was two, we had his hearing tested just to be sure.
But there was no hearing problem. And not only was there no hearing problem, by the time Ben hit kindergarten he was reading fluently in both French and English, counting to a 1,000 and already starting to grasp a little multiplication. Because by then, his brain was a language learning machine.
Ben’s not a genius (he’s been WISC tested. Apparently he’s at the high end of average). He’s just a smart kid whose brain now codes information a little faster than normal kids because he spent his early years in an information rich environment where there was a lot more meaning to sort out.
If your child maintains a coding practice, even if it does cause a little confusion at first, it’s a good guess he or she will not be falling behind on the math curve for long. In fact, before you know it they will probably be three times as equal as the other kids.
Or if you want to contemplate a really scary scenario [Psycho refrain] they will probably become three times as equal as you.
Posted in Codecademy, Education, programming, technology
Tagged children, education, programming, technology
Last week I discovered a wonderful blog by programmer Jeremy Kubica. Computational Fairy Tales teaches computer science concept though ingenious charming fairy tales. My favourite is Hunting Dragons Through Binary Search, but Kubica is extremely prolific and seems to have tale for everything from recursion to parallel algorithms.
He’s not alone. Today Wired Enterprise published a feature on Carlos Bueno a engineer who works for Facebook, but has just written a children’s book, Lauren Ipsum, aimed at kids as young as 5 and as old as 12. The article puts the book in the context of programming education initiatives like Scratch and Codecademy. As Bueno explains, hands on coding is only part of the process. Metaphors are a key part of teaching computer science. They are the original code. “Stories are distilled knowledge taught through the ages,” he says.
This is good news for families learning to code.
The Dragon Eggs of digital literacy hatching!
Earlier this year, this post was included in Should You Learn To Code, a collection of posts put together by Hyperink Press.
Thanks to Jeff Atwood’s provocative column Please Don’t Learn To Code, the debate about whether or not the average person should learn to code rages on. The Wall Street Journal weighed in yesterday with this Atwood quote:
To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can’t see it.
I’m not a crack Java coder, or anywhere close. But even after five months of programming lessons I feel that I can confidently come up with at least three ways that Michael Bloomberg would become a better mayor without even becoming a crack coder. In fact, he could remain a crap coder, and probably still come out of the experience as a better mayor.
1. He might learn just enough about programming to start considering all the different kinds of operating systems there are now. Maybe he starts having daydreams about switching to Linux, and starts thinking about all the ways a thriving metropolis like NYC might save money from switching from Windows to Ubuntu. Probably he doesn’t, but he instructs a few minions to at least start researching more open source software that the city could use. Every once in a while he starts nagging his education department to see how they could improve school budgets and efficiency by using open source where appropriate.
2. He finds himself walking into a meeting and without realizing it, thinking about problems in a totally different way. Instead of spending hours debating all kinds of solutions he asks himself and the people around him: “what is the smallest, most significant, repeatable action we could take right now to solve this problem?” A few months of coding has nudged his brain in a different direction and before he knows it, he’s cutting through hours of wasted time with more creative and efficient solutions.
3. He’s still having those switching to ubuntu fantasies. Oh, he’s too old. But what the hey, he decides to send every child in NYC a RaspberryPi, the $25 dollar, credit-card sized, Linux computer that has just started shipping out of London. Instead of wasting hours playing video games some of these kids learn how to make their own damn games. One day a critical mass of those kids grows up to become crack coders and change the world in ways we can hardly imagine.
So there Jeff Atwood. You asked, I’ve explained it to you.
Now can everyone just get back to their codecademy lessons in peace!
Posted in Codecademy, Education, programming
Tagged codecademy, coding, Jeff Atwood, technology
Six Reasons a Non-Computer Nerd Might Want to Learn to Code – Technology – The Atlantic Wire.
This is something of an analysis of the “everyone should learn to code” meme. Except that it explores only the reasons why people might want to learn to code, which is not exactly the same as why they should learn.
Don’t get me wrong, I’m not trying to take the fun out of coding by turning into a moral imperative. And the last thing any parent should do is turn this into educational equivalent of vegetables.
But if we’re going to list the real advantages, and get into arguments with elite programmers who keep telling us that newbies are wasting their time, we need something deeper than “it’s useful.”
If you’re a software engineer whose primary source of work is software manufacturing then yeah, there’s not much motivating you to preach to the masses to learn how to make software. If, however, you’re a more politically minded programmer devoted to creating a more efficient world or let’s say more open source software that might massively reduce government and educational spending, then it’s more than just “useful” to have a citizens who know what you’re talking about. It’s essential.
Because nothing is going to change until a critical mass of the population understands enough about computer science to pressure their respective government or administrations into making the significant changes that have all kinds of economic and social advantages.
So there. A reason we should learn to program: because it might inspire others to do the same, and then maybe we’ll have a society that is better able to function as a more participatory democracy.
But don’t tell the kids that just yet.
Alright, I’m ready to call it. If the 90s was the decade of the brain, and the 2000s, the decade of impossible to categorize millennial upheaval, this decade is going to be the decade of digital literacy. Or at least that’s what it should be.
When I say digital literacy I don’t mean this is the decade when everyone finally figured out how to use Twitter. I mean during the next ten years society is going to accept that computer science can no longer remain a field reserved only for specialists. It needs to become a core subject in schools, as important as math or english. And it needs to be something that all citizens are learning at whatever pace is realistic for them.
There are so many reasons for this, but the most important, every day we’re uploading more and more of our personal, professional and financial data into a cloud. If we don’t understand at least the fundamentals of how that cloud works, we’re leaving ourselves and our children vulnerable to all kinds of manipulation, surveillance and violation that we’re not even conscious of.
Some people will choose to gate themselves off with strict parental controls. But the Internet has the potential to be one of the greatest incubators of creativity, knowledge and social connection in the history of human civilization. Who wants to gate their kids off from that? Or more realistically, how long will you even be able to?
The best way to turn kids into good digital citizens, able to protect themselves and each other, is to direct them towards the knowledge and skills they need to make informed decisions consistent with good values.
Learning to program is no longer about learning how to make robots. More and more it’s going to be about learning how to stay human. As Douglas Rushkoff started pointing out last year, we are increasingly being faced with the choice of being the programmer or the programmed.
So how to start? We can call for massive educational reform, like they’re doing in the U.K. In January the Ministry of Education announced a huge overhaul of the teaching of information technology in schools. Last month The Observer ran a week-long series called “Why All Our Kids Should Be Taught To Code” It covered all the best reasons why computer science needs to become a core subject, and why information technology needs to be less about teaching kids how to use software and more about understanding how it is made (there’s an especially great article on why girls need to start learning it early, before puberty when they start to become more vulnerable to peer pressure.)
Enough with the stale back to basics testing. Incorporating computer programming into core courses will bring education alive. Fooling around with the functions that make a computer do your bidding, for example, calculating every multiple of three up to 10,000 in under 10 seconds, is empowering and makes math fun. Bringing some HTML or CSS into a research project is like mixing a magic graphics potion from twigs. These are challenging skills, but they’re skills with big, immediate payoffs. Most kids are smart enough to figure that out.
But do we have the time to wait for this educational reform? If you’re a parent there are great reasons to simply start learning to code on your own. There are few professions left in which knowledge of code won’t help your career dramatically. Do you really think you can’t learn something that can be taught to eleven year olds? If you’ve cut back from work to raise children, or your college degree is going to be gathering dust for a few years before you head into the work force, learning to code will keep you brain sharp and your skills fresh. And you can use these skills now to build games and projects with your kids. Literacy begins at home, whether it be analog or digital.
Nobody needs to learn enough to become a senior developer. But just spend an hour dipping your feet into one of the free coding education programs that have popped up in the last year. One of the first things you’ll learn is how to create a confirmation box.
In JavaScript that’s as simple as writing this sentence:
>confirm (“Do you like my awesome confirmation box?”);
Run that in a browser console. Spend an afternoon hacking that box with a kid. Make up some nonsense choices. Another hour and you can learn to prompt some default choices. For fun try to force each other to make decisions that lead to embarrassing results. That confirmation box will never again have quite the same unquestioned authority for either of you.
If you do just that, you’re already one giant baby step ahead.
Thanks to Lisa Williams over at Life and Code, for the scoop on this.
I first found out about Turing when my mom took me to see “Breaking The Code,” a West End play in London, starring Derek Jacobi. Turing was considered one of the founding fathers of computational thinking, until the mid 1950s when he was outed and convicted of homosexuality. It didn’t get better. He committed suicide and the world lost a brilliant mind.