¿De dónde debería comenzar a aprender el algoritmo? ¿Debería unirme a uno de los MOOC disponibles o leer libros como ‘Introducción a los algoritmos’?

Si prefiere ver tutoriales en video, le recomiendo estos tutoriales, cualquiera de ellos lo ayudará a:
Diseño y análisis de algoritmos por Stanford:
Parte 1: Algoritmos: Diseño y Análisis, Parte 1
Parte 2 : Algoritmos: Diseño y Análisis, Parte 2

Introducción a los algoritmos del MIT:
Introducción a los algoritmos (SMA 5503)

Si prefiere leer libros, le recomiendo cualquiera de estos libros:

CLRS: Introducción a los algoritmos, 3a edición (MIT Press): Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: 9780262033848: Amazon.com: Libros

Algoritmos desbloqueados: Algoritmos desbloqueados (MIT Press): Thomas H. Cormen: 9780262518802: Amazon.com: Libros

Programación competitiva 3: Programación competitiva, 3ra edición: Steven Halim: Amazon.com: Libros

Creo que el primer y el segundo libro están disponibles gratis en línea, pero el tercero no es gratis, puedes comprarlo o puedes buscar la segunda edición, creo que es gratis, pero ten cuidado de que la tercera edición tiene muchas adiciones que son geniales.

Personalmente, yo tampoco diría. El mantra de “algoritmos y estructuras de datos” está sobrevalorado. Algoritmo es otra palabra para fórmula, método o procedimiento, y los interesantes tienden a ser específicos del dominio. (Y no nos olvidemos de la heurística: ¡antes de comenzar a estudiar algoritmos, aprenda la diferencia entre un algoritmo y una heurística!).

Los algoritmos básicos (p. Ej., Los tipos) son fáciles y están bien documentados, y generalmente solo los busca en una referencia, utiliza una construcción de lenguaje de programación o una función de biblioteca.

Lo que es realmente importante es aprender a encontrar o DESARROLLAR algoritmos / heurísticos específicos para el problema en el que está trabajando, y eso se trata de experiencia en el tema y matemáticas.

Si está creando una hoja de cálculo financiera, necesita saber cosas como los cálculos de intereses, el valor actual neto y demás. Si está desarrollando un sistema de despacho asistido por computadora, entonces necesita saber sobre cosas como los algoritmos de programación y enrutamiento (¿puede decir “problema de vendedor ambulante”?).

(Cuando se trata de estructuras de datos, más allá de los elementos básicos como átomos, listas, árboles, matrices y matrices, te interesa el diseño de bases de datos, y lo que realmente importa es la estructura inherente de los datos con los que estás trabajando, los modelos desea construir y las formas en que desea analizar los datos. Nuevamente, estamos hablando de temas y matemáticas).

Francamente, no estoy muy seguro de cómo aprender estas cosas. Es más algo que elige como parte de una ingeniería, finanzas, negocios o cualquier currículum, cómo resolver clases de problemas de ingeniería o problemas comerciales, o diseñar un flujo de trabajo (en el sentido industrial), y luego desglosarlo en representaciones de información, flujos de datos y trabajo paso a paso. El proceso no es tan diferente si su producto final es un formulario de varias partes y cómo fluye de un escritorio a otro, o un sistema computarizado de procesamiento de pedidos.

Claro, hay algunos conceptos básicos para aprender, como los diferentes tipos de clases y cómo optimizar el rendimiento en varias líneas, pero diría que comience con el tema. Si te gustan las finanzas, aprende sobre algoritmos financieros. Si te interesan los juegos, aprende sobre los motores de física y los algoritmos relacionados con los juegos. Si está interesado en el procesamiento de señales, aprenda sobre matemática discreta y transformaciones rápidas de Fourier. Y luego aprenda cómo pensar y resolver problemas en sus dominios de interés.

Tienes razón. Algunas descripciones son un poco confusas y no ves de inmediato cuál es el mejor nivel para ti. Vaya de un lado a otro entre los MOOC en particular Coursera y EDx y lea la presentación con gran atención (los que tienen la palabra “introducción” en el título son probablemente por dónde empezar. Hágalo en serio. La ventaja de un MOOC es que puede hable con miles de estudiantes de todo el mundo y que la bibliografía (artículos o libros) esté actualizada. Hay algunos cursos que tomo solo para tener acceso a la referencia: herramienta perfecta.

No compraría un libro introductorio: prefiera un MOOC que sea más dinámico y le brinde apoyo. Sobre el lado cultural de los algoritmos, pruebe El advenimiento del algoritmo: La idea que gobierna el mundo: David Berlinski: 9780151003389: Amazon.com: Libros