Créditos ECTS Créditos ECTS: 6
Horas ECTS Criterios/Memorias Horas de Tutorías: 1 Clase Expositiva: 30 Clase Interactiva: 20 Total: 51
Lenguas de uso Castellano, Gallego
Tipo: Materia Ordinaria Grado RD 1393/2007 - 822/2021
Departamentos: Electrónica y Computación
Áreas: Ciencia de la Computación e Inteligencia Artificial
Centro Escuela Técnica Superior de Ingeniería
Convocatoria: Primer semestre
Docencia: Con docencia
Matrícula: Matriculable
El objetivo de formación de esta asignatura es introducir al estudiantado en el planteamiento de problemas más complejos de programación, a través de una serie de estrategias algorítmicas básicas de resolución de dichos problemas. Se analizará el coste en recursos computacionales de las distintas alternativas y, como casos paradigmáticos, se describirán y caracterizarán los principales algoritmos de búsqueda, ordenación y algunas de sus aplicaciones. Por último, se completará la formación en estructuras de datos no lineales, planteando la formalización y resolución de problemas utilizando grafos.
Resultados del aprendizaje:
- Saber solucionar problemas de diversa índole, comprendiendo la complejidad e idoneidad de las soluciones propuestas.
- Conocer las estrategias algorítmicas básicas para el diseño de algoritmos eficientes.
- Saber aplicar algoritmos eficientes a problemas clásicos, como los de ordenación y búsqueda.
- Saber determinar la complejidad espacial y temporal de los distintos algoritmos.
- Entender y dominar las estructuras de datos tipo grafos y aprender a diseñar y aplicar algoritmos sobre ellas, para resolver problemas básicos de IA.
- Aprender a diseñar y aplicar algoritmos sobre grafos, para resolver problemas básicos de IA.
Bloque 1. Técnicas algorítmicas I
Tema 1. Técnicas algorítmicas de fuerza bruta y recursividad
Bloque 2. Estructuras de datos no lineales: Árboles y Grafos
Tema 2.1: Árboles
Tema 2.2: Grafos I: conceptos y definiciones
Tema 2.3: Grafos II: algoritmos
Bloque 3: Análisis de algoritmos
Tema 3. Análisis de algoritmos y complejidad computacional
Bloque 4: Técnicas algorítmicas II
Tema 4.1. Tablas hash
Tema 4.2. Divide y vencerás
Tema 4.3. Algoritmos voraces
Tema 4.4. Programación dinámica
Tema 4.5. Backtracking
Tema 4.6. Ramificación y poda.
Bloque 5. Búsqueda y ordenación
Tema 5. Algoritmos de búsqueda y ordenacion
Bibliografía Básica:
M.T. Goodrich, R. Tamassia, M.H. Goldwasser (2013). Data Structures and Algorithms in Python. John Wiley & Sons. ISBN: 978-1118290279.
K.A. Lambert (2014). Fundamentals of Python: Data Structures. Cengage Learning PTR. ISBN: 978-1285752006.
B.N. Miller, D.L. Ranum. (2011). Problem Solving with Algorithms and Data Structures using Python. Franklin, Beedle & Associates; 2nd edition ISBN: 978-1590282571.
Bibliografía Complementaria:
B. Agarwal, B. Baka (2018). Hands-On Data Structures and Algorithms with Python: Write complex and powerful code using the latest features of Python 3.7, 2nd Edition. Packt Publishing. ISBN: 978-1788995573.
B. Baka (2017). Python Data Structures and Algorithms: Improve application performance with graphs, stacks, and queues. Packt Publishing. ISBN: 978-1786467355
G. Brassard, P. Bratley. Fundamentos de algoritmia. 1ª edición. Madrid, Prentice Hall, 2002. ISBN: 84-89660-00-X (Biblioteca ETSE: A320 10 D)
La materia contribuye al desarrollo de las competencias básicas, generales y específicas recogidas en las correspondientes tablas en la mencionada memoria del título:
* Competencias básicas:
[CB2] Que el alumnado sepa aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posea las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
[CB4] Que el alumnado pueda transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
[CB5] Que el alumnado haya desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
* Competencias generales:
[CG1] Capacidad para concebir, redactar, organizar, planificar, y desarrollar modelos, aplicaciones y servicios en el ámbito de la inteligencia artificial, identificando objetivos, prioridades, plazos recursos y riesgos, y controlando los procesos establecidos.
[CG2] Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad.
[CG3] Capacidad para diseñar y crear modelos y soluciones de calidad basadas en Inteligencia Artificial que sean eficientes, robustas, transparentes y responsables.
[CG4] Capacidad para seleccionar y justificar los métodos y técnicas adecuadas para resolver un problema concreto, o para desarrollar y proponer nuevos métodos basados en inteligencia artificial.
* Competencias específicas:
[CE1] Capacidad para utilizar los conceptos y métodos matemáticos que puedan plantearse en la modelización, planteamiento y resolución de problemas de inteligencia artificial.
[CE3] Capacidad para resolver problemas de inteligencia artificial que precisen algoritmos, desde su diseño e implementación hasta su evaluación.
* Competencias transversales:
[TR2] Capacidad de trabajo en equipo, en entornos interdisciplinares y gestionando conflictos.
[TR3] Capacidad para crear nuevos modelos y soluciones de forma autónoma y creativa, adaptándose a nuevas situaciones. Iniciativa y espíritu emprendedor.
[TR6] Capacidad para integrar aspectos jurídicos, sociales, ambientales y económicos inherentes a la inteligencia artificial, analizando sus impactos, y comprometiéndose con la búsqueda de soluciones compatibles con un desarrollo sostenible.
La metodología seguida usa como plataforma básica el Campus Virtual de la USC. En la aula virtual de la materia el alumnado dispondrá de toda la información (material de teoría, presentaciones de clase, guiones de prácticas, bibliotecas, etc.).
Se impartirán 20 horas de clases magistrales en sesiones de 1 hora, y habrá una sesión semanal de dos horas y media de trabajo práctico (resolución de problemas, programación).
El estudiantado podrá en todo momento seguir su progresión, al tener disponibles continuamente las notas de los ejercicios y proyectos que hayan de entregar para seguir el modelo de evaluación continua.
Las competencias de tipo CB2, CB4, CB5, CG1, CG2, CG3, CG4, CE1 y CE3 tienen contenidos asociados en la parte teórico-práctica de la asignatura y se evalúan de forma explícita en las pruebas que se realizan durante todo el curso.
La competencia TR2 se trabaja fundamentalmente en el aspecto de la capacidad de organización y planificación, toma de decisiones y resolución de problemas, en las entregas que tienen que realizar en las clases en las clases prácticas.
La competencia TR3 se trabaja principalmente fomentando la creatividad, el pensamiento crítico, evaluando las diferentes posibilidades de resolver los problemas, tanto en teoría como en la práctica, proponiendo problemas para desarrollar estas habilidades, con situaciones cambiantes, y se evalúan en la calificación del problema a entregar.
La competencia TR6 se evalúa mediante la inclusión de los aspectos jurídicos, sociales, ambientales y económicos a las soluciones propuestas a los distintos ejercicios, así como en la explicación de ejercicios durante el desarrollo de las clases expositivas.
A continuación se detalla el desarrollo de la asignatura, con 2h expositivas y 2,5h interactivas semanales, aunque puede haber pequeños cambios por el transcurrir de la docencia, festivos, etc.:
Semana 1:
- Expositiva 1. Presentación de la asignatura. Bloque 1: Técnicas Algorítmicas I. Ejercicios.
- Expositiva 2. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. AVL.
Semana 2:
- Expositiva 3. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Montículos.
- Expositiva 4. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Ejercicios.
- Interactiva 1. Práctica 1: Árboles.
Semana 3:
- Expositiva 5. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Árboles B.
- Expositiva 6. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Grafos I.
- Interactiva 2: Práctica 1: Árboles.
Semana 4:
- Expositiva 7. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Grafos I. Ejercicios.
- Expositiva 8. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Grafos II.
- Interactiva 3. Práctica 1: Árboles.
Semana 5:
- Expositiva 9. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Grafos II.
- Expositiva 10. Bloque 2: Estructuras de datos no lineales: Árboles y Grafos. Grafos II. Ejercicios.
- Interactiva 4. Práctica 2: Grafos.
Semana 6:
- Expositiva 11. Bloque 3: Análisis de algoritmos.
- Expositiva 12.Bloque 3: Análisis de algoritmos. Ejercicios.
- Interactiva 5. Práctica 2: Grafos.
Semana 7:
- Expositiva 13. Bloque 4: Técnicas algorítmicas II: Hash. Ejercicios.
- Expositiva 14. Bloque 4: Técnicas algorítmicas II: Divide y vencerás. Algoritmos voraces. Ejemplos.
- Interactiva 6. Práctica 2: Grafos.
Semana 8:
- Expositiva 15. Bloque 4: Técnicas algorítmicas II: Programación dinámica. Ejemplos.
- Expositiva 16. Bloque 4: Técnicas algorítmicas II: Backtracking.
- Interactiva 7. Práctica 2: Grafos.
Semana 9:
- Expositiva 17. Bloque 4: Técnicas algorítmicas II: Backtracking. Ejercicios.
- Expositiva 18. Bloque 4: Técnicas algorítmicas II: Ramificación y Poda.
- Interactiva 8. Práctica 3: Técnicas algorítmicas II
Semana 10:
- Expositiva 19. Bloque 4: Técnicas algorítmicas II: Ramificación y poda. Ejemplos.
- Expositiva 20. Bloque 5: Ordenación y Búsqueda. Ejemplos.
- Interactiva 9. Práctica 3: Técnicas algorítmicas II
Semana 11:
- Interactiva 10: Práctica 4: Técnicas algorítmicas II
Semana 12:
- Interactiva 11: Práctica 4: Técnicas algorítmicas II
Semana 13:
- Interactiva 12: Práctica 4: Técnicas algorítmicas II
La evaluación consta de dos partes individuales separadas, teoría y práctica, siendo necesario superar ambas partes independentemente. Además, es necesario aprobar todas las prácticas obrigatorias y todos los tests y la prueba de teoría de forma independente.
La parte práctica de la asignatura se evaluará mediante un proceso de EVALUACIÓN CONTINUA y corresponderá al 40% de la nota global. Esta consistirá en la entrega de 4 proyectos prácticos durante el cuadrimestre, con plazos y normas de entrega/corrección prefijadas por el profesorado que serán publicados en el campus virtual (ver temporización en el apartado Metodología de la enseñanza). La ponderación de estas prácticas es la siguiente:
Práctica 1 (10%): Árboles (evaluable obligatoria)
Práctica 2 (10%): Grafos (evaluable obligatoria)
Práctica 3 (10%): Técnicas Algorítmicas II (evaluable obligatoria)
Práctica 4 (10%): Técnicas Algorítmicas II (evaluable obligatoria)
Se calculará la media de este bloque siempre que se alcance una nota mínima de 4 sobre 10 en cada práctica obligatoria. En otro caso, la nota final de este bloque será el valor mínimo entre las prácticas obligatorias.
Se utiliza para evaluar las competencias CB2, CG2, CG3, CE3, TR2 y TR3 mediante la entrega periódica de las prácticas propuestas durante el semestre.
La parte teórica se evaluará en dos partes y corresponderá al 60% de la nota global:
-10%: Realización de 3 tests obligatorios a lo largo del cuatrimestre en la semana posterior a la finalización de los siguientes temas (ver temporización en el apartado Metodología de la enseñanza): Bloque2. Árboles, Bloque 2. Grafos, Bloque 4. Técnicas algorítmicas II. Estos tests tendrán la valoración de 5 puntos, y habrá que sacar un mínimo de 3 puntos para superarlos. La calificación de esta parte será la media entre todos los tests siempre que se cumpla la condición anterior, en otro caso será la nota mínima de todos ellos.
-50%: Exame final
Se utiliza para evaluar las competencias CB4, CB5, CG1, CG4, CE1 y TR6 utilizando diferentes preguntas en el examen de teoría y la evaluación de los tests realizados durante el cuatrimestre.
La nota final de la asignatura se calculará con las ponderaciones anteriores siempre que se alcance una puntuación final de 5 puntos y una calificación mínima de cada parte (prácticas, tests, exame) de 4 puntos. En el caso de no alcanzarse los 5 puntos, la calificación será el valor mínimo de las 3 partes.
La entrega de algún trabajo (proyecto o ejercicio) con posterioridad al 1 de noviembre llevará asociada la consideración de PRESENTADA/O en la calificación de la materia, independientemente de la asistencia o no al examen final.
RECUPERACIÓN (2ª oportunidad):
Podrán realizar este examen el estudiantado que no superara alguna de las partes obligatorias en la evaluación continua, o las personas que opten directamente por esta opción.
- Teoría (60% de la nota final): se calculará a partir de las notas de las partes aprobadas y de las notas de las partes suspensas realizadas en la 2ª oportunidad (tests y/o examen final).
- Práctica (40% da nota final): se calculará a partir de las notas de las prácticas aprobadas y de las notas de las prácticas obligatorias suspensas realizadas en la 2ª oportunidad mediante la resolución de nuevos ejercicios de programación a entregar el día anterior al examen final.
En caso de realización fraudulenta de ejercicios o pruebas, será de aplicación lo recogido en la Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones y sucesivas modificaciones.
En aplicación de la Normativa de la ETSE sobre plagio (aprobada por la Junta de ETSE el 19/12/2019), la copia total o parcial de algún ejercicio de prácticas o teoría supondrá el suspenso en las dos oportunidades del curso, con la calificación de 0,0 en ambos casos.
Esta materia tiene 6 créditos ECTS, correspondiendo una carga de trabajo personal para los alumnos de 150 horas. Este tiempo puede desglosarse en los siguientes apartados:
TRABAJO PRESENCIAL EN EL AULA:
* Clases magistrales (teóricas, ejercicios o problemas): 20 horas
* Sesiones prácticas en grupos reducidos: 30 horas
* Tutorización individual del alumnado: 1 hora
Total horas trabajo presencial en el aula: 51 horas
TRABAJO PERSONAL DEL ALUMNADO:
* Estudio autónomo: 39 horas
* Escritura de ejercicios, trabajos, etc.: 15 horas
* Programación/experimentación en ordenador: 35 horas
* Evaluación de trabajos, proyectos, exámenes: 10 horas
Total horas trabajo personal: 99 horas
Se suponen unos conocimientos suficientes de lenguaje de programación Python y de los fundamentos de estructuras de datos lineales, árboles y grafos, que se ven, respectivamente, en las materias de Programación I y II, y en Matemática Discreta de primer curso.
Se recomienda seguir el modelo de evaluación continua, lo que significa llevar la materia al día. De esta forma se seguirán con mayor facilidad las clases teóricas y las clases prácticas, lo que hace la materia más llevadera.
También se recomienda encarecidamente el uso de las horas de tutorías para aclarar cualquier duda que se pueda presentar en el desarrollo de la materia.
Se utilizará el campus virtual de la USC para toda la docencia, publicación de material, guiones de prácticas y entrega de trabajos.
El sistema operativo a utilizar en las prácticas es indiferente: Windows o Linux. Se podrá utilizar cualquier IDE, como por ejemplo Visual Studio.
La asignatura se impartirá en castellano y gallego.
María José Carreira Nouche
Coordinador/a- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881816431
- Correo electrónico
- mariajose.carreira [at] usc.es
- Categoría
- Profesor/a: Catedrático/a de Universidad
Victor Jose Gallego Fontenla
- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881815520
- Correo electrónico
- victorjose.gallego [at] usc.es
- Categoría
- Profesor/a: Ayudante Doutor LOSU
Maria Del Carmen Magariños Iglesias
- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Correo electrónico
- mariadelcarmen.magarinos [at] usc.gal
- Categoría
- Profesor/a: Ayudante Doutor LOSU
Lunes | |||
---|---|---|---|
16:30-17:30 | Grupo /CLE_01 | Castellano | IA.11 |
Martes | |||
16:00-17:00 | Grupo /CLE_01 | Castellano | IA.11 |
17:00-19:30 | Grupo /CLIL_01 | Gallego | IA.13 |
Miércoles | |||
17:30-20:00 | Grupo /CLIL_02 | Gallego | IA.14 |
Jueves | |||
17:00-19:30 | Grupo /CLIL_03 | Gallego | IA.14 |
12.01.2026 09:15-14:00 | Grupo /CLE_01 | IA.01 |
12.01.2026 09:15-14:00 | Grupo /CLIL_01 | IA.01 |
12.01.2026 09:15-14:00 | Grupo /CLIL_02 | IA.01 |
12.01.2026 09:15-14:00 | Grupo /CLIL_03 | IA.01 |
12.01.2026 09:15-14:00 | Grupo /CLIL_01 | IA.02 |
12.01.2026 09:15-14:00 | Grupo /CLIL_02 | IA.02 |
12.01.2026 09:15-14:00 | Grupo /CLIL_03 | IA.02 |
12.01.2026 09:15-14:00 | Grupo /CLE_01 | IA.02 |
23.06.2026 09:30-14:00 | Grupo /CLE_01 | IA.01 |
23.06.2026 09:30-14:00 | Grupo /CLIL_01 | IA.01 |
23.06.2026 09:30-14:00 | Grupo /CLIL_02 | IA.01 |
23.06.2026 09:30-14:00 | Grupo /CLIL_03 | IA.01 |