Guía docente de Complementos de Programación (Especialidad Telemática) (221113D)
Grado
Rama
Módulo
Materia
Year of study
Semestre
ECTS Credits
Tipo
Profesorado
Teórico
Práctico
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 Máster)
- 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
- Introduction to Java Programming and Data Structures, Comprehensive Version, Global Edition (12th Edition), Y. Daniel Liang, Pearson, 2019.
- Java How to Program, Early objects, (11th Edition), P. Deitel and H. Deitel, Pearson, 2017.
Bibliografía complementaria
- Poornachandra Sarang. Java Programming: Learn Advanced Skill from a Java Expert. McGraw-Hill, 2012.
- Java The Complete Reference (8th Edition), Herbert Shildt, McGraw-Hill, 2011
- Java Concurrency in Practice. B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, D. Lea. Addison- Wesley, 2006.
- Java Thread Programming (3ª edición). P. Hyde. Sams, 1999.
- Java Threads (3ª edición). S. Oaks, H. Wong. O'Reilly Media, 2004.
- Data Structures and the Java Collections Framework (3ª edición). W. Collins. Wiley, 2011.
- Java I/O (2ª edición). E. Rusty Harold. O'Reilly Media, 2006.
- Head First Java (2ª edición). B. Bates. O'Reilly Media, 2009.
- Thinking in Java (4ª edición). B. Eckel. Prentice Hall PTR, 2006.
- Core Java, vols I y II. C.S. Horstmann, G. Cornell. Prentice Hall PTR, 2008.
Enlaces recomendados
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:
- Para la parte teórica se realizará un examen en papel. La ponderación de este bloque se cifra en el 50%.
- 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 %
- 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:
- Parte teórica: La ponderación de esta parte es del 50%.
- 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).
Software Libre
- Kit de desarrollo de Java (JDK)
- Netbeans