Using Card Decks in Teaching Computing Concepts or just ways to promote Women in CS

We have asked others for ideas on how to use playing cards to teach CS concepts. If you have an idea send to rodger@cs.duke.edu and we will add your idea here.

Here are some of the topics/ways people have used the cards:

• Arrays
• Classes and Objects
• Encapsulation
• Computational Thinking
• Cryptography
• Mathematics/Probability
• Subsets
• Sorting
• Searching
• Recursion
• Using them to call on students

For more information about getting or printing a deck of notable women in computing cards or a poster see here .

Ways People Use Cards in Teaching

From: Dan Garcia (Berkeley)

Our fabulously popular concurrency without a computer cs unplugged exercise here

From: Briana Morrison (SPSU)

For how I use cards in teaching: Well, I almost always have at least one "card / deck" assignment in my CS1/CS2 classes. Shuffle is a great algorithm for learning about arrays. I also use this big deck of cards that I picked up to illustrate different sorts. The cards go in the tray of the whiteboard and I move them around based on the sorting algorithm. I can also hand out sub-portions of the deck and ask groups of students to also do the sorts.

From: Victor Norman (Calvin)

Project 11 ("Five Card Stud Simulation") has the students analyze the probabilities of getting various poker hands in a 5-card stud poker game.

From: Michael Branton (Stetson)

Note that playing cards are also used in mathematics.

Ali R. Amir-Moez, Limit of a Function and a Card Trick, Mathe- matics Magazine, Vol. 38, No. 4 (Sep., 1965), pp. 191-196.

E.D. Bolker, Gergonne Card Trick, Positional Notation, and Radix Sort, Mathematics Magazine, Vol. 83, No. 1 (February 2010), pp. 46-49.

J. Champanerkar and M. Jani, Stable Fixed Points of Card Trick Functions, 2013, Math arXiv, www.arXiv.org, arXiv:1302.3396[math.HO].

Douglas E. Ensley, Invariants under Group Actions to Amaze Your Friends, Mathematics Magazine, Vol. 72, No. 5 (Dec., 1999), pp. 383-387.

Arne Ledet, Faro Shuffles and the Chinese Remainder Theorem, Mathematics Magazine, Vol. 80, No. 4 (Oct., 2007), pp. 283-289.

Mark A. M. Lynch, Deal Shuffles with an Eight-Card Deck and a Stella Octangula, Teaching Mathematics Applications, Vol. 18, No. 2, (1999), pp. 61-66.

From: Steve Wolfman (UBC)

Besides the obvious ways (e.g., having people do sorting/searching/etc.), I've also used cards now and then for a card trick with some wonderfully deep theoretical content

From: Jim Huggins (Kettering)

I use them in a few ways in our CS2 course ...

1. For linked lists ... usually, I give an assignment where students are required to maintain a linked list in sorted order. (The code given in class and in the textbook adds and removes items at a specified position; they have to figure out how to add in relative order.) For some students who have difficulty visualizing the algorithm, I will take some of the numbered playing cards (2-10) and place them in sorted order on my desk, and then ask them to figure out where another card should be inserted. Usually, that helps them see what kinds of comparisons are needed to insert in-order.

2. For sorting in general ... I will use the numerical playing cards as values to be sorted. This works modestly well for merge sort; I'll take a small number of cards, split the pile in half, hand the two halves to students and ask them to ("recursively") sort the decks, then perform the merge operation live in front of them. It helps that I have a "large" set of playing cards for this demo --- I picked them up at the -- --SIGCSE in Dallas. ("Everything's bigger -- --in Texas ...")

3. I also use playing cards as a sorting dataset for Radix Sort, first sorting on rank and then sorting on suit. I usually only use half the deck for this demo, simply to save time ... so I use the Euchre half of the deck, which includes the face cards.

From: Paul Curzon (qmul)

With Peter McOwan, We've written 2 magic booklets teaching computing using tricks.

Am writing another at the moment

He's also done a similar one with a focus on maths rather than computing but where there are videos of the tricks See here

We've also written up activity sheets for teachers on our Teacher CPD site Teaching London Computing. See here

See Australian Magicians Dream Invisible Palming and The Four Aces

I'm using card tricks to introduce computational thinking in general as well as computing concepts.

You may be less interested in this but weve also written some CS Ed papers on how we use card tricks to teach computing

Paul Curzon and Peter W. McOwan (2013), Teaching Formal Methods Using Magic Tricks, Fun with Formal Methods, A Workshop at the 25th International Conference on Computer Aided Verification, St Petersburg, Russia, July.

Curzon, P. and McOwan P.W. (2008) Engaging with Computer Science through Magic Shows, SIGCSE Bulletin 40 (3), pp179-183. ACM. ITiCSE 2008, The 13th Annual Conference on Innovation and Technology in Computer Science Education, DOI: 10.1145/1597849.1384320

Curzon, P., McOwan P.W., and Black J. (2009) "The magic of HCI: Enthusing kids in playful ways to help solve the Computer Science recruitment problem". Invited Keynote at HCI Educators 2009 - Playing with our Education, Dundee, April 2009.

plus others covering a mixture of magic and other unplugged stuff eg on computational thinking including attached which one Im presenting at WIPSCE next month.

Paul Curzon (2014) Unplugged computational thinking for fun, KEYCIT - Key Competencies in Informatics and ICT, July 1-4, 2014? Potsdam, Germany (Invited Keynote), Edited by Torsten Brinda, Nicholas Reynolds, Ralf Romeike, pp 7-15. paper

Paul Curzon (2013) cs4fn and computational thinking unplugged, Invited keynote. In Proceedings of the 8th Workshop in Primary and Secondary Computing Education (WIPSCE). Denmark, Edited by Michael E. Caspersen, Maria Knobelsdorf and Ralf Romeike. pp47-50, November. ACM

Paul Curzon, Peter W. McOwan, Nicola Plant, Laura R. Meagher (2014) Introducing Teachers to Computational Thinking Using Unplugged Storytelling To appear in the Proceedings of the 9th Workshop in Primary and Secondary Computing Education (WIPSCE). Berlin, November. ACM

From: Kiri L Wagstaff (litech)

I have used playing cards as an excellent tangible device for teaching sorting methods in CS 2. I put students in teams of 2 and gave each team 8 or so cards. I then had them walk through insertion sort, selection sort, merge sort, and quick sort. It seemed to be very effective!

From: "Pollock, Wayne" (hccfl)

Some years ago I purchased some over-sized novelty playing cards from a local magic shop. I use them to teach sorting and sometimes searching, with students holding playing cards acting as an array, and other students acting as the program, with the stipulation they can only ask two "array" students at a time to show their cards, and to ask two "array" students to swap places.

From: Peter Drake (LCLARK)

I regularly use playing cards to explain sorting algorithms, although I use a giant deck (nearly 8.5x11). I use face-up vs face-down to emphasize (a) that the computer can only look at a couple of values at once or (b) some subset of the cards, e.g., the already-sorted region in insertion sort. For recursive sorts, parts of the deck can be handed out to students to demonstrate the running these algorithms in parallel.

From: Stephen Hughes (coe)

I use cards on a Day 1 activity for CS 0 and CS 1. The idea is to get them thinking about describing instructions and then analyzing and classifying their instructions.

I give a deck of cards to groups of three students. They remove a card from the deck and set it aside without looking. One person gives instructions to another in order to find the identity of the missing card (they can only look at the remaining 51 cards). The third person records the instructions. After they complete this, they pass their instructions to another group, which tries to use the instructions to repeat the process. After the second iteration, we have a class discussion that is aimed at bringing out the following:

a) Control Flow --- Their "programs" contain sequential instructions, -- --conditional instructions and repetitive instructions. Students are familiar with using these control flows, but they probably haven't paid much though to the fact that is what they are doing.

b) Level of precision -- some groups assume capabilities of their -- -- "computer" - e.g. it can sort or group. We point out that these are useful abstractions, but not everyone inherently knows how these operations work --- you may need additional instructions to define those operations to a 4 year old (or a computer)

c) Representation and structure- Knowing that there are 4 suits and 13 cards per suit is helpful to solving the problem. Many groups make "piles" make it easier for them solve the problem. Organizing the data in different ways is often the key to answering your questions.

d) There are different solutions that arrive at the same answer. Some solutions may be more efficient than others.

At the close of the activity, I make a point of explaining to the students that they routinely solve complex problems like this. They may not be used to trying to clearly articulate their process in English (native language), but they probably can if they are pressed to do so (and they will get better with practice). As programmers, this is the kind of activity that we will engage in, then we go one step further: we will translate our English (native) solution into a programming language.

I have (anecdotally) found this to be an effective way to introduce programming with a tangible example. Moreover, I find that I can continually come back to this 1st day example throughout the semester. "Remember when you made piles of cards on the first day? Let me show you how to make piles in "

From: Arvind Bhusnurmath (UPENN)

I use them a lot for introducing classes and objects. It also then allows me to do a lot of programming assignments based on that idea.

It helps that I have 2 'interesting' decks. A Seinfeld deck and a Beatles deck. And I hope will soon have a WICS deck.

I was originally inspired by Richard Enbody's collection of Python programming assignments that had solitaire variations. It's amazing how many assignments you can come up with once you have a Card and a Deck class. Of course some games are more fun that others.

From: Andre van der Hoek (UCI)

We developed Problems and Programmers a little over a decade ago:

We continue to receive inquiries for the card deck, etc. While we do not have a physical card deck for sale, we freely distribute the rules, card templates to print, and instructions to anyone.

Simply drop me note, and I will e-mail them to you.

From: Jessica Dickinson Goodman

When I was taking my second semester of Java at Carnegie Mellon I had the task of modeling the Pontifex solitaire cypher from Neal Stephenson's Cryptonomicon during the section on arrays.

From: Kelly Shaw (Univ. of Richmond)

Not necessarily teaching CS, but I use a deck of cards to decide who I will call on in class, and to avoid any biases in how often I call on people, or who I ask the easy or hard questions.

From: Adla Chatila (El Mazraa, Lebanon)

Used two decks to play a memory game. See here

© November 4, 2014, Susan H. Rodger