images.jpgTodos los que cursamos una carrera en sistemas (y los que la cursan) afrontamos en nuestras materias de computación una variedad de problemas que ponen a prueba nuestros conocimientos en programación. Recordaremos las famosas torres de Hanoi, los Palíndromos y el Juego de la Vida.

Estos problemas pueden parecernos absurdos ya que sus temáticas o preguntas están alejadas de la vida real. En mi experiencia nunca he tenido que aplicar el algoritmo de Hanoi o usado el manejo de palíndromos para hacer más eficiente un Datawarehouse. Sin embargo estos retos nos ayudan a aprender a programar, a pensar como un programador.

Programar no es simplemente saber la sintaxis o como declarar variables. Un programador debe saber como resolver problemas y como plantearlos utilizando el lenguaje natural y el lenguaje de la computadora. Esta es la importancia de estos problemas ya que nos ayudan a mejorar nuestro razonamiento y ver de diferentes perspectivas un mismo problema.

sphere-small.pngEn la página de Sphere existe un muy buen repositorio de varios miles de problemas clásicos que pueden resolverse con una gran variedad de plataformas (Java, C, PHP, etc) los cuales usan para concursos. Es un recurso muy bueno para practicar nuestras habilidades en los tiempos de ocio, ponernos nuevos retos e incluso entablar competencias. Seas un novato o un experimentado programador encontraras siempre nuevos retos y problemas a resolver.

Lista de problemas clásicos: http://www.spoj.pl/problems/classical/

También les recomiendo la siguiente lectura:

Learning to think like a programmer.