4
$\begingroup$

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.

$\endgroup$
4
  • $\begingroup$ We're currently talking about your question in chat - sounds like you're in a rough spot! Come by and I will try to help you brainstorm $\endgroup$
    – Ben I.
    Commented Jun 14, 2017 at 18:10
  • 1
    $\begingroup$ What aspect of computational thinking are you going to focus on in the first part of the lesson? $\endgroup$
    – pddring
    Commented Jun 14, 2017 at 18:15
  • $\begingroup$ What are some things that you're thinking about for the second part? $\endgroup$
    – thesecretmaster
    Commented Jun 14, 2017 at 18:20
  • $\begingroup$ Do you have any idea what technologies the students will have access to? Scratch? Python/IDLE? A particular IDE? Greenfoot or BlueJ? $\endgroup$
    – Peter
    Commented Jun 15, 2017 at 1:49

1 Answer 1

7
$\begingroup$

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

$\endgroup$
3
  • $\begingroup$ I love the blindfolded sorting lesson - I might borrow this for HS :) $\endgroup$
    – Ben I.
    Commented Jun 15, 2017 at 12:17
  • $\begingroup$ That's where I use it and it works well, even for those with programming eperience. $\endgroup$ Commented Jun 15, 2017 at 20:29
  • $\begingroup$ Oh, man. I just found this again. I really need to run the first half of this lesson! $\endgroup$
    – Ben I.
    Commented Nov 6, 2017 at 20:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.