Algoritmos y Estructuras de Datos
Algoritmos y Estructuras de Datos
3. Fundamentación
4. Programa sintético
Unidad 2: Funciones.
Unidad 3: Recursividad.
5. Objetivos
• Comprender y aplicar los conceptos de programación. Interpretar cada una de las fases de
desarrollo de un programa.
• Implementar algoritmos en un lenguaje de programación.
• Comprender y utilizar correctamente las distintas herramientas y símbolos de la diagramación lógica
de programas.
• Diagramar adecuadamente distintos procesos para ser codificados en cualquier lenguaje de
programación.
• Estudiar las estructuras de datos básicas para la implementación de tipos de datos abstractas
empleadas en aplicaciones computacionales.
• Conocer y utilizar algoritmos de búsqueda y ordenamiento.
• Desarrollar algoritmos para el mantenimiento y procesamiento de archivos secuenciales y directos.
• Resolver problemas mediante técnicas modulares y estructuradas.
• Resolver problemas utilizando Recursividad y analizar distintos tipos la misma.
• Analizar la complejidad y el orden de duración de un algoritmo.
• Comprender los conceptos de Validación y Verificación de Algoritmos.
• Fomentar la valoración de los algoritmos con base en el contexto de la solución computacional
donde son utilizados.
• Comprender las distintas técnicas de Programación Dinámica, tanto para optimizar las estructuras
de datos y algoritmos.
• Valorizar el pensamiento lógico individual y grupal.
6. Propósitos de la enseñanza
El curso es teórico practico, donde el estudiante debe desarrollar problemas en grupo e individualmente,
que permita poner en práctica los conocimientos adquiridos.
Las prácticas serán definidas por parte del profesor el cual dará́ únicamente los lineamientos generales a
seguir. El o los problemas escogidos y su solución aplicada deben ser expuestos por los grupos respectivos.
7. Contenidos
Unidad 2: Funciónes.
Conceptos de función. Parámetros de entrada y salida. Tipos de pasaje de parámetros. Variables locales y
globales. Tiempo de vida. Anidamiento de procedimientos y funciones. Visibilidad y alcance.
Implementación en unidades
Unidad 3: Recursividad.
División de un problema en sub-problemas. Posposición del trabajo. Rastreo inverso. Programas de árbol
estructurado. Principios de recursión. Aplicación a estructuras de información dinámica.
Conceptos de básicos Objetos, clases, métodos. Definición de métodos de clase y métodos en objetos
instanciados. Ciclo de vida de los Objetos. TAD’s y encapsulamiento proveído por los objetos en Python.
Tipos de datos definidos por el usuario. Definición de estructuras de datos. Concepto de matriz. Listas,
vectores y matrices multidimensionales. Operaciones. Concepto de registro y campo. Definición,
almacenamiento y recuperación de registros.
Unidad 7: Algoritmos de Ordenamiento y Busqueda.
Búsqueda lineal, binaria, en tabla y en cadena. Clasificación de arreglos y registros. Clasificación por
inserción, selección e intercambio. Clasificación por método Shell. Métodos de clasificación avanzados.
Definición y tipos de archivo. Archivos de texto y binarios. Operaciones disponibles para un archivo:
lectura, escritura, lectura y escritura. Archivos secuenciales y de acceso directo. Archivos indexados.
Procesamiento de archivos secuenciales. Totalizadores y contadores. Procesamiento de archivos directos.
Almacenamiento, recuperación, actualización y borrado de datos en forma lógica y física. Directorios:
creación, cambio y borrado.
Definición de datos complejos. Tipos de datos complejos. Listas enlazadas: Fundamentos teóricos.
Operaciones de inserción e inserción ordenada, búsqueda y borrado. Listas doblemente enlazadas y
circulares. Pilas y Colas: Conceptos, especificación y operaciones.
Bibliografía Obligatoria:
- [Joyanes, 2003] Joyanes Aguilar, L. (2003). Fundamentos de Programación; Algoritmos, Estructuras
de Datos y Objetos (3a. ed.). Madrid: McGraw-Hill Interamericana.
- [Cormen et al., 2017] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2017). Introduction
to algorithms.
- [Aho et al., 1998] Aho, A. V., Hopcroft, J. E., & Ullman, J. D. (1998). Estructuras de datos y
algoritmos.
- [Goodrich et al., 2018] Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2018). Data structures
and algorithms in Python.
- [Burin et al., 2017] Ing. Daniel Burin y Docentes de la cátedra 75.01/ 95.01 Computación (ed.
2017). Departamento de Computación, Facultad de Ingeniería, Universidad de Buenos Aires.
“Algoritmos y Programación I Aprendiendo a programar usando Python como herramienta”
http://materias.fi.uba.ar/7501/apunte%20PYTHON.pdf
- [Lee et al., 2015] Lee, K. D., & Hubbard, S. (2015). Data Structures and Algorithms with Python.
Cham: Springer International Publishing.
Bibliografía Complementaria:
- [Weiss, 2010] Weiss, M. A. (2010). Data structures & problem solving using Java. Boston: Pearson
Education.
- [Drozdek, 2007] Drozdek, A. (2007). Estructura de Datos Y Algoritmos en Java. Cengage Learning
Latin America.
- [Brassard et al., 2008] Brassard, G., & Bratley, P. (2008). Fundamentos de algoritmia. Madrid:
Pearson Prentice Hall.
- [Heilman, 2010] Heileman,Gregory, L. (2010). Estructura de datos, algoritmos y programación
orientada a objetos. La Habana: Editorial Félix Varela.
- [Gamma et al., 1995] Gamma, E., Helm, R., Johnson, R. E., & Vlissides, J. (1995). Design patterns:
Elements of reusable object-oriented software. Reading, Mass: Addison-Wesley.
9. Metodología
La cátedra estará compuesta por clases teórico-prácticas virtuales “presenciales” y trabajos prácticos
individuales y grupales.
Las clases teórico-prácticas, estarán divididas del siguiente modo:
• Exposición de los conceptos teóricos y Debate sobre los temas dados.
• Trabajos prácticos y ejercitaciones en conjunto para fijar los contenidos.
Trabajos prácticos:
• Resolución de ejercicios simples durante la clase.
• Auto-evaluaciones resumiendo los contenidos mínimos vistos en clase.
• Desarrollo de trabajos prácticos de investigación.
• Trabajos individuales y grupales
• Practica continua para adoptar “buenas practicas”
• Resolución ejercicios de una guía de Trabajos Prácticos
• Seguimiento de trabajos prácticos desarrollados en lenguaje Python.
La transformación de la educación durante los últimos tiempos, nos apremia a poner foco y
maximizar el uso de TIC’s para implementar la enseñanza “virtual” o “a distancia”, preparándonos
para la educación “post-pandemia”.
El uso del “Campus Virtual” continuando la propuesta pedagógica, será el portal de conocimiento
en donde los alumnos podrán la propuesta educativa y sus recursos. Complementando su uso,
con otras tecnologías para mejorar la participación e involucramiento de los estudiantes, tales
como, clases video-presenciales, herramientas on-line para la resolución de problemas, y recursos
mediáticos para reforzar la propuesta educativa.
Finalmente, utilizar el medio para continuar y reforzar el trabajo de los alumnos en grupos, ya que
sin un “aula física” la formación de “grupos”, e interacciones entre los estudiantes es reducida.
11. Evaluación
A. Requisitos de aprobación:
B. Criterios de evaluación:
Las clases de desarrollaran los días Jueves de 19 a 22 hs. En encuentros sincrónicos vía Google Meet y
posterior aplicación práctica a desarrollar en la semana siguiente. Cada Jueves se hará otro encuentro de
carácter Práctico.
Cronograma
Semana Tema
1 TEORIA Introducción y Repaso de Python
CLASE TEORICO-
2 Tipos de Datos, Errores y Excepciones
PRACTICA
CLASE TEORICO-
3 Funciones y Recursividad
PRACTICA
CLASE TEORICO-
4 Objetos en Python
PRACTICA
CLASE TEORICO-
5 Estructuras de Datos Lineales
PRACTICA
CLASE TEORICO-
6 – REPASO – PRACTICA –
PRACTICA
7 PARCIAL 1er PARCIAL
CLASE TEORICO-
8 Algoritmos de Ordenamiento y Búsqueda
PRACTICA
CLASE TEORICO-
9 Nociones de Complidad Computacional
PRACTICA
CLASE TEORICO-
10 Eficiencia de Algoritmos
PRACTICA
CLASE TEORICO-
11 Archivos
PRACTICA
CLASE TEORICO- Programación Dinámica, Estructuras de Datos
12
PRACTICA Dinamicas
13 PRACTICA – REPASO GENERAL –
14 PARCIAL 2do EXAMEN PARCIAL
15 RECUPERATORIO Recuperatorios 1er y 2do Parcial
16 Cierre de notas
PROGRAMA
NOMBRE MATERIA
CÓDIGO MATERIA
NOMBRE Y APELLIDO PROFESOR