Have students sort playing cards to teach concurrency and illustrate the power of work that happens in parallel using a hands-on activity.

  • Concurrency is the idea that multiple processes can be running at the same time, in parallel.

    • This comes with some serious challenges. Often there is overhead trying to split work of a program into multiple parts and it’s a challenge to ensure the data remain intact (data integrity).

  • Activity Prep:

    • For this activity you’ll need:

      • A Stopwatch.

        • You can use your smartphone.

      • A lot of Decks of cards.

        • For n students you’ll need n decks of cards, one per student.

      • Shuffle the decks of cards.

        • You can have students do this when you pass out the decks.

  • Activity:

    • Give each student a shuffled deck of cards.

    • Tell students to sort the deck of cards their own as quickly on your signal.

      • Give the class a consistent order to sort the cards in so everyone sorts them the same way.

        • The order of sorting doesn’t matter so long as the class is consistent.

        • One ordering is to sort by number and then by suit.

          • Order of Suits: spades, clubs, diamonds, hearts

          • On Top: ace of spades, clubs, diamonds, hearts

          • 2 of spades, clubs, diamonds, hearts

          • ….

          • Last Card bottom: king of hearts

      • Time this activity using your stopwatch.

        • Do you best to keep track of as many times as possible.

        • Record the best times on the board so everyone in class can see.

          • If there are multiple sessions of each class, you can leave the fastest times on the board and have the classes compete for the fastest time.

    • GIve students the signal by saying "Go!"

    • After each person sorts a deck, compare the times with the class.

      • Discuss strategies for how different students sorted the deck. What worked best?

    • Next, break students into pairs, remove half the decks, and have students thoroughly shuffle the remaining decks.

    • Tell students they will be sorting again in groups with the goal of besting the previous times.

    • GIve students the signal by saying "Go!"

      • Make sure to record as many times, including the best time, as you can.

    • After the pairs person sorts a deck, ask students if they did anything differently as a group of two.

      • Compare the new times with the class.

    • After the groups of two have finished, repeat the same process but in groups of four.

      • Remove half the remaining decks and reshuffle the cards.

    • If you have enough time, repeat the same process for groups of 8 and groups of 16. After each round, remember to discuss if any strategies changed.

  • Discussion Topics:

    • Usually around 8 students, most people will realize there’s a big problem with concurrency!

      • Too many cooks in the kitchen makes work harder for everyone, and can slow things down.

    • Discuss with students, how writing parallelized programs can be harder than writing a single piece of code which does everything in order.

    • Extra: This can segue into introducing and discussing an interesting law of computer science called Amdahl’s law.

More about this tip

External Source

Tip-A-Thon submission from Micheal Ball and Lauren Mock.