Guía docente de Complementos de Programación (Especialidad Telemática) (221113D)

Curso 2024/2025
Fecha de aprobación: 27/06/2024

Grado

Grado en Ingeniería de Tecnologías de Telecomunicación

Rama

Ingeniería y Arquitectura

Módulo

Telemática

Materia

Servicios y Aplicaciones Telemáticos

Curso

3

Semestre

2

Créditos

6

Tipo

Obligatoria

Profesorado

Teórico

Andrés Cano Utrera. Grupo: A

Práctico

Andrés Cano Utrera Grupos: 1 y 2

Tutorías

Andrés Cano Utrera

Email
  • Primer semestre
    • Lunes de 10:30 a 13:30 (D25 (Etsiit))
    • Miércoles de 16:30 a 19:30 (D25 (Etsiit))
  • Segundo semestre
    • Lunes de 10:30 a 13:30 (D25 (Etsiit))
    • Miércoles de 16:30 a 19:30 (D25 (Etsiit))

Prerrequisitos y/o Recomendaciones

Los estudiantes no habrán de tener materias o asignaturas aprobadas como requisito indispensable para superar esta materia. No obstante, se recomienda tener aprobados los contenidos y adquiridas las competencias de cuatrimestres precedentes, especialmente de la asignatura Fundamentos de Programación de segundo curso.

Breve descripción de contenidos (Según memoria de verificación del Grado)

  • Estructuras dinámicas de datos.
  • Manejo de excepciones.
  • Programación multihebra.
  • Concurrencia.
  • Programación orientada a objetos.

Competencias

Competencias específicas

  • CE21. Capacidad de construir, explotar y gestionar las redes, servicios, procesos y aplicaciones de telecomunicaciones, entendidas éstas como sistemas de captación, transporte, representación, procesado, almacenamiento, gestión y presentación de información multimedia, desde el punto de vista de los servicios telemáticos. 
  • CE22. Capacidad para aplicar las técnicas en que se basan las redes, servicios y aplicaciones telemáticas, tales como sistemas de gestión, señalización y conmutación, encaminamiento y enrutamiento, seguridad (protocolos criptográficos, tunelado, cortafuegos, mecanismos de cobro, de autenticación y de protección de contenidos), ingeniería de tráfico (teoría de grafos, teoría de colas y teletráfico) tarificación y fiabilidad y calidad de servicio, tanto en entornos fijos, móviles, personales, locales o a gran distancia, con diferentes anchos de banda, incluyendo telefonía y datos. 
  • CE24. Capacidad de describir, programar, validar y optimizar protocolos e interfaces de comunicación en los diferentes niveles de una arquitectura de redes. 
  • CE27. Capacidad de programación de servicios y aplicaciones telemáticas, en red y distribuidas. 

Competencias Transversales

  • CT01. Capacidad de análisis y síntesis: Encontrar, analizar, criticar (razonamiento crítico), relacionar, estructurar y sintetizar información proveniente de diversas fuentes, así como integrar ideas y conocimientos.  
  • CT02. Capacidad de organización y planificación así como capacidad de gestión de la Información. 
  • CT03. Capacidad de comunicación oral y escrita en el ámbito académico y profesional con especial énfasis, en la redacción de documentación técnica. 
  • CT04. Capacidad para la resolución de problemas. 
  • CT05. Capacidad para tomar decisiones basadas en criterios objetivos (datos experimentales, científicos o de simulación disponibles) así como capacidad de argumentar y justificar lógicamente dichas decisiones, sabiendo aceptar otros puntos de vista. 
  • CT06. Capacidad para el uso y aplicación de las TIC en el ámbito académico y profesional.  
  • CT07. Capacidad de comunicación en lengua extranjera, particularmente en inglés. 
  • CT08. Capacidad de trabajo en equipo. 
  • CT09. Capacidad para el aprendizaje autónomo así como iniciativa y espíritu emprendedor. 
  • CT10. Motivación por la calidad y la mejora continua, actuando con rigor, responsabilidad y ética profesional.  
  • CT11. Capacidad para adaptarse a las tecnologías y a los futuros entornos actualizando las competencias profesionales.  
  • CT12. Capacidad para innovar y generar nuevas ideas. 
  • CT13. Sensibilidad hacia temas medioambientales. 
  • CT14. Respeto a los derechos fundamentales y de igualdad entre hombres y mujeres. 
  • CT15. Capacidad para proyectar los conocimientos, habilidades y destrezas adquiridos para promover una sociedad basada en los valores de la libertad, la justicia, la igualdad y el pluralismo. 

Resultados de aprendizaje (Objetivos)

  • Completar los conocimientos de programación estructurada que adquirió en la asignatura Fundamentos de Programación de segundo curso.
  • Aprender a enfrentarse al desarrollo de proyectos de mayor tamaño, donde es indispensable un diseño más complejo de la solución.
  • Comprender los principios de la programación orientada a objetos.
  • Conocer cómo controlar los posibles errores de ejecución de un programa mediante el uso de excepciones, para así poder separar la parte de código donde se producen los errores de la parte donde se gestionan.
  • Conocer las estructuras dinámicas de datos más comunes ofrecidas por los lenguajes de programación y aprender a construir nuestras propias estructuras de datos.
  • Aprender a decidir el tipo de estructura de datos más apropiada a cada problema.
  • Conocer el mecanismo de las hebras para la programación de sistemas concurrentes en la resolución de los problemas reales planteados.
  • Planificar escenarios de prueba que aseguren la fiabilidad y rendimiento de los sistemas programados, desde el punto de vista de eficiencia, tiempo de computación y uso de memoria.
  • Conocer las herramientas y plataformas disponibles para afrontar el análisis, diseño, implementación, prueba y monitorización de aplicaciones.

Programa de contenidos teóricos y prácticos

Teórico

TEMA 1. Introducción a la programación de orientada a objetos

  • Introducción a la PDO, tipos de datos simples, arrays y matrices, operadores, sentencias de control.

TEMA 2. Clases y objetos

  • Concepto de clase y objeto, constructores, métodos, sobrecarga, clases internas.

TEMA 3. Herencia y polimorfismo

  • Herencia, sobreescritura de métodos, polimorfismo, clases abstractas, interfaces, paquetes.

TEMA 4. Gestión de excepciones

  • Concepto de excepción. Captura de excepciones. Lanzamiento explícito de excepciones. Creación de excepciones propias.

TEMA 5. Programación multihebra y concurrencia

  • Creación y ejecución de tareas y hebras. Suspensión y finalización de hebras. Prioridades de hebras. Pools de hebras. Comunicación entre hebras. Sincronización y comunicación de hebras. Bloqueos. Ejemplos de aplicaciones. Estados de una hebra. Programación paralela.

TEMA 6. Estructuras dinámicas de datos

  • Tipos genéricos. Métodos genéricos. Listas simples, listas enlazadas, conjuntos, mapas, tablas hash. Diseño de estructuras propias, condiciones de uso, ventajas e inconvenientes. Iteradores.

Práctico

Temario práctico:

  • Práctica 4. Práctica sobre programación orientada a objetos.
  • Práctica 8. Práctica sobre concurrencia, estructuras de datos e interfaces gráficas de usuario.

Seminarios/talleres:

  • Seminario 1. Introducción a herramientas simples de desarrollo.
  • Seminario 2. Desarrollo de programas mediante un Entorno Integrado de Desarrollo (IDE).
  • Seminario 3. Creación de programas con clases.
  • Seminario 5. Herencia y polimorfismo.
  • Seminario 6. Introducción a la entrada/salida.
  • Seminario 7. Introducción a interfaces gráficas de usuario.

Bibliografía

Bibliografía fundamental

  1. Introduction to Java Programming and Data Structures, Comprehensive Version, Global Edition (12th Edition), Y. Daniel Liang, Pearson, 2019.
  2. Java How to Program, Early objects, (11th Edition), P. Deitel and H. Deitel, Pearson, 2017.

Bibliografía complementaria

  1. Poornachandra Sarang. Java Programming: Learn Advanced Skill from a Java Expert. McGraw-Hill, 2012.
  2. Java The Complete Reference (8th Edition), Herbert Shildt, McGraw-Hill, 2011
  3. Java Concurrency in Practice. B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, D. Lea. Addison- Wesley, 2006.
  4. Java Thread Programming (3ª edición). P. Hyde. Sams, 1999.
  5. Java Threads (3ª edición). S. Oaks, H. Wong. O'Reilly Media, 2004.
  6. Data Structures and the Java Collections Framework (3ª edición). W. Collins. Wiley, 2011.
  7. Java I/O (2ª edición). E. Rusty Harold. O'Reilly Media, 2006.
  8. Head First Java (2ª edición). B. Bates. O'Reilly Media, 2009.
  9. Thinking in Java (4ª edición). B. Eckel. Prentice Hall PTR, 2006.
  10. Core Java, vols I y II. C.S. Horstmann, G. Cornell. Prentice Hall PTR, 2008.

Metodología docente

  • MD01. Lección magistral 
  • MD02. Actividades prácticas 
  • MD03. Seminarios 
  • MD04. Actividades no presenciales 
  • MD05. Tutorías académicas 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación ordinaria

La adaptación del sistema de evaluación general propuesto a las características de esta asignatura, con indicación explícita del peso de la evaluación de cada actividad formativa, se ajustará a lo indicado en la siguiente tabla:

Actividades formativas Ponderación
Parte teórica 50%
Parte práctica 40%
Seminarios 10%

Se utilizarán las siguientes técnicas de evaluación:

  1. Para la parte teórica se realizará un examen en papel. La ponderación de este bloque se cifra en el 50%.
  2. Para la parte práctica (40%)
  • Se realizarán prácticas de laboratorio donde se desarrollarán proyectos de programación preferiblemente en grupo. Se valorará la calidad del código, los informes/memorias entregados por los estudiantes, la posible defensa oral u escrita que se haga de las prácticas, así como la asistencia a las sesiones de prácticas. La ponderación de este bloque es del 30%.
  • Un examen práctico individual que tendrá lugar a mitad del cuatrimestre. La ponderación de este examen es del 10 %
  1. Los seminarios se evaluarán teniendo en cuenta la asistencia a los seminarios, los problemas propuestos que hayan sido resueltos y entregados por los estudiantes, en su caso, las entrevistas efectuadas durante el curso y la presentación oral de los trabajos desarrollados. La ponderación de estos se cuantifica en el 10%.

Si la nota de la parte teórica es superior o igual a 4 sobre 10, entonces la nota final será:

Nota final = 0,5 * parte teórica + 0,4 * parte práctica + 0,1 * seminarios

En otro caso, la nota final será la nota de la parte teórica (puntuada de 0 a 10), pudiendo el estudiante mantener la nota de la parte práctica y seminarios para la convocatoria extraordinaria.

Evaluación extraordinaria

Los estudiantes podrán optar, entre conservar la nota de cada parte obtenida en la convocatoria ordinaria o volver a evaluarse.

Se realizarán las siguientes pruebas en un único acto académico:

  1. Parte teórica: La ponderación de esta parte es del 50%.
  2. Parte práctica: La ponderación de esta parte es del 50%.

Ambas pruebas consisten en la resolución de un examen escrito multi-pregunta sobre los contenidos de la materia impartida. El examen de teoría cubrirá los contenidos de la parte de teoría y el examen de la parte práctica cubrirá los contenidos de las prácticas y seminarios.

Si la nota de la parte teórica es superior o igual a 4 sobre 10, entonces la nota final será:

Nota final = 0,5 * parte teórica + 0,5 * parte práctica

En otro caso, la nota final será la nota de la parte teórica (puntuada de 0 a 10).

Evaluación única final

Esta modalidad de evaluación se realizará en un único acto académico en la fecha establecida por el Centro y consistirá en un examen escrito evaluado de 0 a 10 que incluirá preguntas que garanticen que el alumno ha adquirido la totalidad de las competencias, tanto teóricas como prácticas, descritas en esta misma guía docente.

Parte teórica: La ponderación de esta parte es del 50%.

Parte práctica: La ponderación de esta parte es del 50%.

Si la nota de la parte teórica es superior o igual a 4 (sobre 10), entonces la nota final será:

Nota final = 0,5 * parte teórica + 0,5 * parte práctica

En otro caso, la nota final será la nota de la parte teórica (sobre 10).

Información adicional

Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos (https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad).

Software Libre

- Kit de desarrollo de Java (JDK)

- Netbeans