Limbic~Region has asked for the wisdom of the Perl Monks concerning the following question:

Tomorrow I will be doing a 30 minute presentation to second grade classrooms by request as a follow-up to career day. One of the key components requested was to involve the students and have them build something hands on. At the last minute, I was told that the computer lab was no longer available as I was going to have them build a small program in Scratch.

I am still going to use the classroom computer with overhead projector for most of the presentation to include showing off Scratch. I am struggling with what to do with the hands on portion (approximately 10 minutes).

One idea I have is for them perform a bubble sort based on their heights. I am concerned about time as well as individuals moving when it is not their turn to swap.

Another idea I had would be for them to do something like a Caesar Cipher where they reveal a secret message by following a simple algorithm (pen and paper).

My OT question to you is: If you had around 10 minutes to give second grade students a hint at computer programming without them having access to a computer, what would you do?

Update: It was a smashing success. I had 30 minutes per class with 5 classes total. The format was as follows:

  1. Short presentation
    1. Why we are here (S.T.E.A.M School = Science, Technology, Engineering Arts and Mathematics)
    2. What I will be talking about = Computer/Software Engineering
    3. What makes a good engineer (math, problem solving, creative thinking, curiosity, etc)
  2. Short Scratch demonstration where I built a program live in front of them (rocket ship that chases the mouse around the screen with an outerspace background and plays a "ray-gun" sound when it catches it
  3. Sandwich demonstration (just jelly since I was concerned about potential allergies).
  4. Live bubble sort demonstration
  5. Question and Answers
  6. Caesar Cipher and Binary Search homework
Now, you are probably thinking how did I cram all of that in 30 minutes with second graders. First, for the Sandwich demonstration I explained that they would be programming me but that if they were loud and disruptive, the program would get confused and crash. Second, I told them that they could only provide an instruction if they raised their hands and the teacher called on them. No one completed a sandwich. For the bubble sort, I had the teacher select 5 to 6 students and had them line up single file. I used an eraser as a token to indicate who was in conrol of determining swaps. I had them each hold a piece of paper with a very large digit 1 - 9 on it. I feel kind of bad about the Caesar Cipher homework though - the secret message that they needed to reveal was "this was fun". Reminds me of the movie A Christmas Story and being reminded to drink Ovaltine.

Cheers - L~R

  • Comment on OT: Teaching Second Graders Programming

Replies are listed 'Best First'.
Re: OT: Teaching Second Graders Programming
by hominid (Priest) on Mar 27, 2014 at 13:41 UTC
    Peanut butter and jelly sandwich. Get a loaf of bread, a butter knife, a jar of peanut butter and a jar of your favorite jelly. Place them on a table, unopened, and ask the class to instruct you how to make a PBJ. Follow their instructions literally, as a computer would, and much hilarity will ensue. Hopefully, it will help them understand the idea that computer don't "know" anything except what they are told.
      I love it. Unless someone suggests something better, I will probably go with this for during the presentation and include the "secret message" in the hand-outs for working on later. Depending on how many adult/teacher aids are in the class with me, I may also try the live bubble sort but breaking down the class into groups so there is no more than 6 in each group.

      Cheers - L~R

        If you do have the groups sorted and there's still some time left, you may merge-sort them together :-)

        Enoch was right!
        Enjoy the last years of Rome.

Re: OT: Teaching Second Graders Programming
by davies (Prior) on Mar 27, 2014 at 13:45 UTC

    Get them to describe everyday tasks. Examples:

    Cross the road? Stop at the kerb, look both ways, then cross. You just got killed. You looked, but your actions did not take account of what you saw.

    Make a cup of coffee? Fill the kettle (the kettle's already full of air) with water (from the washing up - it'll make you ill) etc.

    Do one with the whole class, then divide them into groups each with a different task and get them to "pair programme" it. 3 minutes on the class task, 3 minutes in groups then 4 minutes presenting solutions. This will give them some feel for what real programmers have to look out for.


    John Davies

    Update: I see hominid came up with a very similar idea while I was typing mine.

    Update 2: Please let us know what you tried & how it went.

      That reminds me of someone who habitually instructed their young child before mealtimes to "wash your hands in the downstairs toilet" referring, of course, to the room and the washbasin in it. Imagine their horror after several months of this when they noticed their little darling literally using the water in the toilet bowl to wash their hands!

      A lovely illustration of "I know what I mean, why don't you?" :-)



        I heard or read a similar story about some schoolgirls who used to put on lipstick & then kiss the mirror in the toilet, leaving it covered with lipstick for the cleaner to remove. After several useless appeals to the girls, a teacher took them down to the toilet so that they could see just how much work it was for the cleaner. The cleaner had to dip the mop in the toilet bowl many, many times to get the lipstick first off the mirror onto the mop and then off the mop.

        History does not record whether the girls stopped because of the hard work they caused or because of the source of the water for the mop. But they stopped!


        John Davies

Re: OT: Teaching Second Graders Programming
by ChuckularOne (Prior) on Mar 27, 2014 at 14:25 UTC
    If you go with the PB&J example (and you should!) You should make up little blank signs to be your "Variable Names"

    That way you can label the knife "Knife" the bread "Bread" (here's where it'll start causing errors) Name the slices of bread "Slice_1" and "Slice_2" so that when the kids shout out "Put peanut butter on the bread!" you can smear peanut butter on the bag of bread. :-)

Re: OT: Teaching Second Graders Programming
by davido (Cardinal) on Mar 27, 2014 at 16:16 UTC

    I recently gave a talk at DigiForge Student Tech Conference on "How to Think Like a Programmer". It was an hour presentation. About half of it was spent on examining the number guessing game: "I'm thinking of a number between 1 and 100." ..."Higher"... "Lower"...

    Some of the kids had good intuition on efficient mental strategies that amounted to divide and conquer (a Binary search). Some had vague intuition that it might be a good idea to start in the middle and work upward or downward. Some took a fully linear approach. We went on to compare, and then to show how instead of solving the number guessing game, by providing a means to compare any two things in a given list, we can create a generalized algorithm, call it a Binary Search, and stop worrying about the details of how it works, paying attention only to whether the input is ordered, and whether we can tell it how to compare elements.

    The talk got some good reviews, and people remained engaged throughout. Perhaps you could do the ten-minute version of the number guessing game.


Re: OT: Teaching Second Graders Programming
by Ratazong (Monsignor) on Mar 27, 2014 at 13:07 UTC

    Hi Limbic~Region!

    Sounds like a fun project, even if 10 minutes hands-on is very short.

    I agree with the risk of chaos when the whole class should do a "live bubble-sort". I guess deciffering some text makes more sense, however a Caesar-Cipher won't force the students to sequentially perform steps (to simulate that they are a computer) - probably they will do some "random parallel" execution, by substituting the same character more than once if it occures several times in the text, and they will probably also guess some characters based on the context.

    Do you know the board-game Robbo Rally? There you have to move a robot through a maze, having some programming-cards like "turn left 90°", "go forward 3 steps" or "go backward 1 step". The maze itself has some fields that influence the robots, e.g. walls, holes or conveyor-belts (moving the robot when it lands there). Most fun (when playing) is however that all players do the programming for the next 5 steps at the same time - and that your planned paths may be influenced by other robots pushing you out of the way.

    For the course, you could have a simple board and a set of about 8 commands for each student. Then you form teams of two: in the first step, both "write" a program with 5 of the 8 cards. Afterwards they simulate the program of the other. You might want to set a goal and evaluate who got nearest to it.

    I have however no experience with using this idea in a training, so I don't know if it is too complex (or too easy). You probably need some time for experimenting yourself in addition in producing the course-material. On the other hand, it seems to fit nicely to the language scratch you want to show.

    Good luck and much fun with your training!


      Thanks. I think Robbo Rally would be great but even if I used the entire time slot, I don't think it would work. I said "something like a Caeser Cypher" because I wouldn't want the algorithm to always be the same single operation. I was thinking about making the letters different colors as well as inscribing them in different shapes. So each letter required going through a short algorithm with conditional branches (if green, add 3 to the number of places in the shift).

      Cheers - L~R

Re: OT: Teaching Second Graders Programming
by GotToBTru (Prior) on Mar 27, 2014 at 14:55 UTC

    Bubble sort is clever .. but as a former shortest kid in the class, sorting by height can be uncomfortable. Possibly for the tallest kid too, if a girl. The alphabetical order of their last names is very familiar to them; for interest purposes, perhaps sort on first names or last letter of name.

      The idea was to - at the end, ask them "what if we weren't sorting based on height, what if we were sorting based on age or name - would it still work"? To get them to explore the idea of re-usable algorithms. I get the whole height thing being self-concious. Instead, what I would likely do is have them hold a sign with a number on it. I plan on doing the "make a sandwich" experiment as my first option but fall back to this if there are any severe nut allergies.

      Cheers - L~R

Re: OT: Teaching Second Graders Programming
by ambrus (Abbot) on Mar 27, 2014 at 20:16 UTC
Re: OT: Teaching Second Graders Programming
by karlgoethebier (Abbot) on Mar 27, 2014 at 18:55 UTC
Re: OT: Teaching Second Graders Programming
by ambrus (Abbot) on Mar 27, 2014 at 21:46 UTC

    Be careful with Caesar chipher or with comparing the children by their names. Both of those work only if the kids know the order of letters in the alphabet well. I don't think that's a given for second grade children. Heck, I've even seen a few adults have problem with it.

      Both of those work only if the kids know the order of letters in the alphabet well.

      or they can just sing the song every time to figure out the order ;)

        It's not so simple. Even if you have learnt the alphabet song, the idea of sorting words alphabetically is not obvious, it's something we learn in school.

        There are, in fact, two non-obvious ideas here.

        The second idea is lexicographic sorting, which means that if two children share the first letter of their name, you compare them using their second letter, then their third letter. Sharing first two letters of names will very likely occur in a classroom of students. Even if it's obvious now, it took hundreds of years for people to figure this trick for sorting long lists of names.

        The first idea is sorting a list in first place. This is obvious for our generations, because we have searched words in paper dictionaries and encyclopedias and phone books and indexes a lot, so we know it's easier to find a word in a sorted list. But I think this idea might not be obvious to a child today, when computers can find words in a book for you, can search names in a electronic phonebook or dictionary, or even just words in a list of entries you write. A second year child might never have used a paper dictionary himself, and have never had to find a book on a large row of library shelves with books sorted alphabetically by their author. (Even I have used the help of librarians and electronic catalogs so much that it wasn't until a few years ago when I first used paper catalog slips, and that I have seen a library shelf sorted by catalog numbers as opposed to alphabetized or Dewey descriptor.)

        Please don't take this as a sign of generational gap. I think even in our generation a second year child might not have internalized how sorting works. It's one of the useful things we learn in school.

Re: OT: Teaching Second Graders Programming
by Not_a_Number (Prior) on Mar 29, 2014 at 18:40 UTC

    (Two days later) So, how did it go?

    I'm sure I'm not the only one who would like to know...

      It was a smashing success. I will leave myself a note to update this with more details tomorrow as I am currently neck deep in 6502 Assembler. *Update* See root thread for the update as I am sure more people will be able to see it there.

      Cheers - L~R

Re: OT: Teaching Second Graders Programming
by karlgoethebier (Abbot) on Mar 28, 2014 at 19:44 UTC
Re: OT: Teaching Second Graders Programming
by sundialsvc4 (Abbot) on Mar 27, 2014 at 13:18 UTC
      What are you talking about? I am pretty sure I am qualified to know what visual means to second grade given my progeny. Standing up and looking at the person in front of them to determine if they are taller and swapping places with them is very visual and interactive.

      As far as your link goes - how do you propose 20 students simultaneously do something visually with it given they have no access to a computer in the span of about 10 minutes?

      Cheers - L~R