Última revisión realizada: 11/12/2023

Denominación de la asignatura: Diseño Avanzado de Algoritmos
Grado al que pertenece: Grado en Matemática Computacional
Créditos ECTS: 6
Curso y cuatrimestre en el que se imparte: Tercer curso, primer cuatrimestre
Carácter de la asignatura: Obligatoria
Materia a la que pertenece: Fundamentos de Informática

Presentación

La implementación eficiente de algoritmos en un computador es clave para la evaluación y resolución de problemas numérica y computacionalmente complejos. El matemático computacional debe conocer los principios para poder reproducir y mejorar la soluciones existentes.

Por ello, el objetivo principal de esta asignatura es proporcionar al alumno una visión general de las técnicas de conceptualización, diseño, evaluación y verificación del rendimiento de los algoritmos. El siguiente objetivo es su implementación en ejercicios, problemas y casos prácticos de referencia. Lógicamente, la implementación de estos algoritmos para producir aplicaciones ejecutables en un ordenador es una forma efectiva para terminar de entender el funcionamiento y la forma en que se mide la eficiencia de los algoritmos. Por esta razón las actividades entregables y evaluables son especialmente importantes en esta asignatura.

El coste computacional es otro concepto fundamental a la hora de juzgar la bondad de los algoritmos. Evidentemente se pide que un algoritmo resuelve un problema dado, pero también se le pide que lo haga con los recursos adecuados de los que disponemos o de los que podemos disponer razonablemente. La tecnología de nuestros computadores avanza constantemente, pero al mismo tiempo el volumen de datos que deseamos procesar es también cada vez mayor.

La asignatura es eminentemente práctica y muy relacionada con la programación y el manejo de los lenguajes de programación. A lo largo de la asignatura se realizan dos laboratorios donde el estudiante implementa algunos de los algoritmos estudiados.

Respecto a los conocimientos previos, asumimos que el estudiante está familiarizado con los conceptos básicos de programación funcional tal como se introducen en la asignatura Fundamentos de Programación.

Competencias básicas

  • CB1: Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio. .
  • CB2: Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean 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.
  • CB3: Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
  • CB4:Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
  • CB5:Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.

Competencias generales

  • CG6: Capacidad de presentar ideas, procedimientos o redactar informes, así como asesorar a personas u organizaciones en su ámbito de especialización en matemática computacional.

Competencias específicas

  • CE10: Capacidad de programar para resolver problemas relacionados con la matemática aplicada.
  • CE12: Ser capaz de conocer los fundamentos de la programación de ordenadores y su aplicación para la resolución de problemas.

Competencias transversales

  • CT1:Aplicar las nuevas tecnologías como herramientas para el intercambio comunicacional en el desarrollo de procesos de indagación y de aprendizaje.
  • CT2:Desarrollar habilidades de comunicación, para redactar informes y documentos, o realizar atractivas y eficaces presentaciones de los mismos.

Tema 1. Implementación y eficiencia de algoritmos

  • Introducción y objetivos
  • Repasando el lenguaje Python
  • Medidas de eficiencia
  • Medir el tamaño de la entrada
  • Medir el tiempo de ejecución
  • Caso peor, mejor y medio
  • Cuaderno de ejercicios

Tema 2. Estrategias de diseño y análisis de algoritmos

  • Introducción y objetivos
  • Recursividad
  • Divide y conquista
  • Algoritmos ávidos
  • Notación asintótica
  • Notación little
  • Análisis matemático de algoritmos iterativos
  • Análisis matemático de algoritmos recursivos
  • Análisis empírico de algoritmos
  • Cuaderno de ejercicios

Tema 3. Análisis de algoritmos recursivos

  • Introducción y objetivos
  • Planteamiento y resolución de ecuaciones de recurrencia homogéneas y no homogéneas
  • Ejemplos de cálculo del coste computaciona
  • Cuaderno de ejercicios

Tema 4. Divide y conquista

  • Introducción y objetivos
  • Descripción general de la estrategia
  • Ejemplos de algoritmos: divide y conquista
  • Cuaderno de ejercicios

Tema 5. Programación dinámica

  • Introducción y objetivos
  • Características de la programación dinámica
  • Ejemplos de problemas resueltos
  • Cuaderno de ejercicios

Tema 6. Algoritmos para problemas NP

  • Introducción y objetivos
  • Vuelta atrás: backtracking
  • Ramificación y poda
  • Cuaderno de ejercicios

Tema 7. Optimización combinatoria y algoritmos de aleatorización

  • Introducción y objetivos
  • Representación de problemas
  • Optimización en 1D
  • Algoritmos de aleatorización
  • Ejemplos de algoritmos de aleatorización
  • El teorema de Buffon
  • Algoritmo de Monte Carlo
  • Algoritmo Las Vegas
  • Cuaderno de ejercicios

Tema 8. Búsqueda local y con candidatos

  • Introducción y objetivos
  • Gradient Ascent
  • Hill Climbing
  • Simulated Annealing
  • Tabu Search
  • Búsqueda con candidatos
  • Cuaderno de ejercicios

Tema 9. Optimización multiobjetivo

  • Introducción y objetivos
  • Representación y modelización
  • Fórmula ponderada
  • Aproximación lexicográfica
  • Fronteras de Pareto
  • Cuaderno de ejercicios

Tema 10. Algoritmos de optimización con campos aleatorios

  • Introducción y objetivos
  • Modelización del campo aleatorio
  • Estimación de parámetros

Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.

Las actividades formativas de esta asignatura son las siguientes:

  • Trabajos individuales. Se trata de actividades de diferentes tipos: reflexión, análisis de casos, prácticas, análisis de textos, etc.
  • Trabajos colaborativos. Son actividades grupales en las que tendrás la oportunidad de trabajar con tus compañeros. Durante el desarrollo de la asignatura tendrás toda la información que necesites sobre cómo organizarte para trabajar en equipo.
  • Participación en eventos. Son actividades programadas todas las semanas del cuatrimestre como clases en directo o foros de debate.
Descargar programación

Estas actividades formativas prácticas se completan, por supuesto, con estas otras:

  • Estudio personal
  • Tutorías. Las tutorías se pueden articular a través de diversas herramientas y medios. Durante el desarrollo de la asignatura, el profesor programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las denominadas “sesiones de consultas”. Como complemento de estas sesiones se dispone también del foro “Pregúntale al profesor de la asignatura” a través del cual se articulan algunas preguntas de alumnos y las correspondientes respuestas en el que se tratan aspectos generales de la asignatura. Por la propia naturaleza de los medios de comunicación empleados, no existen horarios a los que deba ajustarse el alumno.
  • Examen final presencial

Las horas de dedicación a cada actividad se detallan en la siguiente tabla:

ACTIVIDADES FORMATIVAS HORAS POR ASIGNATURA % PRESENCIAL
Clases en directo 15 horas 100%
Lecciones magistrales 6 horas 0
Estudio del material básico 52 horas 0
Lectura del material complementario 25 horas 0
Trabajos, casos prácticos 17 horas 0
Sesiones prácticas de laboratorio virtual 12 horas 16,7
Tutorías 16 horas 30
Trabajo colaborativo 7 horas 0
Total 150 horas -

Bibliografía básica

Recuerda que la bibliografía básica es imprescindible para el estudio de la asignatura. Cuando se indica que no está disponible en el aula virtual, tendrás que obtenerla por otros medios: librería UNIR, biblioteca...

Los textos necesarios para el estudio de la asignatura han sido elaborados por UNIR y están disponibles en formato digital para consulta, descarga e impresión en el aula virtual.

Bibliografía complementaria

  • Ahmad, I. (2020). 40 Algorithms Every Programmer Should Know: Hone your problem-solving skills by learning different algorithms and their implementation in Python. Packt.
  • Brassard, P. B. y Bratley, T. (1997). Fundamentos de algoritmia. Pearson.
  • Cotta, C. (2018). Programación dinámica: introducción y ejercicios resueltos. Servicio de Publicaciones y Divulgación Científica de la Universidad de Málaga. 
  • Guerequeta, R. y Vallecillo, A. (1998). Técnicas de diseño de algoritmos. Universidad de Málaga.
  • Joyanes, L. et al. (2005). Estructuras de datos en C. McGraw-Hill
  • Skiena, S. (2011). The Algorithm Design Manual (2º ed.). Springer.
  • Tapia, A., Rodríguez, A. y Gutiérrez, D. (2020). Algoritmos Genéticos con Python. Marcombo.
  • Vargas, L. E. (2010). Problemas y algoritmos. Etnassoft.

El sistema de calificación se basa en la siguiente escala numérica:

0 - 4, 9 Suspenso (SS)
5,0 - 6,9 Aprobado (AP)
7,0 - 8,9 Notable (NT)
9,0 - 10 Sobresaliente (SB)

La calificación se compone de dos partes principales:

El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.

La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.

Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado. En la programación semanal de la asignatura, se detalla la calificación máxima de cada actividad o evento concreto puntuables.

Sistema de evaluación Ponderación min - max
Participación del estudiante (sesiones, foros, tutorías) 5% - 10%
Trabajos, proyectos, laboratorios/talleres y casos 10% - 30%
Test de autoevaluación 5% - 10%
Examen final presencial 60% - 60%

Miguel Angel Navarro Burgos

Formación académica: Doctor en Física y Matemáticas, Universidad de Granada, Granada, España; Ingeniero Matemático, Universidad de la Frontera, Temuco, Chile.

Experiencia: Diseño Avanzado de Algoritmos, Minaría de Datos, Estatística, Integración de Funciónses, de una Variable Real, Diferenciación de Funciones de varias Variables Reales, Complementos de análisis matemático, Implementación programa continuo de apoyo en conocimiento Matemático, Fundamentos de la Ingeniería, Análisis Numérico, Métodos Estadísticos, Matemáticas Discretas, Estadística Inferencial, Probabilidades y Estadística, Métodos Estadísticos, Probabilidades, Cálculo I.

Líneas de investigación: Análisis no lineal (ecuaciones en derivadas parciales, problemas elípticos no lineales, métodos topológicos y variacionales, estabilidad de soluciones de ecuaciones en derivadas parciales de tipo elíptico, regularidad de soluciones), análisis matemático y numérico, algoritmia, algoritmos eficientes e implementaciones computacionales, didáctica de la matemática.

 

Al tratarse de formación on line puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de las actividades y la fecha de exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:

  1. Desde el campus virtual podrás acceder al aula virtual de cada asignatura en la que estés matriculado y, además, al aula virtual del Curso de introducción al campus virtual. Aquí podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del aula virtual y sobre cómo se organiza una asignatura en UNIR. También podrás organizar tu plan de trabajo con tu tutor personal.
  2. Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada semana.
  3. Ya sabes qué trabajo tienes que hacer durante la semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico del tema correspondiente a esa semana.
  4. Comienza con la lectura del contenido teórico del tema. Este material es el que debes estudiar para superar la asignatura. Consulta, además, las secciones del tema que contienen material complementario: con esto podrás tener una visión más amplia sobre el tema que estás trabajando.
  5. Dedica tiempo al trabajo práctico (sección Actividades). En la programación semanal te detallamos cuáles son las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas.
  6. Te recomendamos que participes en los eventos del curso (clases en directo, foros de debate, etc.). Para conocer la fecha concreta de celebración de los eventos debes consultar las herramientas de comunicación del aula vitual. Tu profesor y tu tutor personal te informarán de las novedades de la asignatura.

En el aula virtual del Curso de introducción al campus virtual encontrarás siempre disponible la documentación donde te explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones. También puedes consulltar ahí el funcionamiento de las distintas herramientas del aula virtual: correo, foro, clases en directo, envío de actividades, etc.

Ten en cuenta estos consejos...

  • Sea cual sea tu plan de estudio, accede periódicamente al aula virtual, ya que de esta forma estarás al día de las novedades del curso y en contacto con tu profesor y con tu tutor personal.
  • Recuerda que no estás solo: consulta todas tus dudas con tu tutor personal utilizando el correo electrónico. Además, siempre puedes consultar tus dudas sobre el temario en los foros que encontrarás en cada asignatura (Pregúntale al profesor).
  • ¡Participa! Siempre que te sea posible accede a los foros de debate. El intercambio de opiniones, materiales e ideas nos enriquece a todos.
  • Y ¡recuerda!, estás estudiando con metodología online: tu esfuerzo y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes todo para el último día!