Abstract

Algorithm efficiency is a fundamental computer science concept encapsulating the core topic of algorithm complexity. While complexity is expressed in formal measures such as `Big O', ef®ciency can be denoted in rather ¯exible terms. Thus, unlike complexity, which is postponed in the introduction of programming (due to its formal measures), ef®ciency can be introduced early. Unfortunately, the strong link between ef®ciency and complexity yields a delayed introduction of ef®ciency. This is unnecessary and results in reduced student perspective of basic programming considerations. I present an Ef®ciency-Early Approach in which ef®ciency of algorithms is introduced early, gradually, using simple measuring terms. The approach emphasizes capitalization on problem characteristics and utilization of design patterns. I illustrate the approach with gradually-more-subtle algorithmic tasks, and assess different levels of their solutions. The more advanced tasks are colorful and rather unfamiliar. The different solution levels represent results I experienced in implementing the approach with highschool computer science students. The implementation raised student awareness of problem characteristics, augmented their design pattern repertoires, and enhanced their efficiency perspective. Improvement in mathematical insight was experienced with the average and better students.

Links and resources

Tags