**Matthias Felleisen**

A **good** introductory course on computer science fosters a number of
important skills. Most importantly, it re-enforces basic concepts of
arithmetic and algebra. To create programs, a student must understand how a
computation works, and the easiest way to understand a computation is
through the laws of arithmetic and algebra. After all, arithmetic and
algebra are mathematical ways to study and to practice computation by
hand.

In addition, programming strengthens those analytical skills that word problems in algebra try to instill in students. To create programs, students must learn to read and understand a problem statement and to extract the essential information it provides. The information must be analyzed, categorized, and used to design a program.

Finally, when a student writes a computer program, the student
*creates* something useful. The computer provides immediate feedback
on certain aspects of the program, in particular, its correctness.

Unfortunately, traditional programming courses (based on Pascal or now C++) over-emphasize the grammatical correctness of programs over their contents. Our Scheme-based course avoids this mistake. The programs that students write are almost identical to the algebraic expressions that determine the core of the computational process; no superfluous syntax is required. Furthermore, students can evaluate simple Scheme expressions, function applications, and entire programs in an interactive environment, an experimental mode that greatly encourages explorations. In the end, students feel good about creating something and learn more about algebra without thinking of it as algebra.

In summary, **good** programming helps students re-enforce many
arithmetic and algebraic skills and shows students that arithmetic and
algebra are useful, creative, and applied disciplines.
Read on to find out more about the nature of programming.

PLT / scheme@cs.rice.edu

Last modified at Tuesday, 12-Oct-1999 11:14:20 CDT