Tag Archives: high school

Sheer Joy

There is no greater reward for a teacher than when a class of students is enthusiastically engaged in learning and expresses delight in what they are doing. When it comes in the last class on Friday, it’s even sweeter!

This is awesome!

It’s so cool!

I want to do this all day long!

These were the comments from my students at the end of the day and week as they reluctantly packed up their laptops and headed out of the door towards home. They had been thoroughly engaged, both mentally and emotionally, and the energy in the room was amazing.

The Computer Programming class at ICS has grown over the years from around 6 students to now 23 students learning the basics of programming. We’ve used various tools and techniques to teach programming, but we’ve settled on using Processing as an introduction to Java and object-oriented programming (and hence a good introduction to the IB Diploma Computer Science course) …but it is also engaging and appealing to a broad range of students.

In Friday’s class, students were building their first program. They had explored Processing and seen what kinds of things could be built. They’d looked at the code – a mess of {s and ;s and weird words like void and println. Now it was time to dig in and get started.

It was a wild ride. I wish I’d had the time or presence of mind to take photos and videos, but I was too busy bouncing between presenting programming basics to the whole class (what on Earth are those { } for??), helping individuals trouble-shoot, high-fiving kids who were eager to show what they’d done, etc. Every single student had a huge smile on their face and were eagerly sharing with their tablemates what they were doing & asking what the others were doing.

It is that kind of experience which teachers live for.

processingI’m lucky that I teach a practical, engaging course like computer programming. Students are creating new things and actively engaged in learning. They get to immediately practice and implement what they are taught and get immediate feedback when it works (or doesn’t). Sure, there’s a fun element to it (and Processing makes programming fun from the start), but the main thing is the success. They write some code, click “run” and immediately the computer does what they tell it. Their code creates an image on the screen as they imagined. Or it doesn’t, and they have to figure out what they need to do to make it work they way they want. Click “run” again – instant feedback.

My favourite times were when students would ask me, “what would happen if I did ______ instead?” I got to smile broadly and say, “Don’t wait for me to tell you. Try it out!” The students were experimenting and trying things out – a real inquiry activity. I had to give them enough information to make sure they got working programs, but they could alter the data and order of commands to make different programs. As I said to them, “The worst thing that will happen is you’ll get an error message and you’ll need to either fix it or change it to something else.”

If only teaching was like this every day. The reality is that this kind of energetic and energizing lesson is a rare treat. Teaching is one of the most demanding, emotionally draining and stressful jobs around. It’s seriously hard work. (And deadly serious work!)

But when a lesson goes like this, a teacher is on top of the world.

DIY Learning Projects

gaming_JacobThis semester, we had a new High School course on offer for students: “Project X.” It was an experimental course of “DIY Learning,” where the students took control of their own learning. They chose a topic to learn about, planned their learning, and conducted their own research into the topic. The semester started with some teacher-led instruction of how to plan a learning experience, as well as how the brain works and how to study and learn new topics efficiently. The bulk of the semester had the students taking the lead, and so my role as “teacher” was to guide them and make sure they were on track, sticking to their plan, and making progress.

This week we had them present their learning to their classmates. It was a diverse range of subjects that they’d chosen to study. One studied astrophysics, while another studied graphic design and art using a graphics tablet. A few learned computer programming, and a few studied business plans and entrepreneurship. One learned computer game design, another studied how computers work and created a “visible computer” display showing the exposed components of a computer. The last presentation was by a student who studied international law, and she led the class in the enactment of a trial.

It was a fascinating experience, both for the teacher/facilitator, as well as for the students. We all learned a lot – not only about the subjects we studied but also about how we work and learn.

graphics_AbelAbel showing off art created on a graphic tablet. ExposedComputer_MoMohamed showing off his “visible computer.”
court_NubiaNubia presiding over a class trial. business_SebSeb making his elevator pitch.
Cross-posted from my school blog.

Computer Science in the IB Diploma Programme

A screenshot of a computer scientist from "Pathways in Computer Science" from University of Washington
A screenshot of a computer scientist from “Pathways in Computer Science” video from University of Washington ©

Over the past few years, we’ve been building more opportunities for students at ICS to learn aspects of Computer Science – programming, robotics, logical thinking, etc. As we’ve built those, we’ve had increased enrollment in our programming and computer science courses in the Middle and High Schools.

We’ve now reached a point where we think we can offer Computer Science within the IB Diploma programme. It will depend on whether or not we have sufficient numbers of students registering for the course, and we’ll be canvassing students in grades 9 and 10 to find out how many might take the course.

If we go ahead with this, students at ICS will be able to take Computer Science as part of their program of study – as a second Science (Group 4) choice. Most universities require Chemistry or Biology or Physics for entry, so Computer Science would be a second option. (The IB Diploma requires students to take courses in all of the first 5 groups. Instead of a Group 6 – Visual Arts – course, a student could take a second course from one of the first 4.)

Having this option will help any of our students who want to study Computer Science (or other computing fields), Engineering, Bio-tech or other technical subjects at university. It will also be beneficial to any student who is interested in using computers for analysis, development and creation. Computer Science and programming is increasingly becoming a highly valuable skill in all sorts of disciplines …even the Arts!

Any parents or students who want to learn more details about Computer Science in the IB Diploma Programme should look at the IB website, come to our IB information night on November 10th, or send me a message! I’ll be posting more about this course here on my blog, too!

Meanwhile, here’s a video I showed to the High School students to give them a more realistic idea of what Computer Science is all about:

Cross-posted from my school blog.

A sweet start to the year

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.

And that’s a sweet lesson to start the year!

credit: photo of bread & jam by Yemisi Ogbe from Wikimedia Commons licensed CC-BY-SA

Projects of Passion

 “I wish school was like this every day.”

When a teacher hears this kind of comment from a student, you know you’re doing something right. There were a number of comments like this last week from Grade 10 students. They had a week off timetable and we decided to give them a week of STEAM (Science, Technology, Engineering, Art and Mathematics) projects, plus some time to do a “passion project” on a topic/area of interest of their choosing. The students rose to the occasion and did some amazing work.

There are a few elements of the week that are worth focusing on:


JpegStudents were able to choose which area they wanted to work in. It was first-come first-served (so some got their second choice), but the students appreciated being able to pick for themselves what type of work they wanted to do.

One group of students built air-pressured bottle rockets designed to launch into the air and travel safely (with a parachute for gentle landings) a specified distance. They learned about aeronautics, hydrolics and air pressure, drag, and other important Science and Engineering concepts. Another group used SketchUp to build digital 3D scale models of campus buildings. They measured, calculated and used Trigonometry and other Mathematics concepts to make sure their models were to scale. A third group of students built and programmed robots to perform set tasks. Another group of students used LiveCode to program their own computer game. Finally, another group of students created a 3D mural to adorn the mini-amphitheatre reflecting Ethiopia, Lucy and human bones.

Students really appreciated being able to choose different projects and being more in control of their work.


Students were given an opportunity to pursue a “passion project” – to pick an area that they (individually or in small groups) were very interested in and to do a project related to that. They were given time and some guidance to the project, but otherwise allowed to work at their own speed & level.

Some students explored photography, others focused on a sport. Some continued their STEAM project, while others

created something artistic. One student created a model of an invention by Leonardo da Vinci. Another researched a medical issue and produced a poster giving information about it. A few wrote poems, while others wrote and performed songs. Several made videos about their passion, whether it was skateboarding, football, forestry or other topics.

Many students commented on how they appreciated being able to pursue their own particular interest.


JpegStudents were given a fair bit of latitude in doing their own individual passion project, and given a fair bit of leeway in the other projects regarding what they would contribute or produce. Students appreciated being given time and space to do their work at their own pace. Teachers were monitoring them and keeping them on task, but they weren’t constantly directing the students. As one student said:

“I liked getting the opportunity of exploring what interests us. I also loved the liberty that we were bestowed with. We didn’t have teachers telling us what to do for once. “


Launching the ICS App Store!


There’s a new system at school: The ICS App Store!

It has been launched this week with a couple of applications that were built by High School students to help students (and teachers) keep track of the rotating block schedule. With the application, a student can enter his or her schedule (once) and then every day the program will show what the rotation is for the day, including times of classes.

The applications have been built to run on all three computer operating systems in use at school – Windows, OSX (Mac) and Linux (Ubuntu). They’ve been tested and function well on all computers.

The students created these apps in their High School course, Developing Computer Applications. This class, which ran last year and will run again next semester, teaches students how to build applications using a free and open-source development tool called LiveCode. LiveCode has been used by many schools to teach programming and application development, and it has been used by many organizations (including KLM) and individuals to build applications for computers and mobile devices.

Future plans for the ICSapps site include more apps developed by students, a new interface, and developing apps for mobile devices. Watch the space!

(at the moment, the ICS App Store is only accessible from within our campus’ intranet, Eaglenet.)

Canadian Computing Competition

contestClick click click. Fingers tapping over the keyboard quickly, urgently. Papers rustling as words are looked up. The occasional exclamation of frustration or exultation as difficulties and successes are encountered.

For three hours, five high school students participated in the Canadian Computing Contest, sponsored by the University of Waterloo’s Center for Education in Mathematics and Computing. Although originally (and primarily) a Canadian contest, students from around the world participate in this contest every year. It give students a chance to try out their programming ability in a competitive environment and compare their skills with others.

Last year, ICS had one student participate in the contest. This year, we had five! We hope to have even more participate next year. It’s a good chance for our students to stretch the skills they learn in our programming classes and work in a pressurized situation.

For three hours on Wednesday, the students worked to produce working programs from scratch given a problem to solve and specifications to meet. Beimnet, Jan-Philipp, David, Feven and Yosias each had five programs to write. They were able to use printed materials for reference – no closed-book tests in programming! – but had to rely on their own creativity and computational thinking to frame the problems presented in a way that a computer could solve, and then code it in the language of their choice (all the students used Python this year) in a fully functioning program.

To give you the idea of what they had to do, here’s a sample question from a previous test:

Many communities now have "radar" signs that tell drivers what their speed is, in the hope that they will slow down. You will output a message for a "radar" sign. The message will display information to a driver based on his/her speed according to the following table:
km/h over the limit: fine
1 to 20: $100
21 to 30: $270
31 or above: $500
The user will be prompted to enter two integers. First the user will be prompted to enter the speed limit. Second, the user will be prompted to enter the recorded speed of the car.
If the driver is not speeding, the output should be: "Congratulations, you are within the speed limit!"
If the drive is speeding, the output should be: "You are speeding and your fine is $F" (where F is the amount of the fine as described in the table above.)

A reasonable challenge – realistic, but also simplistic for a contest environment. To deal with it, the student must break the problem down into logical statements, conditions, etc. They need to analyze all potential inputs and compare them. If the comparison is in one range, then a certain statement needs to be printed out. Depending on other comparisons, then different statements need to be printed out.

This type of analysis is called “computational thinking,” and it’s a good skill for all. It’s particularly useful for programming, but it’s also an excellent skill for scientific reasoning, mathematical analysis or almost all types of problem-solving.

Once the analysis has been done, the student must put it into formal computer code – something like this:

if speed <= limit then:
    print ("Congratulations, you are within the speed limit!")
else if speed - limit <= 20 then:
    print ("You are speeding and your fine is $100")
else if...

And so forth. It’s an exact process and can get quite complicated. This example is very simple – the challenges in the contest get more difficult! The students found some easy, others very difficult.

All of our contestants successfully completed the contest and earned respectable scores. More than that, all of them had the satisfaction of persevering at a difficult task, and the joy of building something from scratch to solve an assigned problem. It was a worthwhile experience …they’re already talking about taking the contest again next year!