Créditos ECTS Créditos ECTS: 6
Horas ECTS Criterios/Memorias Horas de Titorías: 1 Clase Expositiva: 30 Clase Interactiva: 20 Total: 51
Linguas de uso Castelán, Galego
Tipo: Materia Ordinaria Grao RD 1393/2007 - 822/2021
Departamentos: Electrónica e Computación
Áreas: Ciencia da Computación e Intelixencia Artificial
Centro Escola Técnica Superior de Enxeñaría
Convocatoria: Primeiro semestre
Docencia: Con docencia
Matrícula: Matriculable
O obxectivo formativo desta materia é introducir ao estudantado no enfoque de problemas de programación máis complexos, a través dunha serie de estratexias algorítmicas básicas para a resolución dos devanditos problemas. Analizarase o custo en recursos computacionais das diferentes alternativas e, como casos paradigmáticos, describiranse e caracterizaranse os principais algoritmos de busca e ordenación e algunhas das súas aplicacións. Finalmente, completarase a formación en estruturas de datos non lineais, propoñendo a formalización e resolución de problemas mediante grafos.
Resultados de aprendizaxe:
- Saber resolver problemas de diversa índole, comprendendo a complexidade e a idoneidade das solucións propostas.
- Coñecer as estratexias algorítmicas básicas para o deseño de algoritmos eficientes.
- Saber aplicar algoritmos eficientes a problemas clásicos, como a ordenación e a busca.
- Saber determinar a complexidade espacial e temporal dos distintos algoritmos.
- Comprender e dominar estruturas de datos de tipo grafo e aprender a deseñar e aplicar algoritmos sobre elas, para resolver problemas básicos de IA.
- Aprender a deseñar e aplicar algoritmos en grafos, para resolver problemas básicos de IA.
Bloque 1. Técnicas algorítmicas I
Tema 1. Técnicas algorítmicas de forza bruta e recursividade
Bloque 2. Estruturas de datos non lineais: Árbores e Grafos
Tema 2.1: Árbores
Tema 2.2: Grafos I: conceptos e definicións
Tema 2.3: Grafos II: algoritmos
Bloque 3: Análise de algoritmos
Tema 3. Análise de algoritmos e complexidade computacional
Bloque 4: Técnicas algorítmicas II
Tema 4.1. Táboas hash
Tema 4.2. Divide e vencerás
Tema 4.3. Algoritmos voraces
Tema 4.4. Programación dinámica
Tema 4.5. Backtracking
Tema 4.6. Ramificación e poda.
Bloque 5. Busca e ordenación
Tema 5. Algoritmos de busca e 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)
A materia contribúe ao desenvolvemento das competencias básicas, xerais e específicas recollidas nos cadros correspondentes da citada memoria de título:
* Habilidades básicas:
[CB2] Que o alumnado saiba aplicar os seus coñecementos ao seu traballo ou vocación dun xeito profesional e posúa as competencias que adoitan demostrarse mediante o desenvolvemento e defensa de argumentos e resolución de problemas dentro da súa área de estudo.
[CB4] Que o alumnado poida transmitir información, ideas, problemas e solucións a públicos tanto especializados como non especializados.
[CB5] Que os e as estudantes desenvolveran aquelas habilidades de aprendizaxe necesarias para emprender estudos posteriores cun alto grao de autonomía.
* Habilidades xerais:
[CG1] Capacidade para concibir, escribir, organizar, planificar e desenvolver modelos, aplicacións e servizos no ámbito da intelixencia artificial, identificando obxectivos, prioridades, prazos, recursos e riscos, e controlando os procesos establecidos.
[CG2] Capacidade para resolver problemas con iniciativa, toma de decisións, autonomía e creatividade.
[CG3] Capacidade para deseñar e crear modelos e solucións de calidade baseadas na Intelixencia Artificial eficientes, robustas, transparentes e responsables.
[CG4] Capacidade para seleccionar e xustificar os métodos e técnicas adecuados para resolver un problema concreto, ou para desenvolver e propoñer novos métodos baseados na intelixencia artificial.
* Habilidades específicas:
[CE1] Capacidade para utilizar os conceptos e métodos matemáticos que poidan xurdir na modelización, abordaxe e resolución de problemas de intelixencia artificial.
[CE3] Capacidade para resolver problemas de intelixencia artificial que requiren algoritmos, desde o seu deseño e implementación ata a súa avaliación.
* Competencias transversais:
[TR2] Capacidade de traballo en equipo, en contornas interdisciplinarias e de xestión de conflitos.
[TR3] Capacidade para crear novos modelos e solucións de forma autónoma e creativa, adaptándose a novas situacións. Iniciativa e espírito emprendedor.
[TR6] Capacidade para integrar aspectos legais, sociais, ambientais e económicos propios da intelixencia artificial, analizando os seus impactos e apostando pola busca de solucións compatibles co desenvolvemento sostible.
A metodoloxía seguida utiliza o Campus Virtual da USC como plataforma básica. Na aula virtual da materia o alumnado disporá de toda a información (material teórico, exposicións de clase, guións prácticos, bibliotecas, etc.).
Impartiranse 20 horas de clases maxistrais en sesións de 1 hora, e haberá unha sesión semanal de dúas horas e media de traballo práctico (solución de problemas, programación).
O estudantado poderá seguir en todo momento o seu progreso, xa que ten continuamente dispoñible as notas dos exercicios e proxectos que teña que entregar para seguir o modelo de avaliación continua.
As competencias do tipo CB2, CB4, CB5, CG1, CG2, CG3, CG4, CE1 e CE3 teñen contidos asociados na parte teórico-práctica da materia e avalíanse de forma explícita nas probas que se realizan ao longo do curso.
A competencia TR2 trabállase fundamentalmente no aspecto da capacidade de organización e planificación, toma de decisións e resolución de problemas, nas entregas que teñen que realizar nas clases nas clases prácticas.
A competencia TR3 trabállase fundamentalmente no fomento da creatividade, o pensamento crítico, avaliando as diferentes posibilidades de resolución de problemas, tanto na teoría como na práctica, propoñendo problemas para desenvolver estas habilidades, con situacións cambiantes, e avalíanse na cualificación do problema. para entregar.
A competencia TR6 avalíase incluíndo os aspectos xurídicos, sociais, ambientais e económicos das solucións propostas aos diferentes exercicios, así como na explicación dos exercicios durante o desenvolvemento das clases expositivas.
A continuación detállase o desenvolvemento da materia, con 2h expositivas semanais e 2,5h de interactivas semanais, aínda que pode haber pequenos cambios polo transcorrer da docencia, festivos, etc.:
Semana 1:
- Expositiva 1. Presentación da materia. Bloque 1: Técnicas Algorítmicas I. Exercicios.
- Expositiva 2. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. AVL.
Semana 2:
- Expositiva 3. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Montículos.
- Expositiva 4. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Exercicios.
- Interactiva 1. Práctica 1: Árbores.
Semana 3:
- Expositiva 5. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Árbores B.
- Expositiva 6. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Grafos I.
- Interactiva 2: Práctica 1: Árbores.
Semana 4:
- Expositiva 7. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Grafos I. Exercicios.
- Expositiva 8. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Grafos II.
- Interactiva 3. Práctica 1: Árbores.
Semana 5:
- Expositiva 9. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Grafos II.
- Expositiva 10. Bloque 2: Estruturas de datos non lineais: Árbores e Grafos. Grafos II. Exercicios.
- Interactiva 4. Práctica 2: Grafos.
Semana 6:
- Expositiva 11. Bloque 3: Análise de algoritmos.
- Expositiva 12.Bloque 3: Análise de algoritmos. Exercicios.
- Interactiva 5. Práctica 2: Grafos.
Semana 7:
- Expositiva 13. Bloque 4: Técnicas algorítmicas II: Hash. Exercicios.
- Expositiva 14. Bloque 4: Técnicas algorítmicas II: Divide e vencerás. Algoritmos voraces. Exemplos.
- Interactiva 6. Práctica 2: Grafos.
Semana 8:
- Expositiva 15. Bloque 4: Técnicas algorítmicas II: Programación dinámica. Exemplos.
- 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. Exercicios.
- Expositiva 18. Bloque 4: Técnicas algorítmicas II: Ramificación e Poda.
- Interactiva 8. Práctica 3: Técnicas algorítmicas II
Semana 10:
- Expositiva 19. Bloque 4: Técnicas algorítmicas II: Ramificación e poda. Exemplos.
- Expositiva 20. Bloque 5: Ordenación e Busca. Exemplos.
- 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
A avaliación consta de dúas partes individuais separadas, teoría e práctica, sendo necesario superar as dúas partes de forma independente. Ademais, é necesario é necesario aprobar tódalas prácticas obrigatorias e tódolos tests y la prueba de teoría de forma independente.
A parte práctica da materia avaliarase mediante un proceso de AVALIACIÓN CONTINUA e corresponderá ao 40% da nota global. Esta consistirá na entrega de 4 proxectos prácticos durante o cuadrimestre, con prazos e normas de entrega/corrección prefixadas polo profesorado que serán publicados no campus virtual (ver temporización no apartado Metodoloxía da ensinanza). A ponderación destas prácticas é a seguinte:
Práctica 1 (10%): Árbores (avaliable obrigatoria)
Práctica 2 (10%): Grafos (avaliable obrigatoria)
Práctica 3 (10%): Técnicas Algorítmicas II (avaliable obrigatoria)
Práctica 4 (10%): Técnicas Algorítmicas II (avaliable obrigatoria)
Calcularase a media deste bloque sempre que se alcance unha nota mínima de 4 sobre 10 en cada práctica obrigatoria. Noutro caso, a nota final deste bloque será o valor mínimo entre as prácticas obrigatorias.
Utilízase para avaliar as competencias CB2, CG2, CG3, CE3, TR2 e TR3 mediante a entrega periódica das prácticas propostas durante o cuadrimestre.
A parte teórica avaliarase en dúas partes e corresponderá ao 60% da nota global:
-10%: Realización de 3 tests obrigatorios ao longo do cuadrimestre na semana posterior ao remate dos seguintes temas (ver temporización no apartado Metodoloxía da ensinanza): Bloque2. Árbores, Bloque 2. Grafos, Bloque 4. Técnicas algorítmicas II. Estes tests terán a valoración de 5 puntos, e haberá que sacar un mínimo de 3 puntos para superalos. A cualificación desta parte será a media entre todos os tests sempre que se cumpra a condición anterior, noutro caso, será a nota mínima de todos eles.
-50%: Exame final
Utilízase para avaliar as competencias CB4, CB5, CG1, CG4, CE1 e TR6 mediante diferentes preguntas do exame de teoría e a avaliación dos tests realizados durante o cuadrimestre.
A nota final da materia calcularase coas ponderacións anteriores sempre que se alcance unha puntuación final de 5 puntos e unha cualificación mínima de cada parte (prácticas, tests, exame) de 4 puntos. No caso de non alcanzarse os 5 puntos, a cualificación será o valor mínimo das 3 partes.
A entrega dalgún traballo (proxecto ou exercicio) posterior ao 1 de novembro estará asociada á consideración de PRESENTADA/O na cualificación da materia, con independencia da asistencia ou non ao exame final.
RECUPERACIÓN (2ª oportunidade):
Poderá presentarse a este exame o estudantado que non supere algunha das partes obrigatorias na avaliación continua, ou as persoas que opten directamente por esta opción.
- Teoría (60% da nota final): calcularase a cualificación a partir das cualificacións das partes aprobadas e das cualificacións das partes suspensas realizadas na 2ª oportunidade (tests e/ou exame final).
- Práctica (40% da nota final): calcularase a cualificación a partir das cualificacións das prácticas aprobadas e das cualificacións das prácticas obrigatorias suspensas realizadas na 2ª oportunidade mediante a resolución de novos exercicios de programación a entregar a data anterior ao exame final.
No caso de realización fraudulenta de exercicios ou probas, será de aplicación o recollido na Normativa de avaliación do rendemento académico dos estudantes e de revisión de cualificacións e sucesivas modificacións.
En aplicación da Normativa da ETSE sobre plaxio (aprobada pola Xunta da ETSE o 19/12/2019), a copia total ou parcial dalgún exercicio de prácticas ou teoría suporá o suspenso nas dúas oportunidades do curso, coa cualificación de 0,0 en ambos casos.
Esta materia ten 6 créditos ECTS, correspondendo unha carga de traballo total de 150 horas. Este tempo pode desagregarse nos seguintes apartados:
TRABALLO PRESENCIAL NA AULA:
*Clases maxistrais: 20 horas
*Sesións prácticas en grupos reducidos: 30 horas
*Titorización individual do alumnado: 1 hora
Total horas traballo presencial na aula: 51 horas
TRABALLO PERSOAL DO ALUMNADO:
* Estudo autónomo: 39 horas
* Escritura de exercicios, traballos, etc.: 15 horas
* Programación/experimentación en computador: 35 horas
* Avaliación de traballos, proxectos, exames: 10 horas
Total horas traballo persoal: 99 horas
Supóñense uns coñecementos suficientes de linguaxe de programación Python e dos fundamentos de estruturas de datos lineais, árbores e grafos, que ven, respectivamente, nas materias de Programación I e II, e en Matemática Discreta de primeiro curso.
Recoméndase seguir o modelo de avaliación continua, o que significa levar a materia ao día. Desta forma seguiranse con maior facilidade as clases teóricas e as clases prácticas, o que fai a materia máis levadía.
Tamén se recomenda encarecidamente o uso das horas de titorías para aclarar calquera dúbida que se poida presentar no desenvolvemento da materia.
Utilizarase o campus virtual da USC para toda a docencia, publicación de material, guións de prácticas e entrega de traballos.
O sistema operativo a utilizar nas prácticas é indiferente: Windows ou Linux. Poderase utilizar calquera IDE, como por exemplo Visual Studio.
A materia impartirase en castelán e galego.
María José Carreira Nouche
Coordinador/a- Departamento
- Electrónica e Computación
- Área
- Ciencia da Computación e Intelixencia Artificial
- Teléfono
- 881816431
- Correo electrónico
- mariajose.carreira [at] usc.es
- Categoría
- Profesor/a: Catedrático/a de Universidade
Victor Jose Gallego Fontenla
- Departamento
- Electrónica e Computación
- Área
- Ciencia da Computación e Intelixencia Artificial
- Teléfono
- 881815520
- Correo electrónico
- victorjose.gallego [at] usc.es
- Categoría
- Profesor/a: Axudante Doutor LOSU
Maria Del Carmen Magariños Iglesias
- Departamento
- Electrónica e Computación
- Área
- Ciencia da Computación e Intelixencia Artificial
- Correo electrónico
- mariadelcarmen.magarinos [at] usc.gal
- Categoría
- Profesor/a: Axudante Doutor LOSU
Luns | |||
---|---|---|---|
16:30-17:30 | Grupo /CLE_01 | Castelán | IA.11 |
Martes | |||
16:00-17:00 | Grupo /CLE_01 | Castelán | IA.11 |
17:00-19:30 | Grupo /CLIL_01 | Galego | IA.13 |
Mércores | |||
17:30-20:00 | Grupo /CLIL_02 | Galego | IA.14 |
Xoves | |||
17:00-19:30 | Grupo /CLIL_03 | Galego | 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 /CLE_01 | IA.02 |
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 |
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 |