This year the first ever Africa Code Week was conducted across the continent, aiming to get children started with computational thinking, programming, and using computers as devices to build software, not just use it. Thousands of children in over a dozen countries had the opportunity to start programming. ICS joined in this activity to help encourage our students to do the same, and we reached out to other children here in Addis Ababa to get them working with code. One week or one session will not make a programmer out of a child, but it can start the process. We’re planning to keep this initiative going through the year, not just within classes, but in fun, engaging activities outside school hours.
The first week in October has been designated Africa Code Week, with a push in several countries across the continent to get children building their own programs. There are a few initiatives in Ethiopia, and ICS is joining in. We’re sponsoring a few events next Saturday (10 October) to get our students and some other children learning how to make programs that do what they want, rather than simply using apps that others have built.
There’s been a big push worldwide to get people programming. “Everyone can code,” proclaim advertisements, government officials, teachers and students. It’s a simplistic message which provokes pushback as well as support. People argue that not everyone needs to become a programmer, and that saying that everyone can and should learn to code is ridiculous.
The truth is that everyone uses a computer in their daily lives not only for work but also for leisure. For many, they are mysterious machines that work magic. People who learn some programming skills get that magic demystified and explained: for them, computers are comprehensible machines that work in understandable and predictable ways.
The art of programming also builds in students a logical way of thinking that supports problem-solving. Computational thinking is a way of analyzing a problem or situation in ways that break it down into processes that a machine can perform. This is the skill that all programmers develop, and it helps people better understand complex problems as well as get machines to solve those problems.
Finally, learning to program is a way to gain mastery over computers and hence one of the driving forces of our economy and society. Being a programmer is a lucrative and highly sought-out skill, not only in high-tech businesses but increasingly in other fields. Economists write programs to analyze data. Architects write programs to model building stresses. Geographers write programs to simulate geological processes.
ICS is committed to getting our students to be inquisitive and creative, using computers not only to communicate and collaborate but also to analyze and problem-solve. Learning to program is a part of that, and we aim to have all of our students develop some skills in computational thinking and computer programming. Our goal is that those students who wish to pursue that as a career can do so, and that others will have a better understanding of how computers actually work.
The first day of classes is a problem for a computer-based course such as Developing Computer Applications. The temptation is to try to dive into working with computers, but the students haven’t received their laptops yet. (I’ve yet to figure out a system where we could just hand them over on Day 1!)
But even if they had the laptops, it might not be the right thing to just dive right in to programming and creating apps. Even in High School, it’s important to try to build community in a class and establish relationships. For me the first thing that’s important in a class is letting the students know that computer programming is a challenge (and sometimes very frustrating), but also fun and rewarding.
So I thought I’d do a fun group-based “unplugged” lesson – teaching a computer science concept without using computers. One of the building blocks of programming is the idea of an algorithm: a step-by-step procedure for accomplishing something. In order to give instructions to the computer, you need to break a task down into tiny steps and give those commands in clear, precise language. I’ve done this before with making a sandwich, but I looked for more inspiration and found a great plan by Phil Bagge that I adapted.
After the concept of algorithm was introduced by having them explain the process of long division, the students were given the following instructions:
And I explained: they were to give the SandwichBot 3000 robot (me!) step-by-step instructions to make a jam sandwich. If they did it wrong, they’d have to fix it. If they did it right, they’d get a snack for a reward. (It helped having the class just before lunch – they were hungry!) They got into teams of 4 and started working.
When two teams had finished, they came to give the “robot” their instructions. The whole class watched to see how quickly their friends would get a yummy snack.
They quickly found out that their hard work was often a failure. The brainless robot did what they told him to do, even if it didn’t make sense. He also would stop if they didn’t give instructions in clear language. “Put it down” was met with “I don’t know what ‘it’ is.” If they told the robot to pick something up and forgot to tell it to put it down, his hands got full and he couldn’t do a step. Sometimes their instructions resulted in surprising results: “press the bread down onto the plate” got a squished slice!
The best laugh was when one team instructed the robot to “scoop out jam with right hand.” Without a knife, the robot dug into the jar and held up a handful of jam! (The robot had washed his hands well with soap before the lesson!)
Each time their algorithm “crashed,” they had to go back and try it again. Eventually, their instructions were covered in cross-outs, additions, etc. The great thing about it was that eventually, every team got a plate of jam sandwiches. They all laughed, both at the robot and at their own mistakes. They gave each other encouragement and suggestions. From a social point of view, a success.
Also successful academically in a great way: they didn’t give up. They didn’t get a low score on their algorithm. They “failed” but went back to fix their work and improve it. (A buzzphrase in education: “FAIL = First Attempt In Learning.”) Eventually, they all succeeded.
When I asked the students afterwards what they’d learned, one of them said, “algorithms are hard!!” But, I asked, did they succeed? Yes, they agreed. And that’s the frustrating and wonderful part about programming. Computers are dumb machines. It’s hard to figure out the right sequence of instructions and the right language to get them to do what you want, but eventually you can and do. I’ve never had a student not be successful in building an application. Some build huge, fancy programs, while others create more simple ones …but they all succeed.
“Victory is mine! I drink from the keg of glory. Bring me the finest muffins and bagels in all the land.” (Josh Lyman/Aaron Sorkin)
It was a simple request. An administrator wanted to analyze all the assessments teachers had entered into the assessment calendar over the year. He wanted to look for trends, get some statistics, etc. His assistant wanted to look at the submission dates and see when people were posting things.
No problem. Our system exports calendar data. Click, click, click. Here you go, sir.
Calendar programs export calendar files. ical files. (.ics, to be exact.) They’re intended to be read by other calendars. Not spreadsheets.
This is what an appointment looks like in an ical file:
This is not pretty stuff. But it is analyzable. I showed the admin where the data was that he wanted. He’s a savvy guy and not afraid of getting his hands dirty with back-end computing, but the look he gave me was grim. There were thousands of events in this calendar. And he was going to do this every year.
About an hour (most of it QA & me looking commands up in a reference book) and 34 lines of code later, I was able to offer him the same data. Only this time it looked like this:
And, I told him, we could now do the same data cleanup any time he wanted to look at information in a matter of seconds.
Programming is not just for software developers!
Please note: I am not a developer. I do not consider myself a “real” programmer. I dabble. I teach high school students to program. I know my way around a program. I’ve coded various things but nothing terribly serious.
The program I wrote is not highly technical coding. One of my high school students could have done it. (I showed it to them the next day. They all got it. One student suggested an tweak.)
EVERYBODY should know how to do this. (At least some of it.) Computers are here and they’re not going away. Learning to program them in this age is like learning to read was in centuries past. Christan Genco makes the case (far better than I could) in this TEDx talk:
“Hey, how did you do that??”“Here, let me show you!”
The buzz in the room was tremendous. Students were excitedly working on projects individually, working together to solve problems and enthusiastically checking out each other’s work. For us adults in the room, it was a busy and fun time: helping students, giving out praise and suggestions, asking questions, pointing out other students’ success.
This past Saturday, ICS participated in the Global Codeathon, an international competition/collaborative project. Students in grades 3-6 from international schools all around the world assembled in their respective schools to build games, simulations and other programs using Scratch, a free online coding platform built by MIT to help children learn computer programming.
ICS students came to the ES computer lab and dove right in. They got help from Middle Schooler, Abheek, as well as from Ms Alex and Ms Heran (and myself!) but the ideas, as well as the execution, was all theirs. They added “sprites” to their programs, gave them commands to move, make noises, change their appearance, and more. They had to act in one way when clicked on by the mouse, another way when keys were pressed on the keyboard. They had to think through how they could get the computer to move and animate things the way they wanted. It was hard, but it was fun!
Meanwhile, students in schools all around the world were doing the same. We had some technical difficulties, including a complete internet outage for the first 45 minutes, which stopped us from video chatting with them, but our students chatted with them on the “backchannel” chat line, and also got to share their work in two Scratch “galleries.” They enjoyed getting comments on their games from students in other countries, and had fun trying out other students’ projects.
At the end, Ms Alex and Ms Heran brought out pizzas and juice boxes for the tired but still enthusiastic programmers. You can’t code without fuel! All agreed it was a fun day …and we’re looking forward to an even better time (with a better connection!) next year!
Any time a teacher hears that from a student, it makes the teacher’s dayweek year. That phrase has been heard quite a few times this week as we’ve had students participate in the annual Hour of Code.
The Hour of Code was started last year as an initiative within the annual Computer Science Education Week, which is held every December (coinciding with the birthday of the amazing programmer and computer scientist, Admiral Grace Hopper). The Hour of Code was intended to get every student spending one hour doing some programming to get them started with programming, Computer Science and computational thinking. This year, the project has been expanded worldwide, with the goal of reaching 50 million students.
ICS students participated in the Hour of Code this year in a number of ways:
In ES, students from grade 4 and 5 signed up for a special lunchtime Art Studio. Normally, Helen Iglar runs Art Studio for students to do any kind of artwork they are interested in – this week, she focused the students on art through programming. Using iPads, the students completed a tutorial from Code.org and then moved on to use the Hopscotch app. In Hopscotch, students program cartoon “sprites” to draw shapes. With some critical thinking and creativity, students can use Hopscotch to program artwork.
An excited group of students signed up and committed to the week, coming to Art Studio every day. They finished up on Friday with a celebration and photographs with their certificates. One student said, “This isn’t the Hour of Code, it’s the Power of Code!”
In MS, all students participated last week, because their schedule this week was already full. So students had their Wednesday “Community Time” to explore the tutorials on the Code.org website to solve programming tasks. The students were excited about it and conveyed their enthusiasm to their teachers and advisors. Several of them were spotted continuing their programming after school!
This week, we opened up a lunchtime challenge for all Middle School students to use the Scratch programming environment (installed on their laptops and free to download for home computers) to build a clone of the Flappy Birds game. A number of Middle School students took up the challenge and spent their lunchtime happily programming away!
In High School, a group of students decided that an hour wasn’t enough and are organizing a Month of Programming, with tutorials, challenges, contests and prizes. This will come after the holiday and more information will be published here and in the Yezare Samint.
Meanwhile, last week’s Grade 10 Week Within Walls STEAM week included a programming component in which a group of students used the LiveCode application development program to code their own computer games. And also a lunchtime Hour of Code was held during CS Ed Week in which students looked at and analyzed the Scratch Flappy Bird game.
On Saturday, our weekly CoderDojo will focus on the Hour of Code to have students build games, take tutorials and have fun! All are welcome – parents, come along and learn some programming along with your children!
There’s a buzz in the world of ed-tech: coding is touted as “the new literacy.” All students are being exhorted to learn coding or computer programming. The UK has changed its curriculum to make Computing (including programming and other Computer Science topics) replace ICT as a core subject. Various states in the US are making Computer Science courses count towards graduation. Tech companies and leaders are encouraging schools to teach programming to students.
There are two main reasons why there’s an increased emphasis on teaching programming in schools:
Teachers have been teaching students in “information technology” (or ICT, “information & communication technology”) for years. Over the years, however, this has become a confused and sometimes weakened area of instruction, with overemphasis on basic tools such as word processing and other such skills. As instruction in all areas involves technology more, these skills are increasingly taught (and rightly so!) integrated with other learning.
As IT/ICT has become more embedded, programming has been viewed as the new area of technological literacy. Students who learn how to program computers (or code web pages with HTML) are really literate in using computers, getting them to do what they want instead of just using applications & doing what others (who know programming) allow them to do.
If there are any justified criticisms of teaching programming to students, it’s that the emphasis on coding is too limited. Coding is specifically writing instructions that a computer can understand …and this might be a useful skill, but it’s not one that everyone really really really needs. Instead, the emphasis is/should be on Computational Thinking: analyzing problems and breaking them down into logical solutions. This type of thinking is particularly essential in programming, but it’s also vital for mathematical problem-solving, scientific analysis or other logical problem-solving.
What’s ICS doing?
ICS is no newcomer to the instruction of coding/programming! We’ve been promoting this with students (and families!) for years, and every year we expand our work. Here are three areas where we are currently taking action:
Computing/Computer Science courses
Over the past few years, we have modified our curriculum and course offerings to provide more instruction to students in programming and computational thinking.
In the Elementary School, computer skills classes have included more programming activities for students, including building programs in Scratch, coding geometric artwork in TurtleArt, building webpages with HTML, and more. Younger students have used iPad apps (including the new ScratchJr). Meanwhile, robotics lessons in both classes and after-school activities have been run to have students learn how programming can make machines do physical work.
In the Middle School, we have added elective courses in Programming & Computer Science, Robotics and Web Development. Students have learned HTML, Scratch and Greenfoot (a version of Java). In all those courses, students learn computational thinking and coding skills. We’ve also run after-school activities in Robotics and programming using the Arduino.
In the High School, we’ve added electives in Programming and Applications Development. Students have learned programming using the Python and Processing (a version of Java) languages, and have built applications using LiveCode. We’re planning to expand our use of robotics in the High School, including starting a MS/HS team to compete in the ISSEA STEM competition this year.
Hour of Code/CS Education Week (and more!)
For some time, the second week of December, which has been designated Computer Science Education Week in honor of Admiral Grace Hopper, an amazing early pioneer in programming and Computer Science. (Watch this to learn more about this impressive woman.) Last year, a group of tech industry leaders introduced the “Hour of Code” during CSEd Week, which got millions of students to create programs during one week, and spawned more activities afterwards. The program is expanding this year, aiming to reach 100 million students all around the world.
Last year, ICS participated in the Hour of Code across the grades. Read about last year’s ICS Hour of Code here. This year, we’re making plans for a bigger, better and longer coding experience for our students. This is being led by a group of students who took the initiative to take on this task. They want a fun and rewarding experience for all students in building computer programs, and they’ve got some great ideas. We’ll kick off during CS Ed Week in December and then do some great programming in 2015. Watch this space and the Yezare Samint for more info coming up!
One of the items of feedback we got from students participating in the Hour of Code last year was that we needed more opportunities outside of classes for students to learn and play with programming. So we decided to launch a weekly CoderDojo to give students (and parents!) a chance to learn some programming in a relaxed and fun environment. It ran successfully on Saturdays throughout the second semester of last school year, and we are re-launching it this year in November. CoderDojo’s are designed to be fun, safe, informal learning environments where people can learn, experiment, share and show off their work. Give it a try – you might find you enjoy programming!