| Responsable: | Conrado Martínez Parra (conrado |
| Otros: | Amalia Duch Brown (duch Ana Edelmira Pasarella Sanchez (edelmira Carles Franquesa Niubo (carles.franquesa-niubo Gabriel Alejandro Valiente Feruglio (valiente Maria Teresa Abad Soriano (mabad |
| Créditos | Dept. | Tipo | Requisitos |
|---|---|---|---|
| 7.5 (6.0 ECTS) | LSI |
|
PRAP
- Prerequisito para la EI , ETIG PRED - Prerequisito para la EI , ETIG PS - Prerequisito para la ETIS |
| Responsable: | Conrado Martínez Parra (conrado |
| Otros: | Amalia Duch Brown (duch Ana Edelmira Pasarella Sanchez (edelmira Carles Franquesa Niubo (carles.franquesa-niubo Gabriel Alejandro Valiente Feruglio (valiente Maria Teresa Abad Soriano (mabad |
Proveer al estudiante de las técnicas básicas de algorítmica que permiten abordar el desarrollo de programas correctos y eficientes para resolver problemas no triviales. Dichas técnicas básicas incluyen conocimientos teóricos y prácticos, habilidades, experiencias y sentido crítico, todas ellas fundamentadas en teorías y técnicas sólidas, comprobadas y bien establecidas.
Horas estimadas de:
| T | P | L | Alt | L Ext. | Est | O. Ext. |
| Teoria | Problemas | Laboratorio | Otras actividades | Laboratorio externo | Estudio | Otras horas fuera del horario fijado |
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 3,0 | 2,0 | 0 | 0 | 0 | 5,0 | 0 | 10,0 | |||
|
MergesortQuicksort
Karatsuba Strassen Otros ejemplos |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 7,0 | 8,0 | 0 | 0 | 0 | 15,0 | 0 | 30,0 | |||
|
Heaps
Heapsort Colas de prioridad ampliadas Tablas de dispersión Árboles binarios de búsqueda Árboles binarios de búsqueda equilibrados |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 3,0 | 2,0 | 0 | 0 | 0 | 7,0 | 0 | 12,0 | |||
|
RepresentacionesRecorridos
Algoritmos básicos |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 5,0 | 5,0 | 0 | 0 | 0 | 12,0 | 0 | 22,0 | |||
|
Principios de los algoritmos voraces
Árboles de expansión mínimos: Kruskal, Prim Caminos mínimos: Dijkstra Códigos prefijos óptimos: Huffman Otros ejemplos |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 5,0 | 5,0 | 0 | 0 | 0 | 12,0 | 0 | 22,0 | |||
|
Principios de los algoritmos de búsqueda exhaustivaMarcha atrás (backtracking) y Ramificación y Poda (branch and bound)
Ejemplos Nociones de complejidad |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 5,0 | 5,0 | 0 | 0 | 0 | 12,0 | 0 | 22,0 | |||
|
Principios de los algoritmos de programación dinámica
Principio de optimalidad Soluciones recursivas, con memoización e iterativas Caminos mínimos: Floyd Distancia de edición Otros ejemplos |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 3,0 | 0 | 3,0 | 0 | 0 | 6,0 | |||
|
Introducción al lenguaje de programación C++, utilizado durante todo el curso para describir los algoritmos.
|
||||||||||
| Total por tipo | T | P | L | Alt | L Ext. | Est | O. Ext. | Total |
| 33,0 | 32,0 | 3,0 | 0 | 3,0 | 73,0 | 0 | 144,0 | |
| Horas adicionales dedicadas a la evaluación | 6,0 | |||||||
| Total horas de trabajo para el estudiante | 150,0 | |||||||
El temario se expone de forma muy práctica, a través de la presentación de muchos ejemplos.
Las clases se dividen en dos tipos: sesiones de teoría y sesiones de problemas. En media, las clases de teoría y problemas tienen el mismo número de horas semanales.
Las sesiones de teoría son clases de tipo magistral, es decir, clases en las que el profesor aporta a los alumnos nuevos conceptos o nuevas técnicas, así como ejemplos seleccionados que los motiven o ilustren.
Las clases de problemas tienen como objetivo desarrollar ejercicios o casos de estudio. Los profesores son quienes proponen los problemas que deben resolverse. Por lo que respecta a los ejercicios, la finalidad es la presentación y discusión de soluciones a enunciados relativamente simples que requieran pocos conocimientos teóricos o técnicos. En general, se trata de ejercicios escogidos con tal de ilustrar conceptos que se han explicado en las sesiones de teoría más recientes. Para los casos de estudio, los problemas propuestos tienen una mayor complejidad que la de los ejercicios y, además, incluyen diferentes conceptos teóricos que es necesario combinar para obtener una buena solución.
La evaluación constará de dos examenes parciales (PAR1 i PAR2),
y un examen final (FINAL), este último para los alumnos que hayan optado por no acogerse a la evaluación
continuada o que hayan obtenido una nota inferior a 4 en el primer parcial (PAR1). En el examen FINAL entra toda la materia de la asignatura.
Además, a lo largo del curso,
el alumno puede obtener entre 0 y 1 puntos correspondientes a trabajos voluntarios propuestos por los profesores (TV), consistentes en la realización de pequeños ejercicios de programación.
El primer examen parcial libera la primera parte de temario, en la que entran típicamente
los temas 1 a 4
del temario. Los alumnos que no quieran acogerse a la evaluación continuada (y por tanto no se han presentado al primer parcial) o que
obtengan una nota inferior a 4 en este
parcial habrán de presentarse al examen final.
Quienes hayan obtenido una nota mayor o igual a 4 en el parcial PAR1 pueden presentarse al examen final si lo desean, pero en tal caso no se les conservará la nota PAR1.
La nota de la asignatura se calcula de la siguiente manera:
[si PAR1 < 4 ó PAR1 = NP ] NF = min(FINAL + TV, 10)
Quienes obtienen una nota superior o igual a 4 en el primer parcial,
podrán escojer entre hacer el segundo parcial o el examen final.
En el segundo parcial entran típicamente los temas 5 a 7.
La nota de estos estudiantes será, según si hacen el segundo parcial o el final:
[si PAR1 >= 4 i PAR2 != NP] NF = min((PAR1 + PAR2) / 2 + TV, 10)
[si PAR1 >= 4 i PAR2 = NP i FINAL != NP] NF = min(FINAL + TV, 10)
El segundo examen parcial PAR2 se realiza en el mismo día y hora que el examen
FINAL, pero es de menor duración ya que sólo cubre una parte de temario.
Los exámenes consistirán en la resolución de problemas que permitan evaluar el grado de consecución de los objetivos específicos. Como mínimo un 80% de la nota de todas las pruebas provendrá de problemas basados en los que aparecen en la colección de problemas de la asignatura y que está a disposición de los estudiantes. Cada cuatrimestre habrá dos ediciones de la colección, una a comienzos del cuatrimestre (de cara a PARA1) y otra hacia mitad de curso (de cara a PAR2 y FINAL). No habrá ninguna otra modificación de la colección a lo largo del curso.
Dominio de las técnicas de programación imperativa basada en objetos:
- paso de parámetros,
- clases,
- objetos,
- métodos,
- punteros,
- memoria dinámica,
- genericidad,
- uso de clases estándar.
Conocer bien al menos un lenguaje imperativo orientado a objetos, preferentemente C++.
Recursividad.
Concepto de TAD.
TAD secuenciales:
- pilas,
- colas,
- listas con punto de interés,
- listas con iteradores.
Uso e implementación interna de los TAD secuenciales.
TAD arbóreos:
- árbol binario,
- árbol n-ario,
- árbol general,
- recorridos.
Uso e implementación interna de los TAD arbóreos.
Conocimientos matemáticos sobre grafos, sumatorios, límites. Matemática discreta. Capacidad para seguir y proponer razonamientos matemáticos.
Algunos conocimientos rudimentarios de estadística y probabilidades: espacio de probabilidad, acontecimientos, funciones de distribución, variable aleatoria, esperanza.