Doble Titulación en Ingeniería de Sistemas Audiovisuales e Ingeniería Multimedia

Doble Grado en Ingeniería de Sistemas Audiovisuales e Ingeniería Multimedia

La Salle Campus Barcelona te ofrece 5 dobles titulaciones en el ámbito de las Ingenierías TIC. Con los dobles grados podrás finalizar los estudios universitarios en 5 años académicos con dos titulaciones oficiales de grado

Programación avanzada y estructura de datos

Descripción
La asignatura tiene como objetivo ofrecer una visión avanzada de la programación de algoritmos, así como de las estructuras de datos más usadas. El estudio de la eficiencia de los algoritmos y diversas técnicas y estructuras se trabajan en profundidad con el objetivo de resolver problemas de forma eficiente y elegante. Es importante dominar el análisis descendiente, la modularidad, la gestión de la memoria, las estructuras de datos lineales, el lenguaje C, y otros contenidos trabajados en la asignatura de "Metodología y tecnología de la programación". Adquiriendo los conocimientos de la asignatura, el estudiantado desarrolla habilidades para proponer y discutir la adecuación de soluciones a problemas complejos.
Tipo asignatura
Optativa
Semestre
Anual
Créditos
8.00

Profesores Titulares

Profesor/a
Conocimientos previos

Dominio de las técnicas de programación trabajadas en la asignatura "Metodología y Tecnología de la Programación" (análisis descendente, modularidad, paso de parámetros y estructuras de datos básicos).
Facilidad para escribir código mediante un lenguaje de programación. (Recomendable C/Java).
Capacidad para seguir y proponer razonamientos matemáticos.

Objetivos

Los Resultados de Aprendizaje de esta asignatura son:
- Uso de un entorno real de programación
- Trabajo en equipo en el análisis, diseño e implementación de software
- Definición de la estructura modular y de datos para llevar a término las aplicaciones informáticas

Al finalizar el curso, el alumno debe ser capaz de:

- Justificar la necesidad de la especificación formal de algoritmos.
- Realizar la especificación formal de un algoritmo en términos de pre y post-condiciones.
- Implementar un algoritmo sin ambigüedades a partir de la especificación del mismo.
- Evaluar la eficiencia de un algoritmo a través del cálculo del coste.
- Diseñar un algoritmo recursivo.
- Explicar los principales mecanismos de derivación formal y verificación formal de algoritmos recursivos simples y llevarlo a la práctica en problemas.
- Escoger los métodos de resolución de problemas combinatorios más adecuados en cada situación.
- Implementar los métodos de Backtracking, Branch & Bound y Greedy adaptados a cada problema en concreto y buscando su máxima eficiencia y eficacia.
- Diseñar e implementar la estructura de datos más adecuada para una determinada aplicación, dados unos requisitos de eficiencia temporal y espacial.
- Implementar grafos y aplicar algoritmos para resolver problemas como el camino mínimo.
- Implementar los árboles binarios, AVL y R-trees. Implementar también los distintos recorridos posibles.
- Implementar tablas de hash.

Contenidos

Los contenidos generales por semestre son los siguientes:

Primer semestre:

1. Especificación de algoritmos
2. Eficiencia de algoritmos
3. Diseño recursivo
4. Programación dinámica
5. Teoría de la complejidad computacional
6. Problemas combinatorios

Segundo semestre:

7. Grafos
8. Árboles
9. Árboles R
10. Tablas

Metodología

Durante la asignatura, se usarán las siguientes metodologías, por semestre:

Primer Semestre:
- Clases magistrales, para aquellos contenidos que lo requieran.
- Problemas y ejercicios a clase, para consolidar conocimientos.
- Ejercicios de EC en clase y prácticas evaluables.
- Self-paced learning, para contenidos que no se evaluarán directamente.
- Flipped-classroom, para motivar el autoaprendizaje y dar soporte al estudiantado.

Segundo Semestre:
- Project-Based Learning, donde el estudiantado aprenderá a diseñar e implementar estructuras de datos.
- Clases magistrales intercaladas para introducir conceptos necesarios, complementados durante el PBL.
- Self-paced learning, para contenidos que no se puedan aplicar al proyecto.

Evaluación

El primer semestre se evalúa mediante un examen y dos prácticas. También se realizan ejercicios de evaluación continua que, más allá de fomentar el seguimiento de la asignatura, pueden permitir a alumnos que los superen con buenos resultados convalidar el examen final mediante una entrevista.

El segundo semestre se evalúa mediante un proyecto en grupo y un examen de validación individual.

Criterios evaluación

La asignatura es anual, por lo que la nota final se calcula a partir de las notas de los dos semestres, siempre que ambas sean superiores o iguales a 5. Si no se aprueban los dos semestres, la asignatura queda suspendida con una nota máxima de 4.

Nota_Final = 0.5 · Nota_S1 + 0.5 · Nota_S2

Primer semestre:

La nota del primer semestre se calcula a partir de la ponderación de las notas de conocimientos y prácticas:

Nota_S1 = 0.5 · Nota_Conocimientos_S1 + 0.5 · Nota_Prácticas_S1

Es necesario haber aprobado ambas partes (con un 5 o más) para aprobar el semestre. En caso contrario, la nota semestral será como mucho de 4.

Conocimientos

Para calcular esta nota se pondera la nota del examen final del primer semestre con la nota de evaluación continua, únicamente en caso de beneficiar al/la estudiante y siempre que la nota del examen sea superior o igual a 5.

Nota_Conocimientos_B1 = max( 0.4 · Nota_EC_S1 + 0.6 · Nota_Examen_S1,Nota_Examen_S1 )

Uno de los ejercicios de evaluación continua se entregará la semana del punto de control, substituyendo el examen correspondiente.

En caso de suspender la parte de conocimientos del primer semestre, se realizará un examen de recuperación en la convocatoria extraordinaria de julio, siendo 5 el mínimo para aprobar. La nota de evaluación continua no aplicará.

Prácticas

La nota de prácticas del primer semestre se calcula ponderando las notas de las dos prácticas que se realizan, teniendo que aprobar ambas por separado, con una nota igual o superior a 5. En caso contrario, la nota de prácticas será como mucho de 4.

Nota_Prácticas_S1 = 0.4 · Nota_Práctica_1 + 0.6 · Nota_Práctica_2

Entrevista de convalidación del examen semestral

En caso de que un/a estudiante cumpla los requisitos especificados a continuación, puede optar a convalidar el examen final del primer semestre. Para ello, el/la estudiante debe:

- Aprobar todas las ECs, obteniendo una media ponderada superior o igual a 7.
- Aprobar la Práctica 1 y presentar la Práctica 2, ambas en la primera convocatoria (sobre 10).
- Asistir de forma continuada a clase.

Los contenidos de la entrevista de convalidación, así como la forma de solicitarla, se comunicarán cuando se acerque el final del primer semestre.

El equipo de la asignatura propondrá una nota de convalidación a partir del resultado de la entrevista y las notas de EC. El/la estudiante es libre de renunciar a la convalidación, escogiendo entonces realizar el examen del primer semestre.

Segundo semestre:

El segundo semestre se basa en la metodología Project-Based Learning (PBL), por lo que la nota final de este se calculará a partir de la del proyecto.

El proyecto está dividido en cuatro fases, cada una correspondiendo a un bloque de contenidos. Cada fase empezará con la publicación del enunciado correspondiente y acabará con dos actividades de evaluación: Un checkpoint en forma de reunión con el equipo de la asignatura para validar el estado del proyecto, así como un cuestionario de autoevaluación P2P. Con estos dos elementos se calculará una nota orientativa por fase.

De todos modos, la evaluación definitiva se realizará al final del semestre, y consistirá en dos entregas diferentes: Código y memoria. La nota del proyecto ponderará estos dos elementos, pero cada integrante del grupo obtendrá una nota individual resultante de multiplicarla por dos factores entre 0.5 y 1.5: Mentoría y P2P.

Nota_Proyecto_S2 = 0.6 · Nota_Código + 0.4 · Nota_Memoria

Nota_S2 = Nota_Proyecto_S2 · Factor_Mentoría· Factor_P2P

El factor de mentoría lo determinará el equipo de la asignatura según el seguimiento en las sesiones prácticas, así como los resultados de los checkpoints. En caso que un grupo no se presente o no demuestre haber trabajado en dos o más checkpoints, la nota del proyecto será de NP y habrá que recuperar el semestre.

El factor de P2P se calculará a partir de los cuatro cuestionarios de autoevaluación. En caso de no responder uno de los cuestionarios, el factor se calculará a partir de los otros tres. En caso de no responder a dos o más, la nota del proyecto será NP y habrá que recuperar el semestre.

Para aprobar el código es necesario que todas las fases cumplan con los requisitos mínimos de forma independiente. En caso contrario la nota correspondiente será como mucho de 4.

Hay que aprobar el código y la memoria por separado con una nota de 5 o más. En caso contrario, la nota del proyecto será como mucho de 4 y no se aplicarán factores individuales a ningún miembro del grupo.

Examen de validación de conocimientos

Para validar que se han adquirido los conocimientos del semestre aun habiendo trabajado en grupo, todo/a estudiante que entregue el proyecto deberá presentarse a un examen de validación.

Si se aprueba con un 5 o más, este examen no tendrá efecto sobre la nota final. En caso contrario la substituirá, teniendo que recuperar el semestre.

Recuperación

En caso de suspender el proyecto (incluyendo no presentarlo o suspender el examen de validación), se realizará un examen de recuperación en la convocatoria extraordinaria de Julio, en el que habrá que obtener un 5 o más para aprobar.

De forma excepcional, según el seguimiento y el estado del proyecto se puede permitir una entrega de recuperación (sobre 8) a aquellos grupos que estén cerca de aprobar. El equipo de la asignatura tiene la potestad de permitir re-entregar el proyecto solamente a una parte del grupo, teniendo que presentarse el resto a examen de recuperación.

La re-entrega y el examen de recuperación son mecanismos mutuamente excluyentes. En caso de que un/a estudiante pueda re-entregar y decida presentarse al examen prevalecerá la nota de este último.

Bibliografía básica

Brass, P. (2008). Advanced Data Structures. Cambridge University Press.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to algorithms (4th Edition). MIT Press.
Sedgewick, R., Wayne, K. (2011). Algorithms (4th Edition). Addison-Wesley Professional.
Skiena, S. S. (2020). The algorithm design manual (3rd Edition). Springer.

Material complementario