Proyectos personales
Los proyectos personales (pet-projects) son una gran oportunidad para ganar experiencia práctica mientras se aprende un lenguaje de programación, bibliotecas y/o frameworks. También pueden servir como una plataforma de lanzamiento para entrevistas y ayudar a iniciar oportunidades de trabajo.
Encontrar y seleccionar la idea correcta para un proyecto personal puede ser un desafío. Para ayudar a superar esto, hemos compilado una lista de enlaces e ideas para que comiences. ¡Después de leer esta lista, deberías poder elegir la idea más apropiada o inspirarte para crear la tuya propia!
Enlaces externos
Una colección de proyectos es ofrecida por varias empresas y la comunidad como parte del programa anual de pasantías para estudiantes de Google. El archivo contiene proyectos de años recientes, con un número significativo de proyectos disponibles para el lenguaje C++. Puedes encontrar algo de interés para tu propia práctica o considerar intentar futuras pasantías.
El repositorio contiene una colección de proyectos personales para diferentes lenguajes de programación, incluyendo una extensa lista de ideas para C++.
- Programming challenges (copia archivada — el sitio original ya no existe)
La Ruleta de Ideas para Proyectos Personales te permite establecer el nivel de complejidad deseado y girar la rueda. El resultado del giro determinará la tarea que deberás resolver, elegida al azar. :)
La lista de ideas de proyectos personales
Juegos
A continuación hay una lista de videojuegos clásicos que no contienen IA compleja o generación de mundos dinámicos, que se pueden implementar como punto de partida. Puedes refinar la funcionalidad adicional a medida que progresas. Para la biblioteca de gráficos, puedes usar SFML, que es una biblioteca fácil de usar que proporciona suficientes características para crear interfaces gráficas simples 2D o 2.5D usando sprites. Si quieres hacer algo más complejo con física aplicada, puedes comenzar con motores simples como Box2D o aprender otros más avanzados como Cocos2D y Unreal Engine. Recuerda seguir la regla de “lo simple a lo complejo” comenzando con un juego simple y aumentando gradualmente la dificultad.
- Snake
- Tetris
- El juego de la vida
- Juego del 15
- Arkanoid
- Buscaminas
- 2048
- Solitario
- Solitario Spider
- Ping-pong
- Donkey Kong
- Laberinto
- Juegos de red para 2-4 jugadores: ping-pong, póquer, ajedrez, batalla naval, etc.
Se recomienda leer las siguientes fuentes que contienen más información sobre varios algoritmos para el desarrollo de juegos. Pueden ser útiles para uno de los juegos mencionados anteriormente, o para tus propias ideas:
- https://www.redblobgames.com/
- http://www.squidi.net/three/
Aplicaciones
Al crear una aplicación, comienza con la implementación más simple, como una aplicación de consola. Después de cada paso completado, establece una tarea más compleja, como agregar una interfaz gráfica, hacer que la aplicación solicite datos de una fuente usando una solicitud HTTP, y luego escribir/leer los datos recibidos en un archivo/base de datos, etc. Siempre sigue el principio de “lo simple a lo complejo”.
Aquí hay algunos ejemplos de proyectos potenciales para principiantes:
- Un chat de red (sockets crudos o usando gRPC)
- Una calculadora
- Un administrador de archivos
- Un convertidor de moneda
- Recuperar una lista de “pull-requests” o “issues” de cualquier repositorio de Github
- Automatización de tareas rutinarias, como varios cálculos y generación de informes en forma de tablas.
Aplicaciones para estudiantes
Los siguientes ejemplos son más adecuados para estudiantes que han tomado o tomado recientemente cursos básicos como álgebra lineal, geometría analítica, análisis matemático, física, etc. Las tareas que implican aplicar la teoría que han aprendido pueden ayudarles a lograr dos objetivos: consolidar sus conocimientos a través de la aplicación práctica, y practicar la programación. Este camino no está restringido a los demás, pero es más fácil para los estudiantes ya que su conocimiento de las disciplinas académicas aún está fresco.
- Desarrollar una biblioteca de álgebra lineal, que implica trabajar con matrices, vectores y realizar cálculos
- Modelar varios procesos, como física y mecánica teórica
- Implementar métodos numéricos, incluyendo integración, diferenciación, aproximación e interpolación