gunzip
.¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Algoritmos y Estructuras de Datos I
Novedades
Docentes
Javier O. Blanco, Damián Barsotti, Silvina Smith, Valeria Rulloni, Martín Dominguez, Walter Alini, Natalia Bidart, Sergio Giro, Mariana Badano, Avalos Ambroggio Santiago, Dionisio E Alonso, Leonardo Rodriguez, Marco Brunello, Florencia Mihaich, Raul Monti.
Parciales
Calendario
Consultas
Notas
Bibliografía
Haskell
Español
Inglés
Lenguaje C
Lecturas recomendadas
- Implementing Functional Languages: a Tutorial. Simon L. Peyton Jones.
- Voto electrónico. Los riesgos de una ilusión. Federico Heinz.
Prácticos
Laboratorio
Modalidad
Generalidades
- El taller se reliza en dos comisiones. Los horarios de ellas son: lunes de 9 hs a 13 hs y de 14 a 18 hs. Cada alumnos debe inscribirse en una en el despacho de alumnos.
- Los teóricos del laboratorio se dictan los jueves en el horario del teórico/práctico (en la misma aula).
- El taller consiste en la realización de una serie de proyectos.
- Los contenidos necesarios para su realización serán impartidos en los teóricos del taller.
- Los proyectos podrán ser consultados en los laboratorios del taller.
- La realización de los mismos es grupal. Los grupos son de 4 personas. Los grupos permanecen fijos para todos los proyectos.
- Cada grupo tendrá un ayudante asignado. Los ayudantes harán un seguimiento de los proyectos.
- Existen horarios reservados para práctica libre en el laboratorio los martes y jueves de 14 hs. a 18 hs.
Criterios generales para la corrección de proyectos
- Los proyectos se evaluarán de forma individual aunque su realización haya sido grupal.
Las posibles notas son las siguientes:
- B+ (superó los objetivos que se plantearon para el proyecto, por ejemplo, haciendo una implementación novedosa)
- B (cumplió con todas las pautas estipuladas para el proyecto)
- B- (el proyecto funciona, pero se evidencia cierta inseguridad en las respuesta)
- R (El proyecto no fue implementado en su totalidad, o las respuestas son poco precisas)
- M (no presentó el proyecto, o lo presento y no conoce la resolución del mismo)
Bitácora de clases
13/8 :
Modelo computacional (introduccion): evaluacion lazy e eager. Expresiones que tienen forma normal en una pero no en la otra. Ejemplo: mult inf 0 con la definicion
mult x 0 = 0
mult y (x+1) = y + mult y x
Clases en haskell: sintaxis para instanciar en una clase, ejemplo con clase Show para mostrar numeros expresados como
data Natural = Cero | Sucesor Natural
en la forma estandar 0, 1, … Definicion de la funcion naturalAInt que realiza esta transformacion.
Consulta de la tarde: implementacion de las conceptos introducidos en la clase de la mañana. Repaso de currificación y filter.
18/8:
Funcion foldr:
- foldr como formalizacion de la definicion inductiva (captura la manera en la que definimos inductivamente las funciones)
- foldr como homomorfismo (reemplaza [] por c y (:) por f)
- foldr como mecanismo de iteracion estructurado (empezando por c, reemplaza este valor por f x (foldr f c xs), hasta que la lista termina)
Por consulta de un alumno, resolvi el ejercicio de la funcion primIgualesA en el pizarron.
27/8:
Tipos de datos definidos por el usuario
- Tipo sinónimo.
- Valores y expresiones. Representación computacional.
- Tipos enumerados. Ejemplo tipo
Color
. - Tipos polimórficos simples. Ejemplo tipo
Punto a
.
Bibliografía : http://www.lcc.uma.es/~blas/pfHaskell/gentle/goodies.html
3/9:
Tipos de datos definidos por el usuario (2da parte)
- Tipos de datos recursivos. Ejemplos de
Lista a
yArbol a
(árbol con información en las hojas).
10/9:
- Modulos en haskell. Declaración simple (sin exports). Uso desde otros archivos.
- Ejemplo de tipo
Cola a
en módulo (modulo Cola, programa que lo usa. Modulo cola implementado con dos listas, programa que lo usa). - Explicación de
foldl
.
Proyectos
- Proyecto 1 - Recursión.
- Proyecto 2 - Tipos de datos creados por el usuario en Haskell.
- Proyecto 3 - TAD Diccionario en Haskell.
Instrucciones para inscribirse en la lista de mails
Desde la cuenta de mail <tu-usuario>@famaf.unc.edu.ar enviar un mail a:
alualgo1-join@famaf.unc.edu.ar
con cualquier subject o cuerpo del mail.
Después de enviarlo debe llegar un mail donde diga que la subscripcion fue realizada correctamente. Hacer un reply con el mismo subjet (pero que no diga Re: —).
Todo esto hay que hacerlo desde el webmail del FaMAF.
¡¡ Tener en cuenta !!
Si se cometió un error el sistema enviará un mail avisando. Por lo cual, siempre lea el mail de respuesta a la inscripción y verifique que no hubo un error. Si es así, repita el proceso.
Cualquier problema consultar con los administradores del laboratorio.