Tomé CS 184 en la primavera de 2000. Lo recuerdo como la clase más desafiante que he tomado (incluyendo el plan de estudios de EECS en la UC Berkeley, y el MBA + cursos interuniversitarios en Yale).
Más allá de esas impresiones, mi memoria se vuelve borrosa. Recuerdo que pensé que era genial que, para simplificar las operaciones geométricas, se utilizara el espacio @4 dimensional (que permite reducir los problemas difíciles a matrices simples). Recuerdo que pensé que las matemáticas eran elegantes, y cuando intenté profundizar de verdad, me dolió el cerebro.
El CE 184 me expuso al amplio alcance de la Informática Gráfica, y me dio una idea de la aterradora profundidad. Vi transformaciones básicas, proyección, varios métodos de sombreado, modelado de movimiento y física, y mucho más, incluyendo problemas de vanguardia de la época (si mal no recuerdo, el renderizado de pelo era entonces una frontera prometedora). Y en cada uno de esos temas, encontré problemas de una complejidad asombrosa, que combinaban la programación de alto rendimiento con disciplinas como la matemática vectorial legible, la óptica, la cinemática y muchas otras cosas que apenas entendía.
Recuerdo un dulce proyecto final de esa clase, en el que utilizamos un OpenGL bastante primitivo para producir una escena animada e interactiva de nuestra elección. Yo elegí una montaña rusa, porque se podía jugar con la cámara de maneras divertidas (como cambiar el punto de vista a dentro o fuera de la montaña rusa). Me gustó ese proyecto, aunque creo que tuve que recurrir a un feo hackeo para entregarlo a tiempo. Mi montaña rusa se volteaba ocasionalmente al revés mientras atravesaba la pista, una curva bezier 3d aleatoria que generaba cada vez que se ejecutaba el programa. Creo que descubrí que el carro se volteaba cuando la segunda derivada de la curva (frente al eje y) cambiaba de signo. Me quedé sin tiempo antes de averiguar cómo evitar el vuelco, y terminé hackeándolo para que sólo volteara el carro hacia arriba si había una 2ª derivada reciente de cero. Mi montaña rusa era un artilugio que provocaba el vómito, con carros de mala calidad que se volteaban al azar.
Por último, en CS 184 aprendí que, aunque había seguido la industria de los gráficos (modelado, trazado de rayos, animación, etc.) durante años, el meollo de la cuestión era demasiado esotérico como para dedicarme a ello seriamente. Muchas de las habilidades de un programador de gráficos no se transfieren a otras áreas de la programación, y yo estaba más interesado en la construcción de nuevas empresas que en nuevos renderizadores.
Me alegro de haber tomado la clase, y la recomendaría a otros. Es satisfactorio tener una comprensión (ciertamente débil) de cómo se hacen las imágenes bonitas en las películas y los juegos. CS 184 me dio un profundo respeto por el campo, y un buen sentido de mis capacidades y limitaciones como programador.