Overview

C-jump is a ski and snowboard racing game, designed to make students experience
dynamics of a programming language. Players learn bits of programming by
looking at the computer program and make decisions about the outcome of
particular statements on the board.

Humans learn by doing. Book-reading and class-taking helps. However, having
some understanding beforehand makes it easier to follow. Playing c-jump
helps to memorize the big picture, so that students can start reading books
about programming languages and understand the idea much quicker. By moving
around the board, entering loops, branching under conditional and return
statements, the players gain physical experience of a complete program.

Games are fun, because they begin with a mystery. You think it should do
something, but instead it does something else. In software world, every line of
code in a computer program may look confusing to a beginner programmer.
Beginners don't have the vision they will develop later to see true program
dimensions, such as the space of executed lines, the data structure, the memory
management, the interaction with foreign code, the code that is risky, and the
code that is simple.

C-jump puts a non-programmer in a similar position: players don't
know what return is, or what the arithmetic statements are.
However, middle and high school students will exercise their own judgment and
assign their own meaning to the code presented by c-jump game
board. Players will learn bits of programming by looking at the actual
programming language code and make decisions about the outcome of particular
statements. Playing with multiple pieces enhances this experience, as players
will have ability to choose a better alternative for their moves.

C-jump puts players in realm of experimentation, and then makes
them develop judgment through experience of playing.

Materials And
Supplies

Class set of c-jump board games. One game accommodates 2 to 4
students.

Tutorial Lesson One

Introduction to basic rules of c-jump

Prior to playing the game, an instructor should introduce basic
c-jump rules to the students. The outline presented here
follows the order of lessons in
C-jump Board Game Virtual Tour . This interactive tutorial
animates examples of various game situations on c-jump board. To
let students see the animations, use an overhead projector or a classroom TV.

The teacher begins this tutorial by opening
How To Play section to cover the basic rules:

Spaces on c-jump game board are shown as squares.

Each square has a statement of a rule, borrowed from an actual programming
language.

Square
int x; creates
integer variable x.

In the game, x represents number rolled on the die. For example, if player
rolls 5, then x becomes equal to 5.

All computer programs have a function named main.

In the game, square
int main(&nbsp)
represents the blue ski trail on the board.

To begin the game, skiers (colored pawns)
line up at the
/* START */ location.

In the game, location
int main( )
provides a name to the blue ski trail on the board.

Blue ski trail runs continuously from
/* START */ to
/* FINISH */ . It is the longest path in the game.

From
int main( )
square the skier
moves downhill according to the number of steps rolled on the die.

Student Activity
One

Playing c-jump for the first time

The Task:

To become familiar with c-jump rules and the game board.

The Process:

Divide students into groups of 3 to 4 players. Each student chooses the color
of the game piece. For simplicity, students should begin their first game using
one skier for each player. Allow each group to choose a volunteer student to
look up c-jump rules during the game.

Student Activity
Two

Playing c-jump with two pieces

The Task:

At this stage students can start playing with multiple skiers. With two skiers
of the same color, players can choose which of the skiers to move. Remind the
students that it is best to keep alternating the movement of both skiers, thus
reserving the right of better choice for the move for as long as possible.

The Process:

Repeat another game session with two skiers per player. Let students verify
correctness of each others' moves according to the rules of the arithmetic
statements.

The Grading:

A+

After the game each student can make either brief oral presentation, or submit
a short written paragraph about arithmetic calculation required by a particular
move and its impact on player's experience.

Students are graded on accuracy of their understanding of c-jump rules
related to the arithmetic calculations.

Tutorial Lesson
Seven

An overview of the goto statement

jump: is a label that gives the name to a particular
location on the board.

Labels allow goto
statements to point to various places in a computer program.

From either location, the skier
moves according to the number rolled on the die.

Programmers avoid using goto statement in their work, since
programs would quickly become hard to understand and maintain. In the game, the
goto statement changes position of your skier from better to
worse, so you should avoid it, too!

Although goto statements are rare in modern programs, they
still have their use. In some cases, they can increase the speed of execution,
which is important for computer hardware. In other cases, goto
can simplify a way of exiting from some deeply nested loops, for example, if a
critical error occurs.

Tutorial Lesson
Eight

Open Discussion About The Game

Playing a game with friends brings up the subject of teamwork. As a team, we
must

Respect every person's time and balance it against our own.

Your opponents contribute an automatic quality assurance by watching you play
by the rules.

Multiple players with multiple pieces bring concurrency to the game. Players
that keep moving one piece soon discover that they have to implement better
scheduling and synchronization to the algorithm of moving the skiers. This
reminds me of the deadlock and starvation. Deadlock is the inability to proceed
because of improper synchronization or resource demands. Starvation is the
failure to schedule a component properly.

Concurrency leads to performance. Performance is a part of usability, and often
it must eventually be considered more carefully. The key to improving
performance of a very complicated system is to analyze it well enough to find
the bottlenecks.

Conclusion

What software professionals do is not for everybody. You should go into
something you dream about and you love, because you will learn it much quicker.
You start small and then spend lifetime learning.

Unfortunately, people often misunderstand computer science as dry and
impersonal area, requiring only technical skills. Contrary to that, computer
science is not just about logical thinking. It is true that computers work
according to precise rules. However, they consist of many pieces. The challenge
lies in building and combining things together, which takes a lot of
creativity. The pieces that don't exist must be designed, which requires
innovation. Assembling the whole system needs teamwork. This process is as
creative and human as writing poetry or composing music!