Tengo que desarrollar un programa para mi curso de algoritmos. ¿Cuál sería un buen proyecto para desarrollar en un máximo de dos meses con un algoritmo?

El espacio de algoritmos que operan sobre gráficos es maravilloso. Después de dos meses, escribiría un programa que analiza gráficos sociales para hacer cosas como, por ejemplo, encontrar personas del tipo de “conector” que unen múltiples grupos sociales, identificar grupos sociales, analizar tamaños de grupos sociales extendidos, encontrar personas que se están convirtiendo socialmente aislado, etc.

El espacio de los algoritmos de búsqueda de rutas también es muy divertido. Escribir un pacman automatizado que pueda comer todos los puntos en un laberinto mientras evita los fantasmas es un desafío interesante. O incluso simplemente escribiendo la primera parte, que es la navegación de un laberinto desde la entrada hasta la salida. O bien, encontrar varios caminos más cortos a través de una región navegable.

Las transformaciones de objetos también son muy divertidas, si eres tan geek como yo. Por ejemplo, implementar un motor que pueda convertir datos tabulares en agregados jerárquicos arbitrarios, por ejemplo, “agrupe esta tabla por campo foo, luego bar, luego baz, y en el camino genere sumas, promedios, minutos, máximos, medianas, etc.” El algoritmo para aplanar los agregados también es genial. Finalmente, encontrar formas de paralelizar estos algoritmos es extremadamente interesante.

Además de eso, escribir un motor de unión distribuido simple también es muy divertido. Dadas las estadísticas sobre sus datos, hacer que el motor decida cómo mezclar información entre máquinas (o evitar hacerlo) es genial, aunque quizás un poco agresivo para un principiante. (Ok, ridículamente agresivo).

Por supuesto, para principiantes reales, escribir un montón de implementaciones de algoritmos de clasificación puede ser una introducción “suficientemente buena” para hacer un trabajo de ingeniería real. Tal vez, una vez hecho esto, profundizar en la creación de índices es interesante, para que pueda hacer una ordenación arbitraria, y tal vez incluso índices invertidos para que pueda mostrar la coincidencia básica de cadenas .

¡Que te diviertas!

Recuerdo que cuando tomé un curso de algoritmos, elegí el proyecto de construir un rastreador web. La definición del problema es simple y enseña mucho sobre cómo almacenar y recuperar datos de manera óptima, comparando documentos por similitud, como problemas de distancia de documentos, coincidencia de cadenas usando el algoritmo Karp Rabin, ordenando páginas en función de las vistas, verificando la existencia de un sitio web usando Tries, etc. El alcance de este proyecto es muy grande, pero puede seleccionar convenientemente un subconjunto de características en las que desea centrarse. Me gusta este proyecto porque enseña mucho sobre estructuras de datos además de algoritmos y es algo que todos usaron en algún momento.

¿Por qué no crear un sitio web para unir personas y … algo (como * uno * de estos, no todos):

  • Gente y gente: para citas o amistad o compañía o incluso para tomar un café el martes
  • estudiantes y profesores: para cursos que encajan bien académicamente y con estilo
  • estudiantes y escuelas de posgrado: por la razón obvia
  • personas y {automóviles, cámaras, cosas en general}: para comprar
  • personas y carreras o incluso trabajos a corto plazo: por la razón obvia

Otras cosas también pueden ser divertidas.

Esto usaría el algoritmo de “coincidencia máxima”. ¡Elija los criterios de coincidencia correctos y podría ser muy divertido!

More Interesting

¿Por qué a veces escribimos código que tiene sentido 0 al día siguiente?

¿Debo tomar un Yahoo! ¿Oferta SDE en California o una oferta Amazon SDE en Seattle?

¿Cómo debo prepararme para el trabajo de desarrollador de software integrado en 2 semanas?

¿Cuáles son las señales de que su software heredado necesita ser reemplazado / actualizado?

¿Qué es un ciclo de vida de caso de prueba?

¿Cuáles son ejemplos de proyectos que pueden entusiasmar a una persona sobre la ingeniería de software?

¿Hay algún desafío / juego de SQL?

¿Cuál es la diferencia entre los entornos estándar y flexibles para Google App Engine (GAE)?

¿Cuál es la filosofía de los buenos codificadores? Solía ​​poner mucho esfuerzo en mis cursos, pero siento que los proyectos paralelos y la construcción de cosas que son importantes para el mundo exterior importan mucho más.

¿Qué tan importante es que Capgemini adquirió IGATE? Como empleado de IGATE (el año pasado pasó a trabajar como ingeniero de software), ¿hay alguna razón para estar entusiasmado?

¿Por qué Apple es primero una empresa de hardware y luego una empresa de software?

¿Hay una gerencia media en Scrum? ¿Cómo puedo convertirme en un CTO?

¿Cuál es el mejor nombre de software para crear vínculos de retroceso?

Ingeniería de software: si una función tiene controles / condicionales y no está claro para qué sirven, ¿cómo podemos mejorar este patrón?

¿Hay mucho papeleo involucrado en la ingeniería de software?