Computer Science: It's About Analytical Thinking, not Programming!

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