What to Teach
Computer science education
at the primary school level can run the gamut from short supplementary
lessons designed to support coursework in math or science to full, independent
curricula that cover the basics of programming and other topics. While
college and high schoollevel courses can move at a pace sufficient
to cover several topics during one semester, elementary and middle school
teachers must pick and choose topics and focuses that best support their
overall teaching goals. Below are some basic models and their implications
for classroom activities:
 Teaching computer science
to support math or problemsolving curricula: With this focus,
teachers are most likely to be attracted to programming languages
and teaching tools that are easily to learn. This way, students can
get started with the classroom activity as soon as possible, without
getting bogged down in syntax or logic. Programming languages such
as Logo, which have very small instruction
sets and immediate visual feedback, are generally the tools of choice
for these sorts of activities. Logo widely has been used to support
basic geometry instruction; since students are forced to construct
rather than recognize geometric figures, Logo provides an alternative
way to approach geometry that can help children understand and remember
it better. When teachers are seeking to support general problemsolving
skills, there are even more options available. For instance, Alice
provides a completelyvisual programming environment, in which students
instruct virtual characters to be have without writing any code explicitly.
 Teaching computer science
to encourage algorithmic thinking: Here, teachers may be willing
to take the time to teach a more complex instruction set so that students
can make more expressive programs. At the most basic level, simply
adding branches and loops significantly augments the types of problems
students can approach. At the more advanced level, techniques like
recursion empower students to solve almost any simple programming
problem. The challenge for the teacher in this situation is to find
the appropriate set of features for the level of students they are
addressing. For instance, recursion clearly is not appropriate for
the typical class of elementary school students. On the other hand,
middle school students are likely to desire more powerful tools than
the Logo turtle, even if it technically supports several advanced
programming constructs.
Interestingly, it is certainly possible to underestimate students
when choosing an appropriate set of programming features. For instance,
one
study found that middle school students actually may be more attracted
to computer science when learning about open research questions rather
than basic syntax and algorithmic constructs.
 Teaching computer science
to encourage underrepresented groups of students to consider the field:
Perhaps the most research in early computer
science education has been put into helping encourage young women
and minorities to consider computer science. Since many students develop
their preconceived notions about computer science by the time they
reach high school (Potell 3), it is important to convince them to
consider the field before they reach high school. Typical outreach
programs with this goal tend to provide focused experiences where
members of the target audience are surrounded by their peers. Another
important consideration here is the mode of learning. While boys may
be attracted to designing video games, girls may be more interested
in groupwork or artistic concerns; these sorts of facts can help tailor
the curriculum to its target audience.
 Teaching programming
as part of a larger computing curriculum: One of the best ways
to show students how computers work is to give them closer contact
with the machinery behind their functioning than highlevel applications
can provide. In this case, the programming tools may be more basic
to revel the complexity of the computer as a system. For younger students,
BASIC can provide this sort of experience without the complication
of an "industriallevel" language; at this level, this goal
is very closely related to teaching students about the algorithmic
thought process, since algorithms form the basis for most computing
machinery. At other levels, the tools used can become more complex.
For instance, the Spim
MIPS32 simulator can teach late middle school and early high school
students the basics of assembly language programming without the complication
of an actual compiler; in the process, they gain a basic understanding
of the microprocessor system that powers computers.
