Ir a cuerpo Ir a Estudios, Gobernanza y organización
Logo UA
Realizar búsqueda
Guías docentes
 

33709 - PROGRAMACIÓN II (2017-18)

Datos generales  

Código: 33709
Profesor/a responsable:
CORBI BELLOT, ANTONIO MIGUEL
Crdts. ECTS: 6,00
Créditos teóricos: 1,20
Créditos prácticos: 1,20
Carga no presencial: 3,60

Departamentos con docencia

Estudios en los que se imparte



Competencias y objetivos

Contexto de la asignatura para el curso 2017-18

Nos encontramos ante una asignatura de primer curso y del segundo semestre. Va precedida en el primer semestre por la asignatura "Programación-I" en la cual se estudian los fundamentos básicos de la programación y va seguido en tercer curso en el segundo semestre por la asignatura "Algoritmia" en la cual se enseña al alumno los conceptos de complejidad temporal y espacial asi como el concepto de esquema algorítmico.

 

 

Competencias de la asignatura (verificadas por ANECA en grados y másteres oficiales)

Competencias específicas (CE)

  • CE5 : Interpretar el funcionamiento del código fuente de un programa. Definir los tipos de datos necesarios para la representación de la información. Diseñar algoritmos y codificarlos con distintas técnicas de programación, especialmente en sistemas robóticos. Verificar el correcto funcionamiento de un programa.

 

Competencias Transversales

  • CT1 : Capacidades informáticas e informacionales.
  • CT2 : Ser capaz de comunicarse correctamente tanto de forma oral como escrita.
  • CT3 : Capacidad de análisis y síntesis.
  • CT4 : Capacidad de organización y planificación.

 

Competencia exclusiva de la asignatura

Sin datos

Resultados de aprendizaje (Objetivos formativos)

  • Estudiar detalladamente los requerimientos de un problema e identificar los objetivos y sus dependencias.
  • Diseñar programas de tamaño medio aplicando las técnicas y esquemas necesarios para la obtención de un algoritmo adecuado.
  • Desarrollar la capacidad de abstracción y de generalización para buscar soluciones alternativas en el diseño de un programa.
  • Identificar los tipos de datos necesarios para la resolución de un problema y dividir adecuadamente un programa en funciones.
  • Identificar las alternativas más eficientes para reducir el coste computacional.
  • Desarrollar programas con un estilo de programación adecuado, comprensible y eficiente.
  • Desarrollar capacidad crítica para la verificación del algoritmo con todos los casos posibles de entradas de datos.
  • Saber programar bajo el paradigma orientado a objetos en el desarrollo de aplicaciones, identificando posibles estrategias de solución a problemas con conceptos como la herencia, el polimorfismo o la genericidad.

Objetivos específicos indicados por el profesorado para el curso 2017-18

  • Saber qué es un Tipo Abstracto de Dato (TAD)
  • Conocer los TAD básicos: listas, pilas, colas; así como TAD más complejos como Arboles y Grafos.
  • Conocer el paradigma orientado a objetos y saber aplicarlo en las aplicaciones desarrolladas.
  • Conocer y aplicar correctamente las relaciones entre objetos y entre clases.
  • Aprender a usar correctamente el enlace dinámico de métodos así como el uso de excepciones.
  • Aprender el concepto de patrón de diseño software. Aprender a usar el patrón RAII.
  • Estudiar el concepto de programación dirigida por eventos así como saber aplicarlo.
  • Aprender a comparar la implementación del paradigma orientado a objetos en diversos lenguajes de programación.
  • Aprender a usar el paradigma orientado a objetos con lenguajes no orientados a objetos.
  • Conocer y saber usar mecanismos de paso de tests.

Contenidos y bibliografía

Contenidos para el curso 2017-18

Tema 1: Organización de la memoria. Tipos Abstractos de Datos

El lenguaje de programación C++ (C++98, C++11, C++14). Gestión y uso de memoria basada en la pila (stack), en almacenamiento global y en almacenamiento dinámico. Introducción a los Tipos Abstractos de Datos (TADs).

Tema 2: Tipos Abstractos de Datos: Listas (simples, dobles), Pilas, Colas

Definición. Operaciones básicas. Diferentes implementaciones.

Tema 3: Tipos Abstractos de Datos: Árboles, Grafos

Definición. Operaciones básicas. Diferentes implementaciones. Tipos de árboles. Tipos de grafos.

Tema 4: El paradigma orientado a objetos. Características básicas de los lenguajes orientados a objetos

Presentación y justificación del modelo de programación orientado a objetos. Requisitos para que un lenguaje se considere orientado a objetos. C++ como lenguaje orientado a objetos.

Tema 5: Clases y objetos. Espacios de nombres.

Definición del concepto de clase y del concepto de objeto. Diferentes tipos de clases (abstractas, metaclases, interfaces, etc…). Concepto de espacio de nombres. Agrupación de símbolos en espacios de nombres. Variables de clase, de instancia. Métodos de clase, de instancia.

Tema 6: Programación dirigida por eventos

¿Qué es un evento? ¿Cómo se producen?.
Cómo cambia nuestro estilo de programación.

Tema 7: Relaciones entre objetos. Herencia. Polimorfismo

Tipos de relaciones entre objetos en ausencia de herencia (uso, composición). Concepto de herencia entre clases. Herencia de implementación y herencia de interfaz. Relación ‘Es un’ entre objetos. Concepto de polimorfismo. Tipos de herencia (simple, múltiple).

Tema 8: Enlace dinámico

Implicaciones de la herencia entre clases y la relación ‘Es un’ entre objetos. Qué es el enlace dinámico. Ventajas e inconvenientes. Cómo influye en el diseño de lenguajes orientados a objetos (virtual, final).

Tema 9: Excepciones. Patrón RAII

Tratamiento de errores bajo el paradigma orientado a objetos. Qué es una excepción, Jerarquía de clases de excepciones. Cómo influye en el diseño de lenguajes orientados a objetos (try, throw, catch, finally). Patrón de diseño RAII y tratamiento de excepciones.

Tema 10: Estudio de diversos lenguajes de programación orientados a objetos

Cómo implementan diferentes lenguajes de programación las características explicadas hasta ahora. Java, C#, D, Python, etc...

Tema 11: POO con lenguajes no orientados a objetos

Usando sólo el lenguaje ‘C’ simularemos la herencia de clases, paso de mensajes, enlace dinámico y variables de clase.

Tema 12: Pruebas unitarias

Aprenderemos a pasar tests de forma sistemática a nuestro código. Automatización con el uso de CTest (CMake).

 

Enlaces relacionados

http://www.stroustrup.com/4th.html
The C++ Programming Language (4th Edition)The C++ Programming Language (4th Edition)The C++ Programming Language (4th Edition)v
https://adventofcode.com/
Colección de problemas de distinta dificultad. Cada año hay una nueva edición.
http://www.stroustrup.com/C++11FAQ.html
C++11 - the new ISO C++ standard
http://antares.sip.ucm.es/cpareja/libroCPP/
Ejercicios de programación creativos y recreativos en C++
http://www.introprogramming.info/english-intro-csharp-book/
Fundamentals of Computer Programming with C#
https://wiki.gnome.org/Projects/Vala/Documentation
Vala - Documentation
http://dlang.org/index.html
Lenguaje D
https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/ref=pd_sim_14_4?ie=UTF8&dpID=41-1VkO%2B1lL&dpSrc=sims&preST=_AC_UL320_SR232%2C320_&psc=1&refRID=F5EWWS25NKNNV67XJAQB
Introduction to Algorithms, 3rd Edition
https://www.amazon.com/Touch-Class-Learning-Program-Contracts/dp/3540921443/ref=sr_1_1?s=books&ie=UTF8&qid=1466582731&sr=1-1&keywords=touch+of+class
Touch of Class: Learning to Program Well with Objects and Contracts
https://cmake.org/
CMake + CTest
http://www.kitware.com/products/books.php
CMake Books
https://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos
Programación dirigida por eventos
http://doc.qt.io/qt-5/signalsandslots.html
QT Signal/Slot
https://www.amazon.com/Object-Oriented-Modeling-Design-Rumbaugh/dp/8120310462
Object Oriented Modeling and Design
https://developer.gnome.org/gobject/stable/gobject-Signals.html
GLib signals
https://wiki.gnome.org/Projects/Vala/SignalsAndCallbacks
Vala signals
http://https://en.wikipedia.org/wiki/C%2B%2B11
C++11 Para C++14 consultar: https://en.wikipedia.org/wiki/C%2B%2B14
http://www.algorithmist.com/index.php/Main_Page
The Algorithmist is a resource dedicated to anything algorithms - from the practical realm, to the theoretical realm.
http://www.icce.rug.nl/documents/cplusplus/
Documentación sobre C++. Mantenida al día y con ejemplos de uso.
https://www.boost.org/
Boost
https://gcc.gnu.org/
Gcc
http://clang.llvm.org/
Clang
http://rosalind.info/problems/locations/
Implementación de algoritmos relacionados con bioinformática.
http://www.stroustrup.com/programming.html
Programming -- Principles and Practice Using C++

 

Bibliografía

The algorithm design manual
Autor(es): Skiena, Steven S.
Edición: New York : Springer, 2020;
ISBN: 3-030-54256-4 (libro e.)
Categoría: Básico

The C++ Programming Language
Autor(es): Stroustrup, Bjarne
Edición: - : Addison-Wesley Professional, 2013;
ISBN: 0-13-352285-7 (libro e.)
Categoría: Básico

Programming : principles and practice using C++
Autor(es): Stroustrup, Bjarne
Edición: Upper Saddle River, NJ : Addison-Wesley Professional, 2014;
ISBN: 0-13-379675-2 (libro e.)
Categoría: Básico

A tour of C++
Autor(es): Stroustrup, Bjarne
Edición: - : Addison-Wesley, 2018;
ISBN: 0-13-499805-7 (libro e.)
Categoría: Básico

Mastering Cmake
Autor(es): Martin, Ken ; Hoffman, Bill
Edición: New York : Kitware, 2013;
ISBN: 978-1-930934-26-9
Categoría: Complementario

Introduction to algorithms
Autor(es): Cormen, Thomas H.
Edición: Cambridge : MIT Press, 2009;
ISBN: 978-0-262-03384-8
Categoría: Básico

The nature of code
Autor(es): Shiffman, Daniel
Edición: - : Daniel Shiffman, 2012;
ISBN: 978-0-9859308-0-6
Categoría: Complementario

Touch of class : learning to program well with objects and contracts
Autor(es): Meyer, Bertrand
Edición: Berlin : Springer, 2013;
ISBN: 978-3-54092-144-8
Categoría: Básico

Evaluación

Instrumentos y criterios de evaluación 2017-18

Primer periodo de evaluación: evaluación contínua

  1. Prácticas ordenador (I): Dos prácticas (p1 y p2). Con nota entre 0 y 10 puntos cada una. En la nota final la nota de cada práctica tendrá un peso del 10%. Parte Sí recuperable.
  2. Primera prueba conocimientos: Al inicio de la clase cuando se imparta el tema 7. Un examen tipo test (t1) que comprenderá los temas 1 a 6. El profesor deberá realizarla durante sus horas de clase. Tendrá una nota entre 0 y 10 puntos. Esta nota tendrá un peso del 30% en la formación de la nota final. No se podrá aprobar la asignatura si en dicho control no se obtiene al menos un 4, aunque la nota final del alumno sea superior a 5. Parte SÍ recuperable.
  3. Prácticas con ordenador (II): Dos prácticas (p3 y p4). Con nota entre 0 y 10 puntos cada una. En la nota final la nota de cada práctica tendrá un peso del 15%. Parte Sí recuperable.
  4. Segunda prueba de conocimientos: Se hará durante las tres semanas siguientes a la finalización de las clases, en la fecha oficial asignada por la escuela politécnica. Examen tipo test (t2) que comprenderá los temas 7 a 12. Con nota entre 0 y 10 puntos. Esta nota tendrá un peso del 20% en la nota final. No se podrá aprobar la asignatura si en dicho control no se obtiene al menos un 4, aunque la nota final del alumno sea superior a 5. Parte SÍ recuperable.
  5. No se podrá aprobar la asignatura si la nota final suma de la nota ponderada de las cuatro prácticas (p1+p2+p3+p4) es < 2.0.

- La asignatura se considera aprobada si la suma de las notas ponderadas p1, p2, p3, p4, t1 y t2 es >= 5.0.
- La asistencia a las sesiones prácticas es obligatoria, 4 o más faltas sin justificar supondrán un suspenso en prácticas.
- Si el alumno obtiene una nota final igual o superior a 5, pero o bien en uno de los tests su nota es < 4.0 o bien la suma de las cuatro notas ponderadas de prácticas es < 2.0, habrá suspendido el primer período de evaluación. La nota final será de 4,5.
- Si el alumno no ha obtenido calificación en ninguna de las actividades de evaluación, entonces el profesor calificará al alumno como "sin presencialidad".

Segundo período de evaluación

Si el alumno no supera el primer período de evaluación, podrá examinarse en julio de las partes recuperables, mediante un examen final. El alumno entonces sólo tendrá que realizar los tests de teoría cuya nota sea < 4.0 y caso de que la suma de las cuatro notas de prácticas ponderadas sea <2.0 también deberá realizar un único examen de prácticas en el laboratorio.

Sistema de evaluación que se aplicará en la convocatoria de diciembre

Un test que comprenderá la materia explicada en toda la asignatura (su peso de puntuación será el mismo que el de ambas pruebas de conocimientos descritas previamente) y un test que comprenderá los conocimientos adquiridos a lo largo de todas las prácticas con ordenador hechas durante toda la asignatura (su peso de puntuación será el mismo que el de las prácticas descritas previamente).

 

Descripción Criterio Tipo Ponderación
Prácticas con ordenador (II)

Dos prácticas. Con nota entre 0 y 10 puntos cada una. En la nota final la nota de cada práctica tendrá un peso del 15%. Parte Sí recuperable.

ACTIVIDADES DE EVALUACIÓN DURANTE EL SEMESTRE 30
Prácticas ordenador (I)

Dos prácticas. Con nota entre 0 y 10 puntos cada una. En la nota final la nota de cada práctica tendrá un peso del 10%. Parte Sí recuperable.

ACTIVIDADES DE EVALUACIÓN DURANTE EL SEMESTRE 20
Primera prueba conocimientos

Al inicio de la clase siguiente a la de finalización del tema 6. Un examen tipo test que comprenderá la materia explicada hasta ese momento (los seis primeros temas). El profesor deberá realizarla durante sus horas de clase. Tendrá una nota entre 0 y 10 puntos. Esta nota tendrá un peso del 30% en la formación de la nota final. No se podrá aprobar la asignatura si en dicho control no se obtiene al menos un 4, aunque la nota final del alumno sea superior a 5. Parte SÍ recuperable.

ACTIVIDADES DE EVALUACIÓN DURANTE EL SEMESTRE 30
Segunda prueba de conocimientos

Se hará durante las tres semanas siguientes a la finalización de las clases, en la fecha oficial asignada por la escuela politécnica. Examen tipo test sobre la materia explicada en la segunda mitad del semestre. Con nota entre 0 y 10 puntos. Esta nota tendrá un peso del 20% en la nota final. No se podrá aprobar la asignatura si en dicho control no se obtiene al menos un 4, aunque la nota final del alumno sea superior a 5. Parte SÍ recuperable.

ACTIVIDADES DE EVALUACIÓN DURANTE EL SEMESTRE 20

 

Fechas de pruebas de evaluación oficiales para el curso 2017-18

Convocatoria Fecha Hora Grupo - Aula(s) asignada(s) Observaciones
(C3) Periodo ordinario para asignaturas de segundo semestre y anuales 13/06/2018 15:00 - 18:00 A2/A02 
A2/C01 
Teoría
(C4) Pruebas extraordinarias para asignaturas de grado y máster 12/07/2018 08:30 - 11:30 A2/D11 
A2/E11 
Teoría
12/07/2018 11:30 - 14:30 0016P2002 
0016P2007 
Examen de programación.. Examen de recuperación de prácticas.

 

 



Profesorado

CORBI BELLOT, ANTONIO MIGUEL
Profesor/a responsable

  • CLASE TEÓRICA: Grupos:
    • 1
  • PRÁCTICAS CON ORDENADOR: Grupos:
    • 1
    • 2
    • 3

 

Grupos

CLASE TEÓRICA

Grupo Semestre Turno Idioma Matriculados
Gr. 1 (CLASE TEÓRICA) : 1 2S Mañana CAS 97


PRÁCTICAS CON ORDENADOR

Grupo Semestre Turno Idioma Matriculados
Gr. 1 (PRÁCTICAS CON ORDENADOR) : 1 2S Mañana CAS 32
Gr. 2 (PRÁCTICAS CON ORDENADOR) : 2 2S Mañana CAS 31
Gr. 3 (PRÁCTICAS CON ORDENADOR) : 3 2S Mañana CAS 34




Horarios

CLASE TEÓRICA

Grupo Fecha inicio Fecha fin Día Hora inicio Hora fin Aula
1 29/01/2018 23/05/2018 MIE 11:00 13:00 A2/D12  

PRÁCTICAS CON ORDENADOR

Grupo Fecha inicio Fecha fin Día Hora inicio Hora fin Aula
1 29/01/2018 23/05/2018 MAR 13:00 15:00 0016P2002  
2 29/01/2018 23/05/2018 LUN 09:00 11:00 0016P2002  
3 29/01/2018 23/05/2018 MIE 13:00 15:00 0016P2002