Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos
, pero tiene capacidades previas
Departamento
CS
Profesorado
Responsable
- Jordi Delgado Pin (jdelgado@cs.upc.edu)
Otros
- Caroline König (caroline.leonore.konig@upc.edu)
- Jose Luis Balcázar Navarro (jose.luis.balcazar@upc.edu)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Transversales
Específicas
Genéricas
Objetivos
-
Conocer nuevas estructuras de datos: Pilas, Colas, Listas, Árboles y Grafos y los algoritmos asociados a las operaciones necesarias sobre estas estructuras.
Competencias relacionadas: CG2, CG4, CT6, CE03, CE04, CE12, -
Conocer diferentes implementaciones de estructuras de datos: Implementaciones utilizando estructuras de datos más simples proporcionadas por el lenguaje de programación, e implementaciones dinámicas.
Competencias relacionadas: CG2, CG4, CE02, CE03, CE04, CE12, -
Conocer los principios básicos de la orientación a objetos: Conceptos de clase, instancia, método, herencia (simple y múltiple), etc.
Competencias relacionadas: CG2, CG4, CT6, CE03, CE04, CE10, -
Ampliación de Complejidad Computacional: Big O, Big Omega, Master Theorems
Competencias relacionadas: CG2, CG4, CT6, CE02, CE12, CE13, -
Resolver en grupo un problema de tamaño pequeño-medio aplicando lo aprendido sobre orientación a objetos
Competencias relacionadas: CG2, CG4, CG8, CT4, CE03, CE04, CE10,
Contenidos
-
Árboles y Grafos
Comenzaremos el curso utilizando las estructuras de datos que el lenguaje de programación nos proporciona para implementar los Árboles y los Grafs. Veremos algoritmos de recorrido para las dos estructuras, y otros algoritmos importantes relacionados con éstas, como por ejemplo el algoritmo de Dijkstra. -
Objetos y Clases
Se introducen los conceptos fundamentales de orientación a objetos: Clase, objeto, instancia, delegación, herencia, etc. y otras particularidades de la implementación de la orientación a objetos propias del lenguaje de programación con que trabajamos. -
Estructuras dinámicas de datos
Se estudia cómo implementar estructuras de datos conocidas utilizando el concepto de referencia a un objeto. Se reimplementarán de este modo estructuras de datos que el lenguaje de programación proporciona por defecto, y estructuras de datos nuevas que ya hemos visto implementadas de forma más sencilla. -
Conjuntos y Diccionarios: Implementación
Veremos diferentes formas de implementar conjuntos y diccionarios: Tablas Hash y árboles binarios de búsqueda (BSTs). Se estudiarán las propiedades de estas estructuras, sus ventajas e inconvenientes. -
Ampliación de Complejidad Algorítmica
En PA1 se empezó a ver el concepto de complejidad de un programa, un algoritmo y un problema, e introdujimos la notación asintótica, concretamente la definición de Theta(f). Este tema quiere ser una continuación, donde veremos la Big O, la Big Omega, etc, y los Master Theorems.
Actividades
Actividad Acto evaluativo
Ampliación de Complejidad Algorítmica
Es necesario que el estudiante esté atento en clase y realice los ejercicios propuestos.Objetivos: 4
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Metodología docente
La docencia de la asignatura está estructurada en clases de teoría y clases de laboratorio.En las clases de teoría los profesores presentan los contenidos esenciales de la asignatura. En las clases de laboratorio se practican los contenidos de la asignatura (los presentados en clase y los adquiridos autónomamente) mediante la realización de problemas prácticos. Las clases de laboratorio serán una continuación de las clases teóricas, donde los conceptos nuevos se implementarán a medida que vayan apareciendo.
Método de evaluación
El método de evaluación de la asignatura consistirá en dos pruebas de carácter teórico (T1 y T2), una a mediados de curso y otra al final y una práctica de tamaño pequeño-medio (Practica).Entonces, el método de evaluación sería:
0.8 * Teoría + 0.2 * Practica
donde:
Teoría: MAX(T2, 0.5 * T1 + 0.5 * T2)
Reevaluación: sólo se pueden presentar a la reevaluación aquellas personas que, habiéndose presentado en el examen final, hayan suspendido la teoría. La nota máxima que se puede obtener en la reevaluación es un 7.
Competencia transversal "Trabajo en equipo":
Se evalúa usando una rúbrica simple en que el tutor de cada grupo puntúa los
diferentes aspectos del trabajo en equipo de cada miembro de los grupos.
Bibliografía
Básico
-
Composing programs
- DeNero, John,
-
Structure and interpretation of computer programs
- Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie,
MIT Press [etc.],
1996.
ISBN: 9780262011532
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002456139706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Data structures and algorithms with Python
- Lee, Kent D; Hubbard, Steve,
Springer,
2014.
ISBN: 9783319130712
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004152009706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementario
-
Python pocket reference
- Lutz, Mark,
O'Reilly Media,
2014.
ISBN: 9781449356941
Web links
- Aquest és el text PRINCIPAL de l'assignatura, la font d'informació primària per a tot allò que expliquem a classe. Tot i això, a PA2 hi ha temes que no apareixen en aquest text. http://composingprograms.com/
- La principal referència del llenguatge de programació que fem servir: Python. No és un lloc on aprendre a programar, és un lloc on consultar detalls de les construccions i llibreries del llenguatge https://docs.python.org/3/reference/index.html