“Los algoritmos son fundamentales para las ciencias de la computación y la ingeniería de software. En el mundo real, el rendimiento de cualquier sistema software depende de: (1) la selección de algoritmos y (2) la idoneidad y la eficiencia de varias capas de implementación. Por lo tanto, el buen diseño de algoritmos es crusial para el rendimiento de todos los sistemas de software. Además, el estudio de algoritmos proporciona una idea de la naturaleza intrínseca del problema, así como las posibles técnicas de solución independientes del lenguaje de programación, el paradigma de programación, el hardware de la computadora o cualquier otro aspecto de implementación”. (ACM Computing Curricula 2013).