<p>I would like to suggest my absolute favorite lesson from my intro to CS class. I usually teach it over two class periods, the first being "unplugged" and the second on the computers, but I think you can cut some corners and still offer a valuable experience.</p>

<p>Overview: "How do computers sort things?"</p>

<p>I start by asking what computers are good at. The answers vary a lot and you usually have to guide them towards "counting", "adding/subtracting/multiplying/dividing", "true and false" and "comparison". If you've done a unit on binary, it's helpful to link that in with the last two and let them show you why it is so easy.</p>

<p>Then I talk a bit about how sorting is absolutely fundamental to Computer Science. I spend a little time explaining how almost any significantly complex program they have ever used will sort something at some point. It's a great algorithm to start with because it is so visual and so intuitive.</p>

<p>So we're going to have a tournament to see who can sort the numbers from 1-16 the fastest. At this point I have them fold and cut a piece of paper into 16 pieces and number them, but in the interests of time, you should do that yourself and just bring in enough sets for ((the number of kids) / 2). </p>

<p>Pair off the students and give each pair a set of numbers from 1-16 and tell them to put them in a line in front of them in random order.</p>

<p>One partner is going to be the "computer". They can not talk and they are "blind" (they can not arbitrarily choose specific numbers). They can only point to two pieces of paper at a time.</p>

<p>The other partner is the "program". The can only say "switch" or "stay". </p>

<p>The partners have to come up with an algorithm such that the "computer" points at two numbers at a time and moves from one pair of numbers to the next pair in a consistent and logical fashion. The "program" tells the computer whether to switch those numbers or leave them where they are.</p>

<p>Almost all of the groups will come up with bubble sort. Occasionally, one group will come up with selection sort.</p>

<p>I put them in head-to-head competition, with the numbers randomized the same way for both groups to keep it fair. Winners play winners until the champions are crowned. Usually there is some sort of prize at the end (chocolate goes over well with 13 year-olds :)</p>

<p>Second 30-minutes:</p>

<p>Here is the crux of the problem for you, as you mentioned: they don't have any programming experience or accounts. So my recommendation would be to ask them to set up Scratch accounts for the students in advance, or (possibly even better) you can just set up 15 "test" accounts and have the skeleton program ready to go in each one.</p>

<p>I am a big fan of pair programming, so I keep them in the same pairs that they were in for the competition. I set a repeating 4-minute timer on the board to change the "driver" (on the keyboard) with the "navigator" (helping figure it out).</p>

<p>I ask my students to "remix" this program: <a href="https://scratch.mit.edu/projects/125507639/" rel="nofollow noreferrer">https://scratch.mit.edu/projects/125507639/</a></p>

<p>But for those that need a little more scaffolding (or have less time, like yours), you could include a little more code, like this: <a href="https://scratch.mit.edu/projects/125587510/" rel="nofollow noreferrer">https://scratch.mit.edu/projects/125587510/</a></p>

<p>Their goal, obviously, is to sort the blocks. How much you let them struggle and how much help you give is obviously up to you, but I can not express the satisfaction you'll get when you start hearing the shouts of "I GOT IT!". I like to err on the side of the struggle. I try to explain that if they are not frustrated, they are not learning - they're just doing what they already know.</p>

<p>If they are done early (or want to continue with a harder challenge after class), they can try the "sorting 300 starter" in my Scratch Shared Projects. It allows for more a random assortment blocks, negative numbers, etc.</p>

<p>Once most (or all) of the students have a working program (or you have 5 minutes left), bring them back in to talk more about the power of sorting.</p>

<p>What kinds of things do we sort all the time in our daily lives?</p>

<p>What if you are sorting REALLY HEAVY objects (buckets of sand) instead of just pieces of paper? Would you use a different algorithm? Why?</p>

<p>You can also show them this great visualization of different algorithms: <a href="https://www.toptal.com/developers/sorting-algorithms/" rel="nofollow noreferrer">https://www.toptal.com/developers/sorting-algorithms/</a></p>

<p>If you have any questions at all, please feel free to contact me!</p>

<p>Good luck!
John</p>

CC BY-SA 3.0
2017-06-15T12:17:08.280Z
I love the blindfolded sorting lesson - I might borrow this for HS :)
Ben I.
CC BY-SA 3.0
2017-06-15T20:29:59.047Z
That's where I use it and it works well, even for those with programming eperience.
John Bartucz
CC BY-SA 3.0
2017-11-06T20:04:23.533Z
Oh, man. I just found this again. I really need to run the first half of this lesson!
Ben I.
CC BY-SA 3.0
2017-06-15T03:18:47.793Z
2017-06-15T20:32:08.463Z
2017-06-15T20:32:08.463Z
John Bartucz
<p>I have been asked to teach a single half hour lesson at a new school for an interview. The topic I was given was "something on computational thinking." The students are 13 years old.</p>

<p>For the first half of the lesson the students wouldn't be using computer, and for the second half they would be on a computer.</p>

<p>I have not been given any objectives for this lesson (WALT or WILF).</p>

<p>The first part seems easy, I plan on using something from <a href="http://csunplugged.org" rel="nofollow noreferrer">http://csunplugged.org</a>. However the 2nd part seems harder. In the past I have connected it to programming, but the class has little programming experience.</p>

<p>What can I do in the second half of my lesson, where the students have access to computers? I'd prefer to avoid a programming task because the students have no background in it and I only have 30 minutes.</p>

CC BY-SA 3.0
2017-06-14T18:10:21.670Z
We're currently talking about your question in [chat](http://chat.stackexchange.com/rooms/59174/computer-science-educators) - sounds like you're in a rough spot! Come by and I will try to help you brainstorm
Ben I.
CC BY-SA 3.0
2017-06-14T18:15:33.517Z
What aspect of computational thinking are you going to focus on in the first part of the lesson?
pddring
CC BY-SA 3.0
2017-06-14T18:20:27.910Z
What are some things that you're thinking about for the second part?
thesecretmaster
CC BY-SA 3.0
2017-06-15T01:49:42.817Z
Do you have any idea what technologies the students will have access to? Scratch? Python/IDLE? A particular IDE? Greenfoot or BlueJ?
Peter
<lesson-ideas><computational-thinking>
Interview lesson on "Computational Thinking"
# Interview lesson on "Computational Thinking"

(Asked by: username_0 on 2017-06-14)

I have been asked to teach a single half hour lesson at a new school for an interview. The topic I was given was "something on computational thinking." The students are 13 years old.

For the first half of the lesson the students wouldn't be using computer, and for the second half they would be on a computer.

I have not been given any objectives for this lesson (WALT or WILF).

The first part seems easy, I plan on using something from <http://csunplugged.org>. However the 2nd part seems harder. In the past I have connected it to programming, but the class has little programming experience.

What can I do in the second half of my lesson, where the students have access to computers? I'd prefer to avoid a programming task because the students have no background in it and I only have 30 minutes.

**Tags:** lesson-ideas, computational-thinking

> **Comments:**
> **username_1**: We're currently talking about your question in [chat](http://chat.stackexchange.com/rooms/59174/computer-science-educators) - sounds like you're in a rough spot! Come by and I will try to help you brainstorm  
> **username_2**: What aspect of computational thinking are you going to focus on in the first part of the lesson?  
> **username_3**: What are some things that you're thinking about for the second part?  
> **username_4**: Do you have any idea what technologies the students will have access to? Scratch? Python/IDLE? A particular IDE? Greenfoot or BlueJ?  

---

## 1 answers

### Answer by username_5 on 2017-06-15. Score: 7 | Accepted answer

I would like to suggest my absolute favorite lesson from my intro to CS class. I usually teach it over two class periods, the first being "unplugged" and the second on the computers, but I think you can cut some corners and still offer a valuable experience.

Overview: "How do computers sort things?"

I start by asking what computers are good at. The answers vary a lot and you usually have to guide them towards "counting", "adding/subtracting/multiplying/dividing", "true and false" and "comparison". If you've done a unit on binary, it's helpful to link that in with the last two and let them show you why it is so easy.

Then I talk a bit about how sorting is absolutely fundamental to Computer Science. I spend a little time explaining how almost any significantly complex program they have ever used will sort something at some point. It's a great algorithm to start with because it is so visual and so intuitive.

So we're going to have a tournament to see who can sort the numbers from 1-16 the fastest. At this point I have them fold and cut a piece of paper into 16 pieces and number them, but in the interests of time, you should do that yourself and just bring in enough sets for ((the number of kids) / 2).

Pair off the students and give each pair a set of numbers from 1-16 and tell them to put them in a line in front of them in random order.

One partner is going to be the "computer". They can not talk and they are "blind" (they can not arbitrarily choose specific numbers). They can only point to two pieces of paper at a time.

The other partner is the "program". The can only say "switch" or "stay".

The partners have to come up with an algorithm such that the "computer" points at two numbers at a time and moves from one pair of numbers to the next pair in a consistent and logical fashion. The "program" tells the computer whether to switch those numbers or leave them where they are.

Almost all of the groups will come up with bubble sort. Occasionally, one group will come up with selection sort.

I put them in head-to-head competition, with the numbers randomized the same way for both groups to keep it fair. Winners play winners until the champions are crowned. Usually there is some sort of prize at the end (chocolate goes over well with 13 year-olds :)

Second 30-minutes:

Here is the crux of the problem for you, as you mentioned: they don't have any programming experience or accounts. So my recommendation would be to ask them to set up Scratch accounts for the students in advance, or (possibly even better) you can just set up 15 "test" accounts and have the skeleton program ready to go in each one.

I am a big fan of pair programming, so I keep them in the same pairs that they were in for the competition. I set a repeating 4-minute timer on the board to change the "driver" (on the keyboard) with the "navigator" (helping figure it out).

I ask my students to "remix" this program: <https://scratch.mit.edu/projects/125507639/>

But for those that need a little more scaffolding (or have less time, like yours), you could include a little more code, like this: <https://scratch.mit.edu/projects/125587510/>

Their goal, obviously, is to sort the blocks. How much you let them struggle and how much help you give is obviously up to you, but I can not express the satisfaction you'll get when you start hearing the shouts of "I GOT IT!". I like to err on the side of the struggle. I try to explain that if they are not frustrated, they are not learning - they're just doing what they already know.

If they are done early (or want to continue with a harder challenge after class), they can try the "sorting 300 starter" in my Scratch Shared Projects. It allows for more a random assortment blocks, negative numbers, etc.

Once most (or all) of the students have a working program (or you have 5 minutes left), bring them back in to talk more about the power of sorting.

What kinds of things do we sort all the time in our daily lives?

What if you are sorting REALLY HEAVY objects (buckets of sand) instead of just pieces of paper? Would you use a different algorithm? Why?

You can also show them this great visualization of different algorithms: <https://www.toptal.com/developers/sorting-algorithms/>

If you have any questions at all, please feel free to contact me!

Good luck!
John

> **Comments:**
> **username_1**: I love the blindfolded sorting lesson - I might borrow this for HS :)  
> **username_5**: That's where I use it and it works well, even for those with programming eperience.  
> **username_1**: Oh, man. I just found this again. I really need to run the first half of this lesson!  

---

