Early algorithm efficiency with design patterns

David Ginat*

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review


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.

Original languageEnglish
Pages (from-to)89-109
Number of pages21
JournalInternational Journal of Phytoremediation
Issue number1
StatePublished - 2001


Dive into the research topics of 'Early algorithm efficiency with design patterns'. Together they form a unique fingerprint.

Cite this