# CS-oriented Ice-Breaker Games

I will have my new incoming CS freshmen (HS) for a week-long summer orientation in August. The kids don't know each other yet, so Ice Breakers are in order! Has anyone encountered fun, physical CS-themed games for helping kids to loosen up and get to know one another?

Criteria: the students are not required to come in with any background, though they will be learning some very basic programming concepts over the course of the week that we see them. Ideal games would either directly expose kids (in a non-technical way) to CS concepts, or could be referenced later (days, weeks, months, or years) in lessons to help explain concepts down the line.

Answers where you have direct experience with the game (and can vouch that it is fun!) are doubly appreciated.

• Would you be interested in non-physical games too? I have a few activities + materials from a week-long summer orientation for college freshmen, but mostly in a seated group work format with Peer Instruction style discussion.
– nova
Commented Jul 18, 2017 at 15:31
• The SIGCSE mailing list has a current (Aug '22) thread on just this topic and there are a lot of examples there. Commented Aug 22, 2022 at 19:34

Get them to line up (preferably on a wooden gym bench), then get then ask them to get into alphabetical order. You can use this to help learn names, and to introduce sorting algorithms.

I could also recommend CS-unplugged, it is part of the computational thinking, so aimed at very young pupils (primary school < age 11years old), but can also be used with older students.

• Great ideas. The first one also helps the teacher learn the names. Commented Jul 12, 2017 at 22:09
• Also birthdays and home cities. If you have enough students in the class (roughly 25) two of them will likely have the same the same birthday which leads to one kind of interesting conversation, and then sorting by distance gets into another. Commented Jul 13, 2017 at 20:35
• @DaveKaye With 25 pupils you only have a 58% probability of two sharing a birthday. $1-\prod_{i=0}^{25} (1-i/365)$ or 1 - reduce(lambda x, y: x * y, [(1-i/356.0) for i in range(25)]) Commented Jul 14, 2017 at 16:20
• Sounds to me like a great opportunity to discuss the Birthday Problem, no? That's much more my point. Commented Jul 14, 2017 at 16:38
• I sense an opportunity to talk about parallel sorting algorithms here. Commented Aug 25, 2022 at 21:28

David Levine and a few colleagues at St Bonaventure developed what is called the First Day Role Play that sounds like what you want provided that your course will have OOP elements. They have a paper on it in the ACM Digital Library, I believe.

There is also a large movement in Computational Thinking that is directed mostly at youngsters to help them think computationally without programming. Some of their activities might be useful to you. https://www.cs.cmu.edu/~CompThink/

The song/poem There was an old lady who swallowed a fly mentioned in the recursion analogy page is another possibility.

A fun exercise is giving the teacher directions to, say, get to and open the classroom door. Of course, the teacher must act like a computer. My engineering teacher did this and it was rather entertaining because one kid forgot to tell him to stop at one point. Another fun exercise in this vein involves having the students tell you how to make a PB&J.

Another cool thing is having them play with a robot or major project past years have done - that excites people, even if it isn't super CS related, and provides them with a taste of the awesomeness of your class =)

• +1000 for the pbj game. Google "peanut butter jelly instructions challenge" or "exact instructions challenge" for a ton of fun results and videos. Honestly this process of breaking things down into smaller steps is probably the most important skill in programming, so introducing it as early as possible (in a fun way) is a great idea. Commented Jul 18, 2017 at 23:18

Another game that comes to mind is Nim. It has a lot of interesting variations, and I particularly enjoy the subtraction game.

In the subtraction game, you start at N and two players take turns subtracting 1, 2, or 3 from the total. The goal is to force the other player to remove the last number.

For example, you could play against the whole class. Let the students pick a starting number (let's say 11). You take away 2, so the total is 9. The students take away 3, so the total is 6. You take away 1, so the total is 5. Students take away 1, so the total is 4. You take away 3 so the total is 1. The students lose! Play a few rounds, letting the students choose the starting number each time.

There is a trick that makes this game very easy, but it's hard to spot if you've never seen it before. Students will realize that they can't win if it's their turn and they have 5, because no matter what they pick you'll be able to leave them with 1 in your next turn. Can they extrapolate and realize that they can't win if they have 9, because you can always leave them with 5? What number allows you to force them to 9? (Hint: the trick involves modulo.)

I like this game so much because you can use it to talk about basic AI topics. For example, you could start by creating a program that plays against a human player by just choosing randomly.

Or you could take the modulo trick and create a program that plays a perfect game each time. Or you could add variation by adding some randomness to the computer's choices instead of always choosing the correct answer.

A more advanced example is a program that solves this using weighted averages that it adjusts after every game (so it "learns" from experience and thinks about the game in the same way humans do: it can "know" that 5 is bad without "understanding" the underlying trick).

You could then make this AI program face off against the perfect computer player. The weighted average computer will "learn" pretty fast. Compare this to what happens if you make this AI program face off against the randomized computer player. The weighted average program will have a much harder time against the randomized player!

Anyway, Nim is a simple game that you can easily play against students, gives them a fun "ah-ha!" moment, and leads pretty naturally to more advanced topics.

• I have also used Nim as a get-to-know-you activity to good effect. Students were randomly split into groups of 4. Within that group of 4, each possible pair played each other 3 times. I used the version where you draw out tick marks, but the subtraction version seems great too. After everyone played all their rounds, I led a discussion about what students thought was an optimal strategy for the game.
– nova
Commented Jul 19, 2017 at 2:01

The board game "Robo Rally", published by Avalon Hill, is good for getting people to think about simple programming as well as being fun for up to 8 players.

The basic idea is to navigate robots around a factory, with a limited set of instructions, such as move forwards n, rotate left/right etc. There are traps and walls, as well as other robots that you have to contend with.

• Oh, fun! Welcome to Computer Science Educators. I hope we hear more from you going forward!
– Ben I.
Commented Jul 18, 2017 at 11:43

You could have them act out Fizz Buzz.

Players generally sit in a circle. The player designated to go first says the number "1", and each player thenceforth counts one number in turn. However, any number divisible by three is replaced by the word fizz and any divisible by five by the word buzz. Numbers divisible by both become fizz buzz. A player who hesitates or makes a mistake is eliminated from the game.

Make it more interesting by adding rules as you go: multiples of 7 become bang, for example.

This will also allow you to introduce a program that executes Fizz Buzz when you teach about loops.

The ice breaker used in my school is a brainstorming:

Each student throws in something they know about computer science. They each say their names and what they know. It's very important to explain that it's good if some students know some things, but it's not the goal. Make absolutely sure no student feels bad that he\she doesn't know anything about cs.
To do this, you can say "Hey, it's great that you don't have background! Why? because you are here to learn".

This way, students know the names of other students, and also they know names of stuff in computer science. It's introductory in both senses.

It's not so much of a game, but it can be made into one:

1. Each students is assigned an index.
2. Each student gives their name and knowledge $\,\,\,$(does this count as alliterative?)$\,\,\,$
3. A random number generator gives the index of the next student in the "game".
4. repeat steps 2-3 until a fine dough until all students are familiar with each other.

you can mix it up a bit $\,\,\,$(I'm sorry for the cooking recipe jargon in this last part)$\,\,\,$ by changing what students say when their turn comes. They can possibly give their favorite color and something they know about CS. Pairs of <? extends PersonalInfo,? extends CSBackgroundInfo> are usually a good way to go about this.

One activity we did at a training was to come up with an algorithm for passing in papers. Give students a paper with questions about themselves and when it comes time to pass them in tell them you want the papers passed in in such a way that the papers are upside down (to protect privacy) and in a stack on one desk in such a way that when you flip over the final stack they are in the same order as the way the students are currently sitting. Let the students make suggestions on how this can be accomplished.

I am a new CS teacher that utilized some of the suggestions I found here and elsewhere. While my target group is younger than your's (5-7 grade), the following were used and worked anywhere from great to phenomenal.

"Sort Yourselves" were a series of challenges including the sort alphabetically as was mentioned by another in this post. From there I had them sort themselves in a line based on birth month and then group themselves based on favorite color. These last two I had them do without verbally communicating which added a degree of difficulty requiring them to find creative ways to communicate what they needed to.

Another amazing activity, though it can get out of hand depending on the excitability level of your class, is "My Teacher is a Robot". This again is utilized from someone else's suggestion, where you as the teacher act like a robot while the students must give you commands to complete a simple task, such as go and open the classroom door. I had them work as tables and anytime the "stop" command was given, the next table got to have a turn commanding the robot. It was great fun as they found out that giving a robot a simple "walk forward" command can lead to your robot running into walls and knocking over empty chairs while a simple "turn" command can leave the robot spinning in place. Overall, 10/10 great activity to introduce students to coding concepts.

The last activity that I came up with was a game of sharks and minnows. We had just finished a lesson on cyber security and played the game from the perspective of a anti-virus developer, where the shark is the starting anti-virus and the minnows are the viruses. As viruses get caught by the anti-virus, the developer sees the hole were the virus was trying to get through and plugging that hole (where the minnows must stop where they were tagged and in subsequent rounds must try to tag other minnows trying to get by without moving from their spot). Really demonstrates how different viruses may act differently and how as more holes are filled, it becomes harder and harder for viruses to make it through to the computer.

Although I frequently use a variation on the TV show Jeopardy as a review of terminology later in a course, with everyone serving as contestant, it could be adapted to your needs here. One of the things you would like to know is the current state of knowledge of your students.

One of the things you may do when teaching is motivate the study of a new topic by using analogy/metaphor for various technical issues. I envision a Jeopardy game in which the Answers are various social memes and real life situations for which the student "contestants" think up questions. This can be fun, building some sort of "We are the Champions" mindset in the whole class, but also gives you a sense of what will work later and what might not.

Building the software to support such a game is pretty easy as it needn't be very sophisticated. However, thinking up the "Answers" requires time and thought in this case. You might be able to find supporting software for Jeopardy online as it is a fairly commonly used educational tool.