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

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:
    1. Presencia de firmas para las funciones implementadas.
    2. Documentación de comportamientos complejos y relevantes de las funciones.
    3. Respeto de los formatos pedidos en el enunciado para los mensajes de error y otros mensajes impresos hacia el usuario.
    4. 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.