¿Cómo es tomar CS 124 (Sistemas operativos) en Caltech?

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.

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.

More Interesting

¿Qué sucede en mi computadora cuando visito un sitio web?

¿Qué consejo le darías a un profesor asistente de investigación en ciencias de la computación (sistemas) que quiera abandonar la academia y entrar en la industria? ¿Qué habilidades necesitaré para que la academia no me equipe? ¿Es esta una buena idea?

¿Cuáles son algunos buenos regalos de Navidad relacionados con la informática?

¿Cuáles son las funciones de la placa base de una computadora?

¿Cuál es la importancia o los beneficios de un algoritmo informático para una persona normal que no es un programador informático?

¿Qué se entiende por ejecución, instalación, bat.exe, BCD, arranque, etc.?

Si la potencia informática de la IA consciente se midiera en un coeficiente intelectual, ¿cuál sería?

¿Qué reglas debe seguir la inteligencia artificial en el futuro?

¿Cómo es para los ingenieros de aprendizaje automático cuando están 'en la zona'?

¿Cuál es la mejor área para vivir en Delhi para estudiantes de CA y CS?

Si existiera inteligencia extraterrestre, ¿cómo piratearías su tecnología avanzada?

En la historia de la computación, ¿quién era el científico que se sorprendió al descubrir que las máquinas en su laboratorio se comunicaban entre sí?

En Machine Learning, ¿por qué aplicamos a menudo la suposición de registros independientes e idénticamente distribuidos?

Mi teléfono se cayó y todo funciona bien, pero mi tarjeta SD, que no está rota, no funcionará. ¿Cómo puedo recuperar mis datos?

¿UBC, USC o UCI son mejores para la informática de pregrado?