====== Algoritmos y Estructuras de Datos I ====== Profesores [[wiki:javier|Javier Blanco]] [[http://www.cs.famaf.unc.edu.ar/~damian|Damian Barsotti]] [[http://www.cs.famaf.unc.edu.ar/~mdoming|Martín Domínguez]] ===== Contenidos Mínimos ===== La materia cuenta con un teórico y un laboratorio. ==== Teórico ==== La materia tiene un [[http://russell.famaf.unc.edu.ar/~damian/algoritmos1/apunte/main.ps.gz|apunte]] con los contenidos que se dan en la materia. Todos los contenidos del apunte se dan menos el capitulo 16 (Conjuntos y Listas). Esto incluye: * Cálculo proposicional y lógica de primer orden adaptados para la programación (cuantificadores generalizados). * Creación de especificaciones en esta lógica. * Derivación y verificación de programas funcionales en esta lógica. * Programación imperativa: * Derivación a la Dijkstra (búsqueda de invariantes). * Derivación a partir de funciones recursivas finales. ==== Laboratorio ==== === Linux === Todo lo escrito en el [[http://russell.famaf.unc.edu.ar/~damian/algoritmos1/introlinux/introlinux.pdf|tutorial]] de Linux. === Programación Funcional === Se enseña de Haskell solo lo necesario para programar los contenidos del teórico. Esto incluye: * Funciones recursivas. * Definición de funciones con guardas y patterns. * Definiciones locales. * Tipos aritméticos, caracteres y listas. * Creacion de tipos nuevos con **data** ((Solo se da un ejemplo de un tipo union estilo maybe.)). * Definición de operadores. === Programación Imperativa ===