CC4101 - Lenguajes de Programación
Material de referencia
- PrePLAI, breve introducción a la programación funcional, Racket, y
#lang play
- PLAI (S. Krishnamurthi) - capítulos 1 a 14 (para macros, capítulos 35-37) (copia local del libro)
- OOPLAI, para la parte sobre objetos
- PL Overview, una ilustración simplista de los elementos claves en la definición e implementación de los lenguajes de programación
- A Note on Dynamic Scope, para complementar el PLAI respecto del tema de alcance dinámico
- A Note on Recursion, para complementar el PLAI respecto del tema de la recursión
Material complementario
- Interpretes del curso (
#lang play
)
Referencias adicionales (disponibles en biblioteca FCFM)
- Essentials of Programming Languages (D. Friedman, M. Wand, C. Haynes)
- Structure and Interpretation of Computer Programs (H. Abelson, G. Sussman, J. Sussman)
- Sobre Scheme: The Little Schemer (D. Friedman, M. Felleisen)
- Sobre Haskell: Learn You a Haskell (excelente libro sobre programación funcional en general, y Haskell en particular) - Ver capítulos 3 y 8 para complementar el PLAI respecto de las clases de tipos en Haskell
- Sobre sistemas de tipos: capitulos 24-31 del PLAI, o mucho más exhaustivo, Types and Programming Languages (B. Pierce)
Evaluación
- 3 tareas
- 2 controles
- 1 examen
La Nota de Control se calculará como el promedio ponderado del examen (50%) y del promedio de los controles (50%). Un alumno que obtenga nota promedio de controles mayor o igual a 5.5 queda automáticamente eximido del examen, pero tiene la opción de rendirlo voluntariamente.
La Nota de Tareas se calculará como el promedio de cada tarea. Importante: No hay tarea recuperativa
La Nota Final es el promedio ponderado de la Nota de Control (50%) y de la Nota de Tareas (50%).
No se permite convalidar tareas o controles de un semestre a otro. Si reprueba el curso, ya sea por tareas o por controles, tendrá que volver a rendirlo por completo.
Reglas Entrega Tareas
- Recuerde que su tarea es individual y las copias serán penalizadas con nota 1 (ver política abajo).
- No se aceptan atrasos. Sólo tienen a su disposición 7 tokens para días de atraso, para todo el semestre. No se pueden usar más de 3 tokens en una misma tarea. No hay excepciones ni tokens adicionales.
Sobre U-Cursos:
- La entrega se debe hacer vía U-Cursos hasta las 23:59 del día de entrega de la tarea.
- El uso del foro en U-Cursos es altamente recomendado para la discusión del enunciado y resolución de dudas por parte del equipo docente. Si hay alguna modificación sustancial al enunciado en base a discusiones en el foro, se anunciará vía foro en un post nuevo realizado por un miembro del equipo docente actualizando a su vez el enunciado.
- La entrega vía U-Cursos debe constar de un único archivo .zip (no utilizar otro formato de compresión como .rar) que contenga todos los archivos con la implementación solicitada en la tarea y los tests que usó para validar su solución. Asegúrese de leer las instrucciones específicas de entrega en cada enunciado.
Reglas específicas:
- No puede usar mutación para resolver las tareas, a menos que el enunciado indique lo contrario.
- El testing y la calidad de código son considerados en la evaluación. Por cada eje puede aplicarse un descuento de hasta 0.5 puntos a la nota de la tarea, según lo detallado en la siguiente rúbrica.
- El test suite debe estar compuesto por tests propios, cubriendo apropiadamente los casos relevantes. Los tests entregados en los archivos base y/o presentados en el enunciado no son contabilizados.
- La calidad de código considera lo siguiente:
- Presencia de firmas para las funciones implementadas.
- Documentación de comportamientos complejos y relevantes de las funciones.
- Respeto de los formatos pedidos en el enunciado para los mensajes de error y otros mensajes impresos hacia el usuario.
- Respeto de las interfaces definidas en el enunciado. Una función cumple con la interfaz declarada en la tarea si recibe los mismos argumentos obligatorios y en el mismo orden. Las funciones pueden recibir además argumentos opcionales, si así lo desean.
Política sobre Tareas y Copias
Las tareas son individuales. Toda entrega deber ser enteramente fruto de su trabajo y no puede ser derivada del trabajo de otros, ya sea de fuentes publicadas como no publicadas, la web, ChatGPT/CoPilot u similar, otro estudiante, libros, materia de otros cursos (incluyendo semestres anteriores de este curso), o cualquier otra persona o programa. Se prohibe copiar, examinar, o alterar la tarea de otra persona, o usar un programa para transcribir, modificar o copiar los archivos de otro alumno.
Para facilitar el aprendizaje cooperativo, está autorizado conversar de una tarea con otros estudiantes, siempre y cuando se respete la siguiente política de “pizarra”: Una conversación puede tener lugar en una pizarra (o sobre papel, etc.), y debe cumplir las siguientes reglas:
- Nadie tiene permiso de tomar notas, grabar la conversación, copiar o fotografiar lo que esté escrito en la pizarra. La pizarra debe borrarse después de la discusión.
- Se debe respetar un lapso de cuatro horas después de cualquier conversación antes de empezar a trabajar en la tarea.
El hecho de que pueda recrear la solución de memoria se considera como prueba de que se entendió efectivamente.
Toda violación podrá ser reportada a las autoridades de la Facultad, solicitando un sumario.