Exámenes
| Examen | Cuándo | Temas |
|---|---|---|
| Parcial | Semana 8, Sesión B | Partes 1 y 2 (semanas 1–8): clases, referencias, encapsulamiento, herencia, polimorfismo, interfaces |
| Final | Período de exámenes | Todo el curso, con énfasis en las partes 3 y 4 (semanas 9–16) |
Formato sugerido
- Leer código: qué imprime un programa con referencias compartidas,
overloading y override,
equalsfrente a==, o excepciones que se propagan. Justificar la respuesta, no solo darla. - Escribir código: una clase con sus invariantes y constructores, una jerarquía pequeña, una interfaz con dos implementaciones, una consulta con streams, o las pruebas JUnit de un método dado.
- Diseño: a partir de un enunciado corto, proponer las clases y sus relaciones con un diagrama UML de clases; o encontrar en un fragmento de código qué principio se viola (por ejemplo, sustitución de Liskov) y corregirlo.
- Preguntas cortas: “¿por qué un
recordes inmutable?”, “¿cuándo conviene composición en lugar de herencia?”, “¿qué pierde el programa con el type erasure?”. - En el código cuenta la idea, no los errores menores de sintaxis.
Cómo estudiar
- Las Preguntas de repaso al final de cada guía semanal y los ejercicios al final de cada capítulo de los apuntes.
- Predecir la salida de los ejemplos de
code/week-NN/antes de correrlos, y después verificar conmake testo conjshell. - Los ejercicios y quizzes al final de cada capítulo del libro de Eck.
- Releer su propio código del proyecto Bodega: muchas preguntas de diseño se parecen a decisiones que ya tomaron.
Exámenes de práctica
Dos exámenes con el formato de los reales, para resolver en papel y con el reloj corriendo:
- Parcial de práctica: semanas 1–8, 2 horas.
- Final de práctica: todo el curso con énfasis en las semanas 9–16, 3 horas. Al final trae una lista de verificación de los resultados de aprendizaje del curso, con la semana y las preguntas que ejercitan cada uno.
Las soluciones las da el docente después de que los hayan intentado.
Banco de preguntas
Guardar los enunciados aquí (parcial-AAAA-S.md, final-AAAA-S.md). Las
soluciones no deberían subirse a un repositorio público; usar
exams/solutions/ (está en .gitignore), una rama privada o un repositorio
aparte.