A2A, por el instructor 😛
Tomé CS 124 cuando todavía era CS 101 (un curso de temas misceláneos) el año pasado. El curso ya había sucedido una vez, por lo que Donnie Pinkston ya había tenido una oportunidad de pulir el curso.
Antes de la oferta de este curso, la única forma en que un experto en Caltech CS podía obtener experiencia con los conceptos de sistemas era tomando el CS 24 (requerido), que es una introducción a los sistemas. Cuando era estudiante de primer año, los estudiantes de último año recordaban que tenía un profesor de sistemas, que desde entonces había dejado el instituto, por lo que pasé gran parte de mi tiempo en Caltech escuchando lamentaciones acerca de que no había ningún tipo de clase de sistemas y, finalmente, me sentí como un mal CS Me especializo por no saber el tipo de cosas que una clase de SO te enseñaría. Además, el departamento siguió afirmando que no podían contratar a un profesor de sistemas. Parecía vergonzoso que nuestro departamento careciera de esta área fundamental de CS.
- ¿Cuáles son las aplicaciones de la teoría de autómatas en simulación y modelado?
- ¿Cuándo aplicamos el método BIG M para la investigación operativa?
- ¿Cómo se comparan las capacidades y trayectorias de aprendizaje automático de Facebook y Google? ¿Por qué esto importa en términos del desempeño futuro de las dos compañías?
- ¿Vale la pena tomar CS 141 (hardware de computación) en Harvard?
- Como experto en justicia penal interesado en computadoras, ¿debo aprender el aprendizaje automático u obtener mi certificado Cisco CCNA?
Afortunadamente, Donnie es increíble y enseña como un tercio del plan de estudios de CS en Caltech, por lo que decidió ofrecer esta clase. Donnie es un excelente profesor (y no lo digo solo porque me pidió que respondiera a esta pregunta), y sus diapositivas fueron lo suficientemente buenas como para ser una referencia bastante decente para las cosas que tenía que hacer en la clase. No creo que haya abierto los libros de texto recomendados para usarlos para la clase, a pesar de que es bueno tenerlos cerca.
Dicho esto, me di cuenta de que Donnie estaba un poco sobrecargado de trabajo ese término tratando de mantener las conferencias y proyectos listos a tiempo para la clase. Espero que este año sea más fácil para él.
Casi todas las tareas en la clase tomaron la forma de agregar algo al código de shell que implementó el Sistema Operativo Pintos (principalmente en C), que se desarrolló en Stanford. Donnie pasó algún tiempo limpiando el código Pintos antes de que lo obtuviéramos. Aparte de los dos primeros laboratorios (que debían implementar un shell muy básico y un gestor de arranque), el resto de los laboratorios tenían dos semanas antes de su vencimiento.
Debido al hecho de que cada laboratorio tenía bastante código para escribir, Donnie requirió que los estudiantes trabajaran en grupos. Desafortunadamente para mí, todas las especialidades de CS que conocía bien planeaban tomar la clase el próximo año y tuve que trabajar con personas que no conocía muy bien. Organizarse se convirtió así en un pequeño problema. Sin embargo, creo que terminé aprendiendo más del material del curso de esta manera.
Personalmente, tendía a entender los conceptos con bastante facilidad y, en general, sabía cómo implementar las cosas, pero me encontré pasando horas corrigiendo errores que eran muy simples. Por ejemplo, en la asignación del cargador de arranque, pasé medio día depurando un problema que se redujo al hecho de que utilicé decimal 2000 como dirección de memoria en lugar de hexadecimal 0x2000. Siento que esto es bastante común en cosas de bajo nivel (además de las locas condiciones de carrera). En el lado positivo, significaba que podía pasar el rato en el horario de oficina más 😛
En general, definitivamente aprendí muchas cosas que realmente necesito saber en mi vida como ingeniero de software, y definitivamente valió la pena tomarlo, aunque fue fácilmente mi mayor compromiso de tiempo para ese término.