
Linda is currently employed as a software engineer for
SofTech, Inc. She has been in the EdTec program for longer
than she cares to admit, and hopes to graduate next year.
Instructional Objective
For more advanced learners, the following additional objectives would be:
This card game would be used by the students after some basic C language syntax has been introduced. It is intended to be used during lab time or outside of class for practice and/or remediation purposes. The students may start with a "subset" of the cards, with more cards being introduced as more topics are covered. This subset of cards is simply the deck of cards, with some of the cards removed by either the instructor or the learners. For example, if "for loops" haven't been discussed, the "for" cards may be removed. The deck is designed to be extremely adaptable in this way.
A card game is useful for this type of content for several reasons. The subject matter is rather dry, and the elements of play and competition provided by a game could make the task more palatable, while providing necessary practice. The learners would have incentive to pay attention to the picayune details of syntax in order to ensure that their opponents aren't trying to slide by with an illegal statement. The practice can take place when the computer isn't available, and can help the students reduce their reliance on the compiler to find syntax errors for them, thus reducing the number of compiler passes needed and increasing productivity.
First, choose a dealer.
Variation To keep the game interesting for more advanced learners, the players might also pay attention to the logic of the statements; 10 points scored by the first player (including the offending player) who points out legal but dangerous or inherently useless statements.
Card Design Examples of various card types are shown below. Card a, the semicolon, is a typical example of the one element card. Card b, the parenthesis, is an example of a card which may be used right side up or upside down, to form either the left or right parenthesis. Card c, the numeral 1, may be used as is for an integer value, or combined with decimals and other numerals to make float values. It may also be used as a character value, or as part of a string. It doesn't matter, so long as the context supports its meaning. Card d stands for any type of variable, while Card e may be used only for an integer variable. Card f is an example of a card which combines two elements that are commonly used together. Each card, simple or complex, is worth the same number of points.

Deck Design Each card displays on or more elements which can be combined with other cards to form complete C statements. As shown above, some cards may represent the name of a variable or function, or a combination of an identifier with customary accompanying punctuation, while other cards may simply display one character or numeral. Each card counts the same as every other, no matter what is displayed on it. The more complex cards may foster the construction of more elaborate statements, while the simpler cards are more versatile.
The first prototype deck lacked sufficient numbers of semicolons, parentheses, and numbers, making valid combinations overly difficult to create. Several trials are needed to determine the optimum balance of card elements to keep the game from being too easy or too difficult. Another issue is the possibility of using a subset of the deck, editing out concepts which haven't yet been discussed in class. This would make the game easier in another way, by making the proportion of supporting cards (semicolons, etc.) larger in proportion to the total number of cards. No specific subsets are planned by the designer, it is left entirely up to the users (instructor or players) to determine a meaningful deck for their game, dependent on the knowledge level of the learners.
A likely addition to the game is a set of card racks to hold the players' hands. The cards were designed with the values displayed in the corners to facilitate viewing; however, with up to 20 cards in a hand it's a challenge just to hold the cards, let alone view them all at once. Another possibility is that the players could lay down their statements once they are completed rather than waiting until the end of the hand.