¿Qué tan difícil es CS 107 en Stanford?

Si nunca ha tomado una clase de sistemas, es un mundo un poco diferente de otros subcampos en CS. Para mí, ese fue el mayor shock. Había evitado 107 por un tiempo y había tomado otras clases de CS no básicas de antemano. CS 107 usa C, y saltar de Python al inglés e “importar cualquier paquete para poderes de código mágico” a este lenguaje de bajo nivel no era algo que me entusiasmara mucho. (Solo imagina mis sentimientos cuando nos presentaron al ensamblaje). C te da mucha flexibilidad para equivocarte, y los errores que obtendrás tienden a ser un poco crípticos (¿fallas seg, alguien?).

Los mitos sobre 107 probablemente provienen de cómo esta es la primera clase “dura” de CS / SymSys / MCS en Stanford. No hay más mano 106A / B y no hay LaIR (un gran programa de horario de oficina con personal constante para 106 clases). Las tareas ocupan una cantidad de tiempo no trivial, y si no eres bueno con la gestión del tiempo, podrías estar llegando a la fecha límite un poco demasiado cerca cada vez y perder esos casos límite.

Si termina en un subcampo de CS que no es de sistemas, es probable que no esté cavando a través del ensamblaje o escribiendo sus propios asignadores de montón de forma regular. Sin embargo, la resistencia que aprende de ese tipo de tareas es muy útil.

Difícil es relativo, ¿verdad?

CS 107 tiene una reputación de ser realmente duro y de ser una clase “desanimadora”, lo cual es cierto. Cuando lo estaba tomando hace unos dos años, solía ser el primer curso de programación que tomarías después de las clases de introducción, CS 106A y CS 106B (Metodología de programación y abstracciones de programación). Como dijo Lucy Li, es básicamente la primera clase “real” de ciencias de la computación que toman muchos estudiantes, por lo que piensan que es terriblemente difícil. Mirando hacia atrás, aunque el trabajo del curso es diferente, es casi tan difícil como cualquiera de las otras clases básicas para la especialización de CS, al menos en mi opinión.

Escuché que CS 106B se ha vuelto más difícil, por lo que es la clase más ligera. Sin embargo, eso es de boca en boca, así que no estoy completamente seguro de cuán precisa es esa declaración.

A2A En realidad, puede verlo usted mismo ya que está disponible en Stanford Engineering Everywhere en línea de forma gratuita. Es el tercer curso en la secuencia.

Lo que dificulta los cursos de informática es no tener los requisitos previos, que en este caso son CS 106A y CS 106B que también están disponibles en Stanford Engineering Everywhere. Antes de abordar CS 107, necesitará tener habilidades de programación para que no esté aprendiendo a programar mientras está aprendiendo Paradigmas de programación.

La dificultad es relativa, como han señalado otros.

Como anécdota, los primeros exámenes que realmente realicé en mi carrera académica comenzaron con CS 106X / 107. Estos cursos estaban entre mis favoritos en Stanford.

Es cierto que tomé este curso hace más de 20 años, pero todavía lo considero uno de los cursos de informática más valiosos que se imparten en Stanford.

Te enseña a ver los patrones comunes entre los lenguajes de programación y te expone a una amplia gama de conceptos de lenguaje que se extienden a otros lenguajes no cubiertos en el curso.

Este curso le da la confianza para sentarse y aprender * cualquier * idioma que pueda encontrar en el futuro.

Es una gran base para tener, incluso si, como yo, y no te conviertes en un programador de tiempo completo en tu carrera, sabes que siempre puedes elegir un libro y aprender un nuevo idioma.

Es difícil pero básico para los fundamentos en sistemas operativos o compiladores. Puede ser excepcional, pero aún necesita completar el trabajo del curso. El proyecto final lleva tiempo, y vale la pena considerarlo. Es una implementación del asignador de montón.

Es bastante fácil si tiene afinidad por la informática / programación, y puede ser muy difícil si no lo tiene. Mucha gente puede avanzar a través de la secuencia 106A / B, por lo que CS107 es donde realmente comienza el filtrado.

Aquí está la distribución de calificaciones para la clase.

En términos de carga de trabajo, espere alrededor de 4.5 horas de conferencias y 15-20 horas de tareas por semana.