¿Qué consejo le darías a un chico que quiere avanzar desesperadamente en sus habilidades de diseño de algoritmos, pero no es un genio matemático en particular?

He leído La mente de Barbara Oakley para los números.
http://www.goodreads.com/book/sh…
Donde ella destila los pasos que le llevó ir de una escuela de idiomas a una profesora de ingeniería

Recorre muchos mitos y sugerencias prácticas para mejorar el pensamiento matemático.

  • No trates de perseguir a los caballos de raza intelectual. No aprenderás nada pretendiendo ir a su ritmo.
  • Volver a leer el material no significa que realmente lo entiendas
  • Programar tiempo de estudio, usar intervalos.
  • Descansa a menudo para entrar en modo difuso para digerir la información.
  • Haz el mismo problema 5 veces para entender las variaciones.

Esencialmente, deberás tomarte el tiempo de volver a cablear tu cerebro para entender intuitivamente las matemáticas; esto también se aplicará a los algoritmos también.

Para un enfoque más directo, puede comenzar a practicar en Hacker Rank, TopCoder, Codility y varios otros sitios web de codificación en línea.

Tómalo lento, respira, y absorbe. Puedes hacerlo.

Los algoritmos no son matemáticas. Un algoritmo puede realizar matemáticas una y otra vez, pero no es matemática como lo es la matemática pura. La mayoría, si no todos, los programadores escriben algoritmos todo el tiempo, incluso si no se dan cuenta.

No soy matemático, pero puedo escribir un código bastante bueno. No necesito descifrar las matemáticas, para eso tenemos matemáticos. Simplemente implementamos sus cálculos matemáticos en nuestro código para hacer que poner los números y obtener las respuestas sea más fácil para cualquier persona.

Piénselo de esta manera, puede usar un lápiz y un papel para calcular la conversión de centígrados a grados Fahrenheit, tal vez incluso encuentre una forma más rápida de hacerlo. O puede escribir un valor en un cuadro de texto en una pantalla, presionar un botón y obtener la respuesta. La matemática ya existe. Solo debes ponerlo en el programa y rodearlo de “Bells and whistles”.

Recomendaría trabajar en el libro de algoritmos de Robert Sedgwick (creo que ahora está en su cuarta edición). Mastering Algorithms de Loudon en C es otro buen recurso.

No puede aprender cómo funcionan los algoritmos o apreciar sus ventajas y desventajas sin programar realmente al menos algunos de ellos, depurándolos, etc. Por lo tanto, no se limite a solo leer libros … aplique lo que está leyendo, haga que funcione. , y ver como se comporta.