Guía docente de Programación y Estructura de Datos (2AB111A)

Curso 2026/2027
Fecha de aprobación: 29/07/2026

Grado

Grado en Ciencia de Datos e Inteligencia Artificial

Rama

Ingeniería y Arquitectura

Módulo

Formación Básica

Materia

Fundamentos de Informática

Curso

1

Semestre

2

Créditos

6

Tipo

Troncal

Profesorado

Teórico

Juan Manuel Fernández Luna. Grupo: A

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)

  1. Comprender y aplicar los principios de la programación orientada a objetos para el diseño y desarrollo de soluciones software modulares y reutilizables.
  2. Utilizar y manipular los diferentes tipos de datos contenedores y colecciones para el modelado y la gestión eficiente de la información.
  3. Diseñar e implementar estructuras de datos adecuadas para la resolución de problemas computacionales.
  4. Desarrollar e implementar algoritmos clásicos de búsqueda y ordenación sobre diferentes conjuntos de datos.
  5. Aplicar la recursividad como técnica de diseño algorítmico para la resolución de problemas complejos.
  6. Evaluar la complejidad temporal y espacial de algoritmos y estructuras de datos mediante notación asintótica.
  7. 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

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)