Diferencia entre revisiones de «Algoritmos y Estructuras de Datos»

De Cuba-Wiki
(Agregadas algunas prácticas resueltas)
 
(No se muestran 108 ediciones intermedias de 25 usuarios)
Línea 1: Línea 1:
'''Algoritmos y Estructuras de Datos II''' es una materia donde se estudia la especificación formal de tipos de datos, y el diseño de los mismos para su posterior implementación. Tambien se ve, paralelamente, eliminación de la recursión, inducción estructural, métodos algoritmicos y algoritmos de sorting.
{{Plan 2023|Algoritmos y Estructuras de Datos II}}


Según el [[Plan de la Carrera]] es una materia a ser cursada en [[Plan de la Carrera#Segundo año|Segundo año]]. Es correlativa de [[Algoritmos y Estructuras de Datos I]] y es necesaria para cursar [[Algoritmos y Estructuras de Datos III]], [[Lógica y Computabilidad]] y [[Sistemas Operativos]]
{{Materia
  | anoCursada=Primer año
  | cargaHoraria=15 horas semanales
  | correlativas=[[Álgebra I]] e [[Introducción a la Programación]]
  | correlativaDe=[[Paradigmas de Programación]], [[Técnicas de Diseño de Algoritmos]], [[Lenguajes Formales, Autómatas y Computabilidad]] y [[Álgebra Lineal Computacional]]
}}
 
'''Algoritmos y Estructuras de Datos''' es una materia obligatoria de la [[Licenciatura en Ciencias de la Computación]], incluida también en su título intermedio [[Bachiller Universitario en Computación]]. En ella se enseñan técnicas de especificación, validación y verificación formal de algoritmos, y se definen los tipos abstractos de datos fundamentales, diseñando estructuras de datos y algoritmos eficientes para su implementación, entendiendo cómo impactan las distintas decisiones estructurales en la complejidad de los algoritmos y en la interfaz de los tipos abstractos.


== Información general sobre la cursada ==
== Información general sobre la cursada ==
Algoritmos II consiste de clases teóricas, prácticas y de laboratorio. Para aprobar la materia se deben rendir 2 exámenes parciales, 2 trabajos prácticos grupales y ademas, se deben entregar 4 talleres del laboratorio, los cuales son de programacion en C++. Los talleres pueden ser entregados en cualquier momento de la cursada.
Algoritmos consiste de clases teóricas, prácticas y de laboratorio. Para aprobar la materia se deben rendir 2 exámenes parciales, 2 trabajos prácticos grupales y ademas, se deben entregar 5 talleres del laboratorio, los cuales son de programación en Java.
<br> (Modalidad 1° Cuatrimestre 2022)
 
== Trabajos prácticos ==
La materia tenía 4 Trabajos Prácticos. El '''TP0''' era un trabajo corto cuyo objetivo era hacer que el alumno tome contacto y se acostumbre al desarrollo de estructuras de datos en [[Lenguaje: Cpp|C++]].
 
Los otros 3 Trabajos Prácticos consistían en las 3 etapas (Especificación, Diseño, Implementación) de un problema dado.
Los trabajos prácticos por lo general son bastante largos, pero sirven de buena experiencia para ese tipo de actividades.
 
Algoritmos II era promocionable. La condición de promoción del último cuatrimestre (2do Cuatri 2014) fue tener el primer ejercicio de cada parcial muy bien, y el resto todos bien, además de los 3 TPs aprobados con Muy Bien.
 
Desde el segundo cuatrimestre de 2016, los trabajos prácticos se vieron reducidos a tres, correspondientes con las tres etapas de un problema, y se dividió el TP0 en cinco talleres obligatorios, con otros dos opcionales. (En orden: programar una pila, uso de templates, un ABB, un Trie, iteradores (opcional), un diccionario sobre Hash Tables y uno de sorting (opcional)).
 
Para promocionar la materia según esta modalidad, se tenian que tener los dos primeros trabajos prácticos Muy Bien, el primer ejercicio de cada parcial Muy Bien, y ningún Regular o Insuficiente en los otros ejercicios.
 
Actualmente, en el segundo cuatrimestre de 2017, se eliminó la opción de promoción.


== Contenidos ==
== Contenidos ==
Línea 26: Línea 18:
En diseño lo que se hace es elegir la mejor manera (la mejor en términos de requerimientos de performance pero a su vez fácil de hacer) de representar los TADs en la "realidad" (principalmente, ésta realidad es un medio computacional). Para ésto es que se valen de estructuras de datos "básicas" mediante las cuales construir otras mas complejas que sirvan para otras aún más complejas, y así sucesivamente.
En diseño lo que se hace es elegir la mejor manera (la mejor en términos de requerimientos de performance pero a su vez fácil de hacer) de representar los TADs en la "realidad" (principalmente, ésta realidad es un medio computacional). Para ésto es que se valen de estructuras de datos "básicas" mediante las cuales construir otras mas complejas que sirvan para otras aún más complejas, y así sucesivamente.


*[[Tipos Abstractos de Datos]] (TADs)
*Especificación formal de software. Introducción a la validación y verificación.
*[[Inducción Estructural]]
*Métodos de demostración formal de correctitud (ej. weakest precondition). Teorema del invariante.
*[[Sorting]]
*Análisis básico de algoritmos: análisis asintótico, modelo RAM. Caso peor, promedio y mejor.
*[[Estructuras de Datos]]
*Impacto de la complejidad algorítmica en el [[diseño]] de estructuras de datos ([[Tipos Abstractos de Datos]]).
*[[Eliminación de la Recursión]]
*Algoritmos de búsqueda y ordenamiento básicos y avanzados (Sorting).
*[[Diseño]]
*Estructuras para búsqueda y ordenamiento: árboles de búsqueda, árboles balanceados, árboles digitales, hashing, colas de prioridad. Tipos de datos inductivos


== Guías prácticas ==
== Prácticas ==
Las guías de ejercicios correspondientes al cuatrimestre en curso pueden encontrarse en la página oficial de la materia.
*[https://gitlab.com/valn/uba/-/tree/main/Algoritmos%20y%20Estructuras%20de%20Datos%20(ex%20Algo%20II) Prácticas 4,5, y 7 resueltas + clases teóricas (PDFs) + primer parcial resuelto por valn / valnrms]
<!--[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-1/at_download/file Practica 1]: Tipos algebraicos y especificación.


[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-2-1/at_download/file Practica 2]: Inducción estrutural.
== Trabajos Prácticos ==
 
{| class="wikitable sortable"
[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-3-1/at_download/file Practica 3]: Diseño -- invariante de representación y función de abstracción.
! Año  !! Cuatrimestre        !! Fecha    !! Links
 
|-
[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-4-1/at_download/file Practica 4]: Ordenes y complejidad algorítmica.
|| 2023 || Segundo Cuatrimestre || 17/09/2023 || [[Medio:AED tp 2023-09-17 enunciado.pdf|Enunciado TP 1 (pdf)]]
 
|-
[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-5-1/at_download/file Practica 5]: Diseño.
|-
 
|| 2023 || Segundo Cuatrimestre || 11/11/2023 || [[Medio:TP2-Enunciado.pdf|Enunciado TP 2 (pdf)]]
[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-6-1/at_download/file Practica 6]: Divide and Conquer.
|}
 
[http://dc.uba.ar/materias/aed2/2015/2c/descargas/practicas/practica-7-1/at_download/file Practica 7]: Ordenamiento.-->
=== Guías prácticas de segundo cuatrimestre de 2017 resuelta ===
 
*[[AED2_resumen_2C-17|Práctica 1]]
 
=== Guías prácticas de segundo cuatrimestre de 2019 resueltas ===
*[https://github.com/muripic/divide-and-conquer Práctica 6]
 
=== Guías prácticas de primer cuatrimestre de 2020 resueltas ===
*[https://drive.google.com/drive/u/0/folders/1j5sUa6jlVm828vFDea7q1u2ylPNqWggr Drive con las guías y los resueltos de Algo2 virtual]
 
*[http://cuede.herokuapp.com/computacion/algoritmos-y-estructuras-de-datos-ii/ Página de soluciones colaborativas de los ejercicios]


== Parciales ==
== Parciales ==
Línea 66: Línea 44:
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
|-
|-
|| 2021 || Segundo Cuatrimestre || 04/12/2021 || Recuperatorio || [[Medio:AED2_2P_04-12-21.pdf| enunciado TADs (pdf) ]]
|| 2023 || Segundo Cuatrimestre || 10/10/2023 || Parcial || [[Medio:AyEDprimerparcial-segundaMesa-10-10-2023.jpg|enunciado (jpg) ]] [[Medio:MOA - Primer Parcial de AED (2C-2023).pdf|enunciado + resolución (pdf)]]
|-
|| 2021 || Segundo Cuatrimestre || 11/09/2021 || Parcial || [[Medio:AED2_2P_11-09-21.pdf| enunciado TADs (pdf) ]], [[Medio:Medio-AED2_2Parcial_11-09-21(resuelto)..pdf| resolución (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 07/07/2021 || Recuperatorio || [[Medio:AED2_1Recu_07-07-21.pdf|enunciado (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 17/04/2021 || Parcial ||
[[Medio:AED2_1Parcial_17-04-21.pdf|enunciado TADs (pdf) ]], [[Medio:Medio-AED2_1Parcial_17-04-21(resuelto)..pdf| resolución (pdf) ]]
|-
|-
|| 2019 || Primer Cuatrimestre || 06/07/2019 || Recuperatorio ||
[[Medio:AED2_2Parcial_06-07-19.pdf|enunciado (pdf) ]], 
[[Medio:Medio-AED2_2Parcial_06-07-19(resuelto)..pdf|resolución (pdf) ]]
|-
|-
|| 2019 || Primer Cuatrimestre || 04/05/2019 || Parcial ||
|| 2023 || Segundo Cuatrimestre || 7/10/2023 || Parcial || [[Medio:AyEDprimerparcial-7-10-2023.pdf|enunciado (pdf) ]]
[[Medio:AED2_1Parcial_04-05-19_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|-
|| 2018 || Primer Cuatrimestre || 05/05/2018 || Parcial ||
[[Medio:AED2_1Parcial_05-25-18_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|-
|| 2017 || Segundo Cuatrimestre || 30/09/2017 || Parcial ||
|| 2023 || Segundo Cuatrimestre || 10/10/2023 || Parcial || [[Medio:PrimerParcial2023-AED.pdf|Enunciado + Resolución (pdf)]]
[[Medio:AED2_1parcial_30-09-17_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2017 || Primer Cuatrimestre || 03/05/2017 || Parcial ||
[[Medio:AED2_1parcial_03-05-17_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Segundo Cuatrimestre || 16/09/2016 || Parcial ||
[[Medio:AED2_1parcial_16-09-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Segundo Cuatrimestre || 16/09/2016 || Parcial ||
[[Medio:AED2_1parcial_16-09-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Primer Cuatrimestre || 23/04/2016 || Parcial ||
[[Medio:AED2_1parcial_23-04-16_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2014 || Segundo Cuatrimestre || 27/09/2014 || Parcial ||
[[Medio:Algo2-1erParcial2014-2c-parte1.jpg|enunciado parte 1 (pdf) ]]
[[Medio:Algo2-1erParcial2014-2c-parte2.jpg|enunciado parte 2 (pdf) ]]
|}
|}


Línea 108: Línea 56:
{| class="wikitable sortable"
{| class="wikitable sortable"
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
|-
|| 2023 || Segundo Cuatrimestre || 25/11/2023 || Parcial || [[Medio:AyEDsegundoparcial-25-11-2023.pdf|enunciado (pdf) ]] [[Medio:MOA - Segundo Parcial de AED (2C-2023) compressed.pdf|enunciado + resolución (pdf)]]
|-
|-
|| 2021 || Segundo Cuatrimestre || 27/11/2021 || Recuperatorio||
[[Medio:Algo2 2021-2C Recu3 Enunciado.pdf|enunciado Sorting y D&C (pdf)]],
[[Medio:2021C2P3.-dyc-solucion.pdf|resolución (pdf)]]
|-
|-
|| 2021 || Segundo Cuatrimestre || 27/11/2021 || Recuperatorio||  
|| 2023 || Segundo Cuatrimestre || 25/11/2023 || Parcial || [[Medio:SegundoParcial2023-AED.pdf|Enunciado + Resolución (pdf)]]
[[Medio:Algo2 2021-2C Recu2 Enunciado.pdf|enunciado elección de estructuras (pdf)]]
|-
|| 2023 || Segundo Cuatrimestre || 12/12/2023 || Recuperatorio || [[Enlace:https://ubauba-my.sharepoint.com/:b:/g/personal/grunt_uba_ar/EYg6Ug2BltdEuwFKqzjy-JYB9UeqcgReWPZBPFC2MNVW3w?e=0OphAx|enunciado (pdf) + Resolución ]]
|-
|-
|| 2021 || Segundo Cuatrimestre || 27/11/2021 || Parcial ||
|}
[[Medio:AED2_2Parcial_27-11-21.pdf|enunciado Sorting y D&C (pdf) ]], [[Medio:2021C2P3-sorting-solucion.pdf|resuelto sorting]], [[Medio:2021C2P3-dyc-solucion.pdf|resuelto D&C]]
 
|-
== Finales ==
|| 2021 || Segundo Cuatrimestre || 30/10/2021 || Parcial ||
{| class="wikitable sortable"
[[Medio:AED2_2Parcial_30-10-21.pdf|enunciado elección de estructuras (pdf) ]],
! Año !! Mes        !! Fecha      !! Quién tomó/Quienes tomaron !! Links
[[Medio:AED2_2_Parcial_30-10-21.pdf| resolución (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 14/07/2021 || Recuperatorio ||
[[Medio:AED2_2Recu_14-07-21.pdf|enunciado (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 26/06/2021 || Parcial ||
[[Medio:AED2_4Parcial_26-06-21.pdf|enunciado Sorting y D&C (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 05/06/2021 || Parcial || [[Medio:AED2_3Parcial_05-06-21.pdf|enunciado elección de estructuras (pdf) ]], [[Medio:AED2_3_Parcial_05-06-21.pdf| resolución (pdf) ]]
|-
|| 2021 || Primer Cuatrimestre || 15/05/2020 || Parcial ||
[[Medio:AED2_2Parcial_15-05-20_resuelto.pdf| enunciado complejidad y rep/abs (pdf) ]]
|-
|-
|| 2020 || Segundo Cuatrimestre || ??/??/2020 || Parcial ||  
|| 2024|| Febrero|| 20/02/2024|| Víctor Braberman || [[Final 20/02/24 (Algoritmos II)|enunciado (wikitexto) ]]
[[Medio:AED2_2Parcial_??-??-20.pdf| enunciado elección de estructuras (pdf) ]]
|-
|-
|| 2020 || Segundo Cuatrimestre || 19/10/2020 || Parcial ||
[[Medio:AED2_2Parcial_19-10-20_resuelto.pdf| enunciado complejidad y rep/abs (pdf) ]]
|-
|| 2020 || Primer Cuatrimestre || ??/??/2020 || Parcial ||
[[Medio:AED2_3Parcial_??-??-20_enunciado.pdf| enunciado Sorting y D&C + resolución (pdf) ]]
|-
|| 2019 || Primer Cuatrimestre || 22/06/2019 || Parcial ||
[[Medio:AED2_2Parcial_22-06-19_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2018 || Segundo Cuatrimestre || 24/11/2018 || Parcial ||
[[Medio:AED2_2Parcial_24-11-18_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2018 || Primer Cuatrimestre || 23/06/2018 || Parcial ||
[[Medio:AED2_2Parcial_23-06-18_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2017 || Segundo Cuatrimestre || ??/??/2017 || Parcial ||
[[Medio:AED2_2parcial_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2017 || Primer Cuatrimestre || 12/06/2017 || Parcial ||
[[Medio:AED2_2parcial_12-06-17_resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Segundo Cuatrimestre || 02/11/2016 || Parcial ||
[[Medio:AED2_2parcial_02-11-16_Resuelto.pdf|enunciado + resolución (pdf) ]]
|-
|| 2016 || Primer Cuatrimestre || 08/06/2016 || Parcial ||
[[Medio:AED2_2parcial_08-06-16.pdf|enunciado (pdf) ]]
|-
|| 2014 || Segundo Cuatrimestre || 15/11/2014 || Parcial ||
[[Medio:Algo2-2doParcial2014-2c-parte1.jpeg|enunciado parte 1 (pdf) ]],
[[Medio:Algo2-2doParcial2014-2c-parte2.jpg|enunciado parte 2 (pdf) ]]
|-
|| 2014 || Primer Cuatrimestre || 14/06/2014 || Parcial ||
[[Medio:AED2_2parcial_14-06-14.pdf|enunciado + resolución (pdf) ]]
|}
|}


=== Compilado de parciales ===
*[https://campus.exactas.uba.ar/mod/resource/view.php?id=75770 Primeros Parciales]
*[https://campus.exactas.uba.ar/mod/resource/view.php?id=75771 Segundos Parciales]
== Finales ==
*[[Final 2/2C/2007 (Algoritmos II)|Final del segundo cuatrimestre de 2007]]
*[[Final 2/2C/2008 (Algoritmos II)|Final del primer cuatrimestre de 2008]]
*[[Final 2/2C/2009 (Algoritmos II) (2) |Final del segundo cuatrimestre de 2009]]
*[[Final 1C/2011 (Algoritmos II)|Final del primer cuatrimestre de 2011]]
*[[Final 10/3/2011 (Algoritmos II)|Final del 10/03/11]]
*[[Final 2C/2012 (Algoritmos II)|Final del segundo cuatrimestre de 2012]]
*[[Final 1C/2013 (Algoritmos II)|Final del primer cuatrimestre de 2013 (1)]]
*[[Final 1C/2013 2 (Algoritmos II)|Final del primer cuatrimestre de 2013 (2)]]
*[[Final 2C/2013 (Algoritmos II)|Final del segundo cuatrimestre de 2013]]
*[[Final 1C/2014 (Algoritmos II)|Final del primer cuatrimestre de 2014]]
*[[Final 2C/2014 (Algoritmos II)|Final del segundo cuatrimestre de 2014]]
*[[Final 20/2/2015 (Algoritmos II)|Final del 20/02/15]]
*[[Final 27/2/2015 (Algoritmos II)|Final del 27/02/15]]
*[[Final 30/7/2015 (Algoritmos II)|Final del 30/07/15]]
*[[Final 10/12/2015 (Algoritmos II)|Final del segundo cuatrimestre de 2015 (1, 2 y 3)]]
*[[Final 15/02/2015 (Algoritmos II)|Final del 15/02/16]]
*[[Final 25/02/2016 (Algoritmos II)|Final del 25/02/16]]
*[[Final 13/12/2016 (Algoritmos II)|Final del 13/12/16]]
*[[Final 20/12/2016 (Algoritmos II)|Final del 20/12/16 (Resuelto)]]
*[[Final 10/03/17 (Algoritmos II)|Final del 10/03/17]]
*[[Final 03/05/17 (Algoritmos II)|Final del 03/05/17]]
*[[Final 20/09/17 (Algoritmos II)|Final del 20/09/17]]
*[[Final 13/12/17 (Algoritmos II)|Final del 13/12/17]]
*[[Final 22/02/18 (Algoritmos II)|Final del 22/02/18]]
*[[Final 01/03/18 (Algoritmos II)|Final del 01/03/18]]
*[[Final 20/07/18 (Algoritmos II)|Final del 20/07/18]]
*[[Final 06/12/19 (Algoritmos II)|Final del 06/12/19]]
*[[Final 20/12/19 (Algoritmos II)|Final del 20/12/19]]
*[[Medio:final.pdf|Final del 25/02/21]]
*[[Medio:AED2 final 04-03-21.pdf|Final del 04/03/21]]
*[[Medio:AED2 final 21-04-21.pdf|Final del 21/04/21]]
*[[Final 11/08/21 (Algoritmos II)|Final del 11/08/21]]


== Apuntes ==
== Apuntes ==
*[https://github.com/igruntplay/apunte-primer-parcial-aed/blob/main/apunte_para_el_1er_parcial_AED.pdf Hoja de apunte para el primer parcial AED plan 23]
*[https://docs.google.com/spreadsheets/d/1cs_Up3N2bc84l0cupEuzR8KOLdJ1d1V2Ml8gtkl1rnU/edit#gid=0 Excel 2.0 preguntas/respuestas finales (editable por cualquiera a conciencia, se agradece cualquier contribucion o mejora)]
*[https://github.com/Sponja-/resumen-final-aed2/releases/latest/download/resumen-aed2.pdf "Resumen" para el final (2022).] [https://github.com/Sponja-/resumen-final-aed2 Repositorio en GitHub.]
*[[Medio:AED2_apunte_final_2021.pdf|Apunte teórico de la materia (2021)]]
*[[Medio:AED2_apunte_final_2021.pdf|Apunte teórico de la materia (2021)]]
*[https://github.com/CubaWiki/AED2-ApunteRotacionesAVL-gtagliavini/raw/master/main.pdf Balanceo de árboles y árboles AVL]: Notas sobre balanceo de árboles en general, profundizando en la implementación de árboles AVL.
*[https://github.com/CubaWiki/AED2-ApunteRotacionesAVL-gtagliavini/raw/master/main.pdf Balanceo de árboles y árboles AVL]: Notas sobre balanceo de árboles en general, profundizando en la implementación de árboles AVL.
Línea 220: Línea 86:
*[https://github.com/FerFrassia/Algo2/files/2216488/Sorting.pdf Apunte de Sorting.] [https://github.com/FerFrassia/Algo2/ Código fuente en GitHub.]
*[https://github.com/FerFrassia/Algo2/files/2216488/Sorting.pdf Apunte de Sorting.] [https://github.com/FerFrassia/Algo2/ Código fuente en GitHub.]
*[https://docs.google.com/spreadsheets/d/1k1LTX-qF_-eGeR3UwuvmAR4JsKLqk2vHsV6Bhmpen38/edit#gid=0 Googlesheet con respuestas de alumnes para el final de algoritmos 2]
*[https://docs.google.com/spreadsheets/d/1k1LTX-qF_-eGeR3UwuvmAR4JsKLqk2vHsV6Bhmpen38/edit#gid=0 Googlesheet con respuestas de alumnes para el final de algoritmos 2]
*[https://www.youtube.com/channel/UC4iUWhAWlMZkkJDCqyzz2hw/featured Canal de Youtube AED2 - DC - UBA]
*[[Medio:AED_apunte_2023_Tomas-Lisazo.pdf| Apunte completo de Tomi 2023 (actualizado al plan nuevo)]]


== Bibliografía recomendada ==
== Bibliografía recomendada ==
Línea 230: Línea 96:


== Enlaces externos ==
== Enlaces externos ==
*[http://www.dc.uba.ar/materias/aed2/ Página oficial de la materia]
*[https://www.youtube.com/channel/UC4iUWhAWlMZkkJDCqyzz2hw/featured Canal de Youtube AED2 - DC - UBA]
*[http://www.sorting-algorithms.com Demostraciones graficas de los distintos algortimos de sorting]
*[http://www.sorting-algorithms.com Demostraciones graficas de los distintos algortimos de sorting]
*[https://www.youtube.com/channel/UC4iUWhAWlMZkkJDCqyzz2hw/featured Canal de Youtube AED2 - DC - UBA]


[[Category:Materias]]
[[Category:Materias]]
[[Category:Computación]]
[[Category:Computación]]
[[Category:Programación]]
[[Category:Programación]]

Revisión actual - 19:52 23 mar 2024

Esta página es sobre la materia del plan de estudios 2023. Para ver la materia del plan 1993, consultar Algoritmos y Estructuras de Datos II.
Algoritmos y Estructuras de Datos
Año Primer año
Carga horaria 15 horas semanales
Correlativas Álgebra I e Introducción a la Programación
Correlativa de Paradigmas de Programación, Técnicas de Diseño de Algoritmos, Lenguajes Formales, Autómatas y Computabilidad y Álgebra Lineal Computacional

Algoritmos y Estructuras de Datos es una materia obligatoria de la Licenciatura en Ciencias de la Computación, incluida también en su título intermedio Bachiller Universitario en Computación. En ella se enseñan técnicas de especificación, validación y verificación formal de algoritmos, y se definen los tipos abstractos de datos fundamentales, diseñando estructuras de datos y algoritmos eficientes para su implementación, entendiendo cómo impactan las distintas decisiones estructurales en la complejidad de los algoritmos y en la interfaz de los tipos abstractos.

Información general sobre la cursada[editar]

Algoritmos consiste de clases teóricas, prácticas y de laboratorio. Para aprobar la materia se deben rendir 2 exámenes parciales, 2 trabajos prácticos grupales y ademas, se deben entregar 5 talleres del laboratorio, los cuales son de programación en Java.

Contenidos[editar]

Cuando se habla de especificación formal de tipos de datos (también conocidos como TADs) se refiere a expresar el comportamiento que va a tener en función de las diferentes acciones que se le aplican. Para ésto es que se vale de la lógica algebraica, o por axiomas, la cual (intenta) eliminar la ambigüedad que se podría producir si se hace en lenguaje castellano.

En diseño lo que se hace es elegir la mejor manera (la mejor en términos de requerimientos de performance pero a su vez fácil de hacer) de representar los TADs en la "realidad" (principalmente, ésta realidad es un medio computacional). Para ésto es que se valen de estructuras de datos "básicas" mediante las cuales construir otras mas complejas que sirvan para otras aún más complejas, y así sucesivamente.

  • Especificación formal de software. Introducción a la validación y verificación.
  • Métodos de demostración formal de correctitud (ej. weakest precondition). Teorema del invariante.
  • Análisis básico de algoritmos: análisis asintótico, modelo RAM. Caso peor, promedio y mejor.
  • Impacto de la complejidad algorítmica en el diseño de estructuras de datos (Tipos Abstractos de Datos).
  • Algoritmos de búsqueda y ordenamiento básicos y avanzados (Sorting).
  • Estructuras para búsqueda y ordenamiento: árboles de búsqueda, árboles balanceados, árboles digitales, hashing, colas de prioridad. Tipos de datos inductivos

Prácticas[editar]

Trabajos Prácticos[editar]

Año Cuatrimestre Fecha Links
2023 Segundo Cuatrimestre 17/09/2023 Enunciado TP 1 (pdf)
2023 Segundo Cuatrimestre 11/11/2023 Enunciado TP 2 (pdf)

Parciales[editar]

Primeros parciales[editar]

Año Cuatrimestre Fecha Instancia Links
2023 Segundo Cuatrimestre 10/10/2023 Parcial enunciado (jpg) enunciado + resolución (pdf)
2023 Segundo Cuatrimestre 7/10/2023 Parcial enunciado (pdf)
2023 Segundo Cuatrimestre 10/10/2023 Parcial Enunciado + Resolución (pdf)

Segundos parciales[editar]

Año Cuatrimestre Fecha Instancia Links
2023 Segundo Cuatrimestre 25/11/2023 Parcial enunciado (pdf) enunciado + resolución (pdf)
2023 Segundo Cuatrimestre 25/11/2023 Parcial Enunciado + Resolución (pdf)
2023 Segundo Cuatrimestre 12/12/2023 Recuperatorio enunciado (pdf) + Resolución

Finales[editar]

Año Mes Fecha Quién tomó/Quienes tomaron Links
2024 Febrero 20/02/2024 Víctor Braberman enunciado (wikitexto)


Apuntes[editar]

Bibliografía recomendada[editar]

  • R. Sedgewick, Algorithms in C Partes I-IV (1998). Addison Wesley. Toca casi todos los temas de la materia.
  • Bratley P. Brassard G. Fundamental of Algorithmics. International series of monographs on physics.Prentice Hall, 1995. Explica bastante bien la parte de complejidad.
  • Thomas Cormen; Charles Leirserson; Ronald Rivest y Clifford Stein, Introduction to algorithms, MIT Press, 2001 (Circulante 681 332 Cormen en la Biblioteca Central)
  • ACM Vol. 32.3 (Julio de 1985), pags. 652--686. link: [1]. Es el paper que desarrolla los Splay Trees.
  • Ronald Fagin et al. Extendible Hashing—a Fast Access Method for Dynamic Files. ACM Transactions on Database Systems 4.3 (sep. de 1979), págs. 315-344. issn: 0362-5915. doi:10.1145/320083.320092. Es el paper que desarrolla el método de Hashing Extensible (o Hashing Dinámico).

Enlaces externos[editar]