¿Cuál sería un buen proyecto de autogestión (lapso de unos 3 años) para un estudiante de informática?

Un rastreador.

En serio, el trazado de rayos tiene una curva de aprendizaje tan superficial e involucra muchas técnicas informáticas comunes como OOP, clasificación, álgebra lineal, vectorización, paralelización, partición espacial, GPGPU, uso de datos fuera del núcleo, recursividad, etc.

Todos estos son opcionales. Puede comenzar de manera extremadamente simple y escribir un rastreador de rayos lento pero fácil con solo unas pocas líneas de código. Y puede llevarlo en la dirección que desee. Puedes ir rápido y hacky, o lento y realista.

Aprenderá muchas técnicas gráficas que también se pueden usar en otros dominios como juegos o imágenes médicas, como antialiasing, profundidad de campo, geometría 3D, representación de volumen, iluminación global, vectores de reflexión / refracción, mapeo de texturas, mapeo de relieve, mapeo normal , mapeo de paralaje, mapeo de sombras, mapeo de desplazamiento, etc.

Otra cosa fantástica sobre el trazado de rayos es la depuración visual. A menudo coloreo mis superficies con vectores normales o reflejados solo para ver qué sucede.

Probablemente comenzará por las esferas de trazado de rayos, son las más fáciles. Luego otras formas como cajas y cilindros. Los triángulos de trazado de rayos (bueno, mallas de triángulos) son extremadamente importantes, pero también podría intentar intersectar otras cosas interesantes como superficies implícitas, torii y fractales 4D Julia.

Oh, el trazado de rayos es muy divertido y todos pueden disfrutar de los resultados.
De todos modos, esa es mi sugerencia.

Aquí hay un raytracer en tiempo real que escribí hace muchos años. Muestra algunas de las técnicas que utilicé para acelerarlo:

Los siguientes proyectos pueden ayudarlo

  1. un compilador que puedes entender (1/3)
  2. Cree un compilador que funcione con el marco LLVM, Parte 1
  3. Los archivos del kernel de Linux
  4. Descripción general – Hacker de procesos [Windows Internals]

Creo firmemente que participar en un proyecto de código abierto es una buena idea (windwos o linux). Trabaje con código bien escrito como el kernel de Linux, los proyectos de sourceforge son la mejor manera de comenzar. ¡Nunca comience con un libro de texto e intente hacer un proyecto, en su lugar, intente al revés!

En gran medida, depende de las áreas específicas de informática que más le interesen, pero el proyecto debe estar más orientado a la ingeniería que a la investigación y no debe requerir grandes cantidades de recopilación de datos. También creo que debería ser algo que puedes hacer de principio a fin, en lugar de ser un engranaje en algún gran proyecto de código abierto.

Un ejemplo sería diseñar un nuevo lenguaje de programación funcional que creas que tiene algunas ventajas importantes. (Probablemente se equivoque, pero eso no importa) y diez para escribir un intérprete y / o un compilador para ello. Si realmente se siente inteligente, puede intentar escribir la mayor parte del compilador o intérprete en el nuevo lenguaje.

Concéntrese en un área que le parezca interesante y disfrute. Cuanto más baja en la pila de tecnología, reduce la cantidad de competidores cuando se gradúa. En general, también aumentará la dificultad y la dependencia de las matemáticas.

La excepción al nivel de pila es buscar varios tipos de áreas de ingeniería especializadas. Por ejemplo, uno de los campos relacionados con IA y sistemas expertos. Debería explorar las posibilidades en esta área visitando a personas que buscan otras especialidades para encontrar las que cree que disfrutaría.

Esta es una pregunta demasiado amplia. Si hubiera estado en tu lugar, habría intentado esto:
http://www.sourceforge.net o http://www.freshmeat.net . Puede suscribirse a algunos proyectos que le gusten en estos sitios web y ver todas las ideas que surgen. También seguirán mencionando lo que requieren a continuación. Además, obtendrá una idea sobre qué tipo de desarrolladores están trabajando en ello. Por lo tanto, es un buen punto de partida, además de que estará contribuyendo a proyectos de código abierto, lo cual es genial.

Diría que anote algunas de sus necesidades innovadoras cuando usaba su escritorio
decir por ejemplo.
1) Disminuir el brillo de la pantalla con un solo clic (escriba una aplicación para realizar este proceso)
2) Limpiar la papelera de reciclaje, los datos temporales del usuario, las cookies y el historial en IE de su escritorio, etc.

Encuentre un problema simple y trabaje para encontrar la solución mediante programación.