Saltar al contingut Menu
Mapa
  • Inicio
  • Información
  • Contacto
  • Mapa

Programación de Sistemas (PS)

Créditos Dept. Tipo Requisitos
7.5 (6.0 ECTS) CS
  • Obligatoria para la ETIS
P1 - Prerequisito para la ETIS
PRAP - Prerequisito para la ETIS

Profesores

Responsable:  (-)
Otros:(-)

Objectivos Generales

Proporcionar al estudiante la capacidad de diseñar, implementar y evaluar estructuras de datos, así como la capacidad de diseñar, implementar y evaluar algoritmos sobre estas estructuras.

Objectivos Específicos

Conocimientos

  1. Tipos abstractos de datos: especificación, uso, diseño, implementación.
  2. Programación orientada a objetos: clases, objetos, métodos, herencia, polimorfismo, vinculación dinámica.
  3. Análisis de algoritmos: eficiencia, costes, casos, notación asintótica, resolución de recurrencias simples.
  4. Estructuras de datos elementales: pilas, colas, listas.
  5. Estructuras de datos avanzadas: árboles, diccionarios.
  6. Memoria dinámica: gestión de memoria dinámica, destructores, construcción por copia, asignación, garbage collection.
  7. Algoritmos de ordenación: quicksort, mergesort, heapsort.

Habilidades

  1. Adquirir una metodología para la especificación, el uso, el diseño y la implementación de tipos abstractos de datos.
  2. Conocer y saber usar una variedad de técnicas de implementación eficiente de estructuras de datos.
  3. Conocer tipos abstractos de datos genéricos, saber usarlos y saber adaptarlos para dar soluciones a necesidades específicas.
  4. Saber razonar sobre la corrección y eficiencia tanto de las implementaciones de los tipos abstractos de datos como de los algoritmos que los usan.
  5. Disponer de criterios que permitan, durante las etapas de especificación, diseño e implementación, escoger la alternativa más adecuada y disponer de elementos para argumentar de forma razonada sobre las elecciones realizadas.
  6. Conocer los mecanismos fundamentales de la orientación a objetos que permiten el desarrollo de software a gran escala con las propiedades de modularidad, escalabilidad, robustez, eficiencia, corrección, etc. necesarias.

Competencias

  1. Capacidad para el razonamiento crítico y lógico-matemático
  2. Capacidad para resolver problemas aplicando los métodos de la ciencia y la ingeniería
  3. Capacidad para diseñar sistemas, componentes o procesos que se ajusten a unas necesidades, utilizando los métodos, técnicas y herramientas más adecuadas en cada caso.
  4. Saber aplicar el ciclo de resolución de problemas típico de la ciencia y la ingeniería: especificación, generación de ideas y alternativas, diseño de una estrategia de solución, ejecución de la estrategia, validación, interpretación y evaluación de los resultados. Capacidad para analizar el proceso una vez acabado.
  5. Capacidad para relacionar y estructurar información de varias fuentes, para integrar ideas y conocimientos.

Contenidos

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

1. Análisis de algoritmos
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 4,0 0 0 0 8,0 0 16,0
Eficiencia temporal y espacial. Caso peor, medio, mejor. Notación asintótica. Propiedades. Análisis de algoritmos. Recurrencias. Resolución de recurrencias.

2. Estructuras lineales
T      P      L      Alt    L Ext. Est    O. Ext. Total 
6,0 6,0 3,0 0 3,0 12,0 0 30,0
Repaso del concepto de secuencia. Listas con punto de interés. Pilas y colas. Implementación en vector y por listas enlazadas de estructuras lineales. Iteradores.

3. Árboles
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 2,0 1,0 0 1,0 4,0 0 10,0
Repaso del concepto de árbol. Propiedades básicas. Recorridos en preorden, en postorden, en inorden, por niveles. Implementación de árboles con vector de apuntadores a los hijos. Implementación de árboles con apuntadores primogénito-siguiente_hermano.

4. Búsqueda y ordenación
T      P      L      Alt    L Ext. Est    O. Ext. Total 
8,0 8,0 4,0 0 4,0 16,0 0 40,0
Noción de diccionario. Técnicas de implementación de diccionarios sencillos. Técnicas de implementación avanzadas. Árboles binarios de búsqueda. Árboles binarios de búsqueda balanceados. Tablas de dispersión. Algoritmos de ordenación: quicksort, mergesort, heapsort.

5. Programación orientada a objetos y Tipos Abstractos de Datos
T      P      L      Alt    L Ext. Est    O. Ext. Total 
8,0 8,0 8,0 0 8,0 16,0 0 48,0
Repaso del concepto de tipo abstracto de datos (TAD). Clases, métodos, objetos. Constructores, destructores, asignación y constructor por copia. Implementación de TADs mediante clases. Herencia. Jerarquía de clases. Clases abstractas. Polimorfismo. Vinculación dinámica. Genericidad. Clases y métodos parametrizados. Instanciación.







  • Actividades de laboratorio adicionales:
    Estudio previo de los guiones y documentación de laboratorio. Desarrollo preliminar de las soluciones a los ejercicios propuestos antes de su codificación y prueba sobre el ordenador.


Total por tipo T      P      L      Alt    L Ext. Est    O. Ext. Total 
28,0 28,0 16,0 0 16,0 56,0 0 144,0
Horas adicionales dedicadas a la evaluación 4,0
Total horas de trabajo para el estudiante 148,0

Metodología docente

Se pretende exponer el temario de forma muy práctica, a través de la presentación de numerosos ejemplos.

Las clases se dividen en tres tipos: sesiones de teoría, sesiones de problemas y sesiones de laboratorio. Por lo general, las clases de teoría se distribuyen en dos horas semanales, las de problemas en dos horas semanales y las de laboratorio en una hora semanal. El profesor adaptará la repartición de estas clases de la mejor forma posible, dependiendo del temario.



Las sesiones de teoría son clases de tipo magistral, donde el profesor aporta a los estudiantes conceptos nuevos o técnicas nuevas, así como ejemplos seleccionados que los motiven o los ilustren.



Las clases de problemas tienen como objetivo desarrollar una serie de ejercicios o casos de estudio. El profesor es quien propone los problemas que se deben resolver. Para el que hace los ejercicios, su finalidad es la presentación y discusión de soluciones a enunciados relativamente simples que involucren unos pocos conocimientos teóricos o unas pocas técnicas. En general, se trata de ejercicios escogidos con tal de ilustrar conceptos que se han presentado en las sesiones de teoría más recientes. Con respecto a los casos de estudio, los problemas propuestos tienen una complejidad más grande que la de los ejercicios y, además, involucran diferentes conceptos teóricos que hace falta combinar para obtener una buena solución.



Las clases de laboratorio tienen como objetivo implementar soluciones a una serie de ejercicios prácticos. El profesor es quien propone los ejercicios prácticos que se deben resolver. Los estudiantes resolverán los ejercicios propuestos con la supervisión personalizada del profesor.

Método de evaluación

Se evaluará tanto el seguimiento de la asignatura, a través de pruebas de evaluación continua (P), como la realización de un examen final (F) que cubre todo el temario de la asignatura y la realización de prácticas de laboratorio (L).

La nota final de la asignatura se calculará con la fórmula:

0.3*L + 0.7*max(F, 0.6*F + 0.4*P)

Bibliografía básica

  • Mark Allen Weiss Data structures and problem solving using C++, Pearson Education International, 2003.
  • Robert Sedgewick Algorithms in C++ : Parts 1-4: Fundamentals, data structures, sorting, searching, Addison-Wesley, 1998.

Bibliografía complementaria

  • Mark Allen Weiss Data structures and algorithm analysis in C++, Pearson Education, 2006.

Enlaces web

  1. http://www-assig.fib.upc.edu/~ps


Capacidades previas

Dominio de las técnicas de programación imperativa. Conocimiento de al menos un lenguaje de programación imperativo y/o orientado a objetos. Recursividad. Conocimientos básicos de matemática discreta. Capacidad para seguir razonamientos matemáticos y formales. Algunos conocimientos elementales de estadística y probabilidad.


Compartir

 
logo FIB © Facultad de Informática de Barcelona - Contacto - RSS
Esta web utiliza cookies propias para ofrecerle una mejor experiencia y servicio. Si continúa la navegación, entendemos que acepta nuestra política de cookies. Versión clássica Versión móvil