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’, efficiency can be denoted in rather flexible terms. Thus, unlike complexity, which is postponed in the introduction of programming (due to its formal measures), efficiency can be introduced early. Unfortunately, the strong link between efficiency and complexity yields a delayed introduction of efficiency. This is unnecessary and results in reduced student perspective of basic programming considerations. I present an Efficiency-Early Approach in which efficiency 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.