Guía docente de Programación y Estructura de Datos (2AB111A)
Grado
Rama
Módulo
Materia
Curso
Semestre
Créditos
Tipo
Profesorado
Teórico
Práctico
- Juan Carlos González Quesada Grupo: 1
- Práxedes Martínez Moreno Grupos: 2 y 3
Tutorías
Juan Manuel Fernández Luna
Email- Primer semestre
- Lunes de 11:30 a 13:30 (D22 (Etsiit))
- Martes de 11:30 a 13:30 (D22(Etsiit))
- Jueves de 11:30 a 13:30 (D22 (Etsiit))
- Segundo semestre
- Lunes de 11:30 a 13:30 (D22 (Etsiit))
- Martes de 11:30 a 13:30 (D22 (Etsiit))
- Jueves de 11:30 a 13:30 (D22 (Etsiit))
Juan Carlos González Quesada
Email- Lunes de 09:30 a 11:30 (Nd (Etsiit))
- Martes de 11:30 a 12:30 (Nd (Etsiit))
Práxedes Martínez Moreno
Email- Miércoles
- 15:30 a 16:30 (Tut (Etsiit))
- 18:30 a 19:00 (Tut (Etsiit))
- Jueves de 17:30 a 19:00 (Tut (Etsiit))
Prerrequisitos y/o Recomendaciones
Se recomienda haber cursado y aprovechado convenientemente la asignatura de “Introducción a la Programación” de primer semestre de primer curso.
En el caso de utilizar herramientas de IA como apoyo al aprendizaje de la asignatura, el estudiante debe adoptar un uso ético y responsable de las mismas. Se deben seguir las recomendaciones contenidas en el documento de "Recomendaciones para el uso de la inteligencia artificial en la UGR" publicado en esta ubicación: https://ceprud.ugr.es/formacion-tic/inteligencia-artificial/recomendaciones-ia (en PDF: https://ceprud.ugr.es/sites/centros/ceprud/public/ficheros/Recomendaciones_IA_en_UGR.pdf )
Breve descripción de contenidos (Según memoria de verificación del Máster)
• Clases.
• Programación orientada a objetos.
• Tipos de datos contenedores y colecciones.
• Algoritmos de búsqueda y ordenación.
Resultados de aprendizaje (Objetivos)
- Comprender y aplicar los principios de la programación orientada a objetos para el diseño y desarrollo de soluciones software modulares y reutilizables.
- Utilizar y manipular los diferentes tipos de datos contenedores y colecciones para el modelado y la gestión eficiente de la información.
- Diseñar e implementar estructuras de datos adecuadas para la resolución de problemas computacionales.
- Desarrollar e implementar algoritmos clásicos de búsqueda y ordenación sobre diferentes conjuntos de datos.
- Aplicar la recursividad como técnica de diseño algorítmico para la resolución de problemas complejos.
- Evaluar la complejidad temporal y espacial de algoritmos y estructuras de datos mediante notación asintótica.
- Seleccionar y justificar la combinación óptima de estructuras de datos y algoritmos atendiendo a las restricciones de eficiencia de un problema dado.
Programa de contenidos Teóricos y Prácticos
Teórico
Tema 1: Fundamentos de programación orientada a objetos
Tema 2: Introducción a la complejidad algorítmica
Tema 3: Estructuras de datos
Tema 4: Algoritmos de búsqueda
Tema 5: Algoritmos de ordenación
Práctico
Módulo 1: Programación orientada a objetos
Módulo 2: Análisis de la complejidad algorítmica
Módulo 3: Estructuras de datos
Módulo 4: Algoritmos de búsqueda
Módulo 5: Algoritmos de ordenación
Seminario 1: Control de versiones
Seminario 2: Visualización interactiva de algoritmos y estructuras de datos
Bibliografía
Bibliografía fundamental
- Kalb, I. (2021). Object-oriented Python. No Starch Press.
- Agarwal, B., & Baka, B. (2022). Hands-on data structures and algorithms with Python: Write efficient code that is highly scalable and optimized (3rd ed.). Packt Publishing.
- Lee, K. D., & Hubbard, S. (2024). Data structures and algorithms with Python (2nd ed.). Springer.
- Miller, B. N., Ranum, D. L., & Nychka, L. T. (2021). Problem solving with algorithms and data structures using Python (3rd ed.). Runestone Academy.
- Canning, J., Broder, A., & Lafore, R. (2023). Data structures & algorithms in Python. Addison-Wesley.
- Lott, S. F., & Phillips, D. (2021). Python Object-Oriented Programming (4.ª ed.). Packt.
Bibliografía complementaria
- Bhargava, A. Y. (2024). Grokking algorithms: An illustrated guide for programmers and other curious people (2nd ed.). Manning Publications.
- Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2013). Data structures and algorithms in Python. John Wiley & Sons.
- Karumanchi, N. (2020). Data structures and algorithmic thinking with Python. CareerMonk Publications.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4.ª ed.). MIT Press.
Enlaces recomendados
- Python Tutor: https://pythontutor.com](https://pythontutor.com
- VisuAlgo: https://visualgo.net/es
- Algorithm Visualizer: https://algorithm-visualizer.org](https://algorithm-visualizer.org
- Python TimeComplexity Wiki: https://wiki.python.org/moin/TimeComplexity
- Documentación Oficial de Python (Estructuras de Datos): https://docs.python.org/3/tutorial/datastructures.html
- Real Python (Sorting Algorithms): https://realpython.com/sorting-algorithms-python/
- Runestone Academy (Libro interactivo): https://runestone.academy/ns/books/published/pythonds3/index.html
- GeeksforGeeks (Estructuras de Datos en Python): www.geeksforgeeks.org/python-data-structures/
- NeetCode: https://neetcode.io
- Exercism (Ruta de Python): https://exercism.org/tracks/python
- Problem Solving with Algorithms and Data Structures using Python: https://runestone.academy/runestone/books/published/pythonds/index.html
- OpenDSA: https://opendsa.cs.vt.edu
- Think Python: https://allendowney.github.io/ThinkPython/
- Pro Git (libro, en español): https://git-scm.com/book/es/v2
- Big-O Cheat Sheet (complejidad): https://www.bigocheatsheet.com/
- PEP 8 - Style Guide for Python Code: https://peps.python.org/pep-0008/
Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)
Evaluación Ordinaria
Todo lo relativo a la evaluación se regirá por la normativa de evaluación y calificación de los estudiantes vigente en la Universidad de Granada https://www.ugr.es/universidad/normativa/texto-consolidado-normativa-evaluacion-calificacion-estudiantes-universidad-granada. El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D 1125/2003, de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.
Según el sistema de evaluación, la calificación final de la convocatoria ordinaria se corresponderá con la siguiente ponderación global:
- Exámenes (60%),
- Ejercicios (15%),
- Prácticas (15%) y
- Participación activa (10%)
De forma más detallada, la nota final de la asignatura en su convocatoria ordinaria se calculará a partir de las calificaciones se obtengan en las siguientes pruebas y según la ponderación indicada:
- Pruebas teóricas de conocimientos y resolución de problemas informáticos: 50% de la calificación.
- Se realizarán dos exámenes, cada uno será un 30% de la calificación de teoría y una entrega de ejercicios resueltos propuestos y ejecutados en una sesión de clase que será el 30% de la calificación. El 10% restante procederá de la valoración de la participación pertinente del estudiante en todas las actividades formativas planificadas en las clases de teoría.
- Pruebas prácticas de conocimientos y resolución de problemas informáticos: 50% de la calificación.
- Se realizarán dos exámenes, cada uno será un 30% de la calificación de prácticas y la entrega de una práctica planteada y realizada durante una sesión de clase que será el 30% de la calificación. El 10% restante procederá de la valoración de la participación pertinente del estudiante en todas las actividades formativas planificadas en las sesiones de prácticas y seminarios.
Será necesario obtener una nota final igual o superior a 5 sobre 10 para aprobar la asignatura. Además, será necesario obtener una calificación mínima de 4 sobre 10 tanto en la parte de teoría como en la parte de prácticas. En caso de que no se llegue al mínimo en alguna de las partes, se le asignará al estudiante como calificación final el mínimo entre 4.9 y la nota obtenida en la asignatura.
Ponderación de las actividades formativas: Parte Teoría: 50.00%. Parte Prácticas: 50.00%.
Evaluación Extraordinaria
El/la estudiante se examinará de teórica y práctica. En esta convocatoria la parte de teoría incluye todo el temario y la parte de prácticas incluye todo lo que se trabajó en prácticas (actividades de laboratorio, problemas, trabajos tutelados y seminarios) a lo largo del curso.
El /la estudiante que no se presente a la parte de prácticas, mantendrá la nota alcanzada en la convocatoria ordinaria en dicha parte.
La nota final será la suma de la nota obtenida en cada parte ponderada al 50%.
Para aprobar la asignatura será necesario obtener una calificación final igual o superior a 5 sobre 10. Para poder aprobar es obligatorio obtener como mínimo un 4 sobre 10 tanto en la parte de teoría como en la parte de prácticas. En caso de que no se llegue al mínimo en alguna de las partes, se le asignará al estudiante como calificación final el mínimo entre 4.9 y la nota obtenida en la asignatura.
Ponderación de las actividades formativas:
Parte Teoría: 50.00%
Parte Prácticas: 50.00%
Evaluación única final
El/la estudiante realizará una prueba donde se evaluarán los conocimientos teóricos y una prueba donde se evaluarán los conocimientos y competencias prácticas. La calificación final será la media aritmética de las calificaciones obtenidas en las dos pruebas. Para aprobar la asignatura será necesario obtener una calificación final igual o superior a 5 sobre 10. Para poder aprobar es obligatorio haber obtenido como mínimo 4 sobre 10 tanto en la parte de teoría como en la parte de prácticas. En caso de que no se llegue al mínimo en alguna de las pruebas, se le asignará al estudiante como calificación final el mínimo entre 4.9 y la nota obtenida en la asignatura.
Información adicional
Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad .
Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos (https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad).
Software Libre
- Lenguaje de programación Python
- Editores de texto
- Entornos integrados de desarrollo (por ejemplo, VS Code, PyCharm Community, Jupyter)