La mejor ventaja de los proyectos de programación es que el cielo es el límite (¡de verdad!). He probado mi suerte explorando varias ramas del tema durante mi licenciatura y mi recomendación sería participar en proyectos de diversos campos al principio y sólo entonces pasar a subcampos más específicos de un campo en particular.
Aquí hay algunas ideas de proyectos agrupados por los campos relacionados. Elegir unos pocos de cada cubo debería ayudarte a tener un gran perfil.
1. Algoritmos
- Algoritmos de gráficos: Un área muy fundamental pero crítica aplicable a muchos problemas del mundo real. Ideas para posibles proyectos incluyen el Problema del Camino Más Corto, el Análisis de Redes Sociales, el PageRank y muchos más.
- Estructuras de Datos: Todo el mundo es consciente de su importancia en los problemas a gran escala. Puedes intentar implementar la compresión de archivos usando la codificación Huffman, el problema del punto más cercano usando Quad Trees y Bloom Filters
- Algoritmos geométricos: Una de mis sub ramas favoritas. Hay numerosos problemas desafiantes aquí también, Cascos Convexos, Programación Lineal, Búsqueda Simplex/Rango y muchos más
2. Sistemas
- Cliente FTP: Implementar un cliente FTP simple y rudimentario, posiblemente soportando la transferencia segura de archivos.
- Servidor HTTP: Implicaría un conocimiento un poco más profundo del tema. Pero bueno, sin dolor no hay ganancia.
- Sistema operativo: Modificar un sistema operativo existente y aprender los detalles de implementación del mismo. Un estándar de libro de texto para esto sería NachOS.
3. Aplicaciones web, bases de datos
- Raspadores web: No es un proyecto completo, pero me encantó hacer uno en mi primer año. Me sentí realmente capacitado al poder automatizar casi cualquier cosa usando un simple python.
- Sistema de gestión: Implementar un sistema para gestionar un servicio digamos un sistema de reserva de vuelos o un portal de gestión de cuotas.
- Otras muchas posibilidades: La mayoría de las cosas geniales requieren una combinación de múltiples campos. La única limitación es tu imaginación.
4. Aprendizaje automático (Mi favorito)
- Procesamiento del lenguaje natural: Tareas de Aprendizaje Automático dedicadas a la comprensión del lenguaje natural. Posibles ideas incluyen, Clasificación de Documentos, Reconocimiento de Sentimientos de Reseñas de Películas, Creación de un chat-bot y muchas más
- Aprendizaje por Refuerzo: Uno de mis favoritos en el mundo del ML. Puedes trabajar entrenando a un bot para que juegue a Mario, PacMan, que aprenda a comportarse en sistemas físicos y lo que no...
- Visión por ordenador: Mi campo súper favorito dentro del Machine Learning. Hay numerosos retos en los que puedes probar suerte. También puedes echar un vistazo a mis proyectos para obtener algunas ideas.
- Aprendizaje automático de propósito general: No hay necesidad de estar limitado por las restricciones de dominio. Intenta hacer tu propio motor de búsqueda, un sistema de recomendación de películas, intenta resolver cualquier problema de la vida real con ML.
Antes de apresurarte a empezar a trabajar en tu proyecto, me gustaría mencionar que los proyectos más geniales en los que puedes trabajar serán generalmente una mezcla de múltiples ideas. Puedes crear un servicio de Mensajería, tu propia Red Social, Ajedrez Multijugador (bueno, sólo dos jugadores para ser precisos), Un Juego 3D con una IA bien entrenada.. la lista continúa (Consulta esta lista de ideas de proyectos prácticos para más ideas).
¿Dónde y cómo empezar, te preguntarás? Creo que la mejor manera de completar un proyecto es comenzar rápidamente a trabajar en él y abordar las dificultades un paso a la vez. No es necesario leer docenas de libros antes de comenzar el proyecto por el bien de la construcción de conocimientos teóricos. Hay un gran número de tutoriales para la mayoría de los proyectos que he descrito anteriormente, sólo tienes que seguirlos poco a poco y deberías hacerlo bien.