Making computing accessible for all (6/6): Compassionate computing lessons

This post is the last of six in a series with ideas and resources on how to make computing lessons engaging and demanding for as many students as possible. Click here for the original post.

Compassionate computing
Ideas and resources for compassionate computing lessons

I know. If I read this, I’d be questioning the sanity of the author too. How can computing possibly be described as compassionate? More importantly, why should Computing ever be compassionate? If we define compassion as a warm fuzzy feeling that we experience when we see cute-looking-cats or an uncomfortable guilt we try to ignore when we see bad news on TV then we’ve missed the point. Some of my students have volunteered with a fabulous charity whose founder – who established the charity on seeing a room full of children with learning difficulties left to rot in the dark, in their own filth – defines compassion not just as sympathy or empathy, but as empathy with action. When we see the broken world around us, the big question is not “How do we feel about that” but also “What are we going to do about that”.

Whatever you may think about Microsoft, it’s hard not to be moved by the aims (and achievements) of the Bill and Melinda Gates Foundation, set up by Microsoft’s founder to ‘invest’ his wealth helping to alleviate some of the world’s biggest problems. Whether you think Mark Zuckerburg and other billionare tech philanthropists give away money for tax reasons, for their own benefit or because they’re genuinely ‘good’ people is irrelevant. The fact is that they are able to give. Their skills have enabled them to be successful. Their success has enabled them to accumulate fabulous wealth. Their wealth has enabled them to setup, support or save charities around the world to make a difference on their behalf.

Students are often idealists. They want to change the world around them but feel powerless to make a difference. It can be both liberating and hugely empowering for them to realise that the skills they learn in computing can be put to good use now and in the future, not just to make money but also to support the causes they are passionate about.

Ideas:

  • Invite a representative from a local charity to come and speak to your students about how they use technology and social media to raise funds and raise awareness. Contrast this with the dangers of using social media as part of a lesson on eSafety.

    e.g. “Go to the BBC news web page and see if you can work out how to change one of the headlines to “Cure for cancer found”. Our visitor today works for a charity that is working hard to make that headline a reality. They’re going to explain today how your computing skills can help

  • Discuss and research current events with your students. Take time to get them thinking about how technology can help or hinder any big news item (e.g. refugee crisis / terrorism / poverty / conflict)

    e.g. As part of our web design unit we’re learning how to use HTML tags to make our own web pages. Today I want you to use <h1>, <img> and <p> tags to make a newspaper headline

  • Create a display full of ideas of how students can use the skills from each project / topic / unit of work to make a positive difference to the world around them. Students can help with ideas.

    e.g. “Today is our last lesson on game design. As homework I want you to choose between: A) find a game that promotes or advertises a charity or B) Think of an idea for a game that could promote a charity. e.g. The UNHCR is the United Nations charity in charge of refugees. They could have a game where you have to rescue refugees and catch people traffickers.

Example Activity: Obesity crisis

This activity teaches students how to use 2D lists / arrays in python. Use the above code to plot a map of obesity in different countries. Use the link in the code to find out and add the obesity stats for more countries. Discuss with the class how technology might be to blame for obesity in some countries and how technology can be part of the solution.

Then, get students to write the code for turning a BBC micro:bit into a pedometer that can encourage people to take more exercise:

Research and further reading

This paper is an excellent literature review which highlights the role of compassion in the context of making computing lessons more inclusive and particularly focuses on real life problem solving activities for example discussing the media representation of computing issues or engaging in projects related to culturally relevant problems or issues.

Shelton, C., 2017, July. How can we make computing lessons more inclusive?.

I’d also recommend reading this blog from Apps For Good

This blog summarises the impact of Apps for Good in improving teacher and student understanding, confidence & engagement by focusing on compassionate computing projects.

One of the key missions for Apps for Good is to encourage more girls to take an interest in technology and consider a tech career in the future. The annual survey also reported an increase in the percentage of girls more interested in working in a technical job. Girls reported that one of the reasons the course interests them is because it helps them hone a variety of skills important to working in the tech industry. 

Continue ReadingMaking computing accessible for all (6/6): Compassionate computing lessons

Making computing accessible for all (5/6): Curious computing lessons

This post is the fifth of six in a series with ideas and resources on how to make computing lessons engaging and demanding for as many students as possible. Click here for the original post.

Curious computing
Ideas and resources for curious computing lessons

I’ve sat through some programming lessons as part of my degree which were probably some of the dullest hours of my life. There was a well-informed, well-meaning lecturer and the  subject content was interesting, but listening to someone else explain coding concepts without any opportunity to try things out was just painful. It’s also tempting as a teacher to guide our students towards avoiding common mistakes. However well-intentioned this may be, it’s not nearly as memorable or useful as allowing students to make the mistakes then discussing together why problems arose and exploring different ways of avoiding them.

Curious students enjoy learning because they take ownership of their discoveries. Students who are encouraged and equipped to follow their curiosity are more independent and resilient: far less dependent on the teacher – which has significant benefits in the long term (and for summative assessment!). Learners encouraged to be curious during a lesson are much more likely to follow their curiosity outside of a lesson to read around the subject and develop a wider and deeper interest and understanding.

There’s a danger though. If every new skill is ‘discovered’ by students, they can feel abandoned and unchallenged. You need a certain level of confidence – if not a starting point of core knowledge – to be able to follow your curiosity to discover new skills or solve a problem for yourself. The students who either lack the initiative, desire or confidence to explore or research for themselves are the ones who have the most to gain from a ‘curious’ lesson activity but they’re also the ones who will need the most support to engage with it.

Ideas:

  • Combine ‘curious’ research with incentives to help and support others. Avoid always pairing up a student who’s able to discover for themselves with someone who always needs support 1:1 because this can actually feed the dependency and ultimately frustrate or hinder both students. Instead, split the class into teams and create an incentive for the whole class to demonstrate a new skill. Allow them to help each other but don’t allow them to do someone else’s work for them.

e.g. “The first whole team who can show me a web page that includes a paragraph tag, a heading 1 tag and an image will be the first team to leave. Start with the example on the board, search on w3schools and help each other – but remember: you mustn’t touch anyone else’s mouse or keyboard”

  • Equip students who have less independence / initiative by setting regular research challenges at the start of the lesson that involve searching for data online. Start simple with definitions that they can copy / paste, then get them to dig deeper for opinions, analysis, comparisons or ordered data

.e.g. “While I take the register: search for and try out three different ways of drawing a square using python. There’s a merit for the person who can do it using the fewest characters”Encourage “What happens if” activities by planning them into your projects and by praising anyone who asks that sort of question and creating a chance to follow a tangent to explore the answer every now and then.e.g. “Beth’s just asked what happens if we play the sound at 8KHz rather than at 44KHz. Great question! Thumbs up if you think it’ll sound higher, thumbs down if you think it’ll sound lower or thumbs to the side if you think it’ll sound the same. [play sound] What other difference did you notice between the two sounds?

  • Provide step by step instructions or demonstrations to get people started with a project but then create opportunities for open ended challenges where you mention some places to start looking for hints but don’t tell them exactly what to do.

e.g. “Follow these instructions to get your code to play “Happy Birthday” then see if you can write code for a TV theme tune and a song in the charts. You can search on … for song ideas”

Key questions:

How do I react when my students show me something I didn’t know how to do? What opportunities and incentives are there in my lessons for students to share their discoveries?

Example Activity: ASCII text data representation challenge

The above code lets you type in some text. It takes each character that you type in and converts it into binary based on the ASCII value for that character. It then draws the ASCII data as a black and white image. Ask your students to try the program for different messages and discuss what ASCII is. Then, show them the following images and see if they can work out the messages that they contain. Finally, get them to create and share their own messages for others to decode in the class. You could even use it to encode a web address with a hidden message…

 

Research and further reading

This paper debates the relative differences, advantages, risks and limitations of constructivism and discovery learning models in computer science. It strongly recommends that students with little or no background knowledge in a computing topic need to be explicitly taught key concepts but to create space for students to reflect on, discuss and choose next steps to investigate and accumulate their own knowledge and understanding. There are significant challenges here, particularly when in a programming context, so an effective teacher should model how to investigate and extend understanding by gradually removing the level of scaffolding and support when students are ready to cope with that level of independence.

Ben-Ari, M. (1998). Constructivism in computer science education. Proceedings of the twenty-ninth SIGCSE technical symposium on computer science education. Atlanta, Georgia, United States: ACM
Continue ReadingMaking computing accessible for all (5/6): Curious computing lessons
Read more about the article Code your own bedroom door sign: python on a BBC micro:bit for beginners
Scrolling text with python on a micro:bit

Code your own bedroom door sign: python on a BBC micro:bit for beginners

This is a BBC micro:bit for beginners tutorial that shows you how to write some python code to turn a micro:bit into a sign you can stick to your bedroom door.

Python is a programming language that’s designed to let you write as little code as possible to make as much work as possible. Writing code on in python on a micro:bit is a great way to get your head around the essentials in python and hopefully have a lot of fun along the way too.

The micro:bit has an LED screen with just 5×5 pixels (dots). This isn’t much compared to the 2880×1800 pixels you might be used to if you’ve got a Macbook Pro but it’s big enough to display simple pictures and text one letter at a time.

Try it with code
Display code on a BBC micro:bit

We’re going to be using the create.withcode.uk microbit simulator to write and test our code. To run the code you can press Ctrl + Enter or click on the run button in the bottom right of the code window.

 

If you want to test your code on an actual micro:bit, run the code in the simulator first then click on the Download Hex button. This’ll download a my_code.hex file that will run on your micro:bit when you drag it and drop it as though you were copying a file to USB memory stick.

 

 

There are two ways of displaying text to the micro:bit screen: display.scroll() and display.show(). What’s the difference? Which do you prefer?

Let’s go through each of the lines in turn:

import microbit
microbit.display.scroll("Hello")
microbit.display.show("World")

Line 1 tells python to import the microbit module. That means that python loads some extra code which tells it how to control a microbit. Lines like this, where you’re importing a module, usually go at the top of your code.

import microbit
microbit.display.scroll("Hello")
microbit.display.show("World")

Inside the microbit module there’s another module called display. Inside display is a procedure called scroll. The round brackets after scroll tell python to call (run) that procedure.

 

string
A “string” of characters

Notice the text in the brackets is surrounded by quotation marks: we call this a string because it joins the characters together as though they were threaded on a string like a washing line.

The scroll procedure scrolls the text from right to left, moving it one pixel at a time.

 

 

import microbit
microbit.display.scroll("Hello")
microbit.display.show("World")

Line 3 is similar to line 2 but instead of scrolling the text pixel by pixel, we show one character at at time.

You might notice in some tutorials that instead of import microbit you see from microbit import *

Both of these tell python to load code from the microbit module, but the second means that you don’t have to write microbit. every time you use the microbit module:

from microbit import *
display.scroll("Hello")
display.show("World")
import microbit
microbit.display.scroll("Hello")
microbit.display.show("World")

Both of the two programs above will do the same thing when they run. The top one is easier to write but some people prefer the bottom one to save confusion later in the development process.

Continue ReadingCode your own bedroom door sign: python on a BBC micro:bit for beginners