Denominación de la asignatura |
Programación Avanzada |
Grado al que pertenece |
Grado en Ingeniería Informática |
Créditos ECTS |
6 |
Curso y cuatrimestre en el que se imparte |
Segundo curso, segundo cuatrimestre |
Materia |
Programación y Algoritmia II |
Carácter de la asignatura | Obligatoria |
El desarrollo de software es una de las ramas más importantes de la ingeniería informática. Un buen desarrollador además de ser un buen programador (conocer en profundidad el lenguaje de programación que va a utilizar) debe ser capaz de identificar la técnica de programación más adecuada para resolver el problema al que se enfrenta.
La asignatura está dividida en dos grandes bloques, un primer bloque centrado en técnicas de programación (se llevará a cabo en Java) y un segundo bloque centrado en los aspectos formales de la programación (pruebas, documentación, medición….), unidos nos llevan a la obtención de un desarrollo de calidad.
En el primer bloque se van a abordar problemas complejos del mundo real y se va a mostrar al alumno como resolverlos, de manera práctica, a través de diferentes técnicas de diseño y programación. Esto va a proporcionar las herramientas necesarias para que el alumno sea capaz de resolver los problemas más comunes a los que se enfrenta un programador profesional.
En el segundo bloque lo que vamos a hacer es no olvidar que un buen desarrollo no termina cuando se ha realizado el código, sino que hay que documentar y probar el software de tal manera que sea escalable, adaptable y fácil de mantener.
A continuación se enumeran las competencias que adquirirás al cursar esta asignatura:
Competencias básicas
Competencias generales
Competencias específicas
Competencias transversales
Tema 1. Introducción a la programación orientada a objetos
Introducción a la programación orientada a objetos
Diseño de clases
Introducción a UML para el modelado de los problemas
Tema 2. Relaciones entre clases
Abstracción y herencia
Conceptos avanzados de herencia
Polimorfismo
Composición y agregación
This
y super
Tema 3. Introducción a los patrones de diseño para problemas orientados a objetos
Qué son los patrones de diseño
Patrón Factory
Patrón Singleton
Patrón Observer
Patrón Composite
Tema 4. Excepciones
Excepciones
Captura y gestión de excepciones
Lanzamiento de excepciones
La clase Throwable
Creación de excepciones
Tema 5. Interfaces de usuarios
AWT
Gestores de posicionamiento
Qué son los eventos
Adaptadores
Tema 6. Interfaces de usuarios (II)
Eventos: definición y captura
Desarrollo de interfaces de usuario
SWING
Tema 7. Introducción a la programación concurrente
Introducción a la programación concurrente
El concepto de proceso e hilo
Interacción entre procesos o hilos
Los hilos en Java
Ventajas e inconvenientes de la programación concurrente
Tema 8. Gestión de hilos
Ciclo de vida de un hilo
La clase Thread
Planificación de hilos
Grupos hilos
Hilos de tipo demonio
Tema 9. Sincronización
Sincronización
Mecanismos de bloqueo
Mecanismos de comunicación
Monitores
Bibliotecas de Java para concurrencia
Tema 10. Problemas comunes dentro de la programación concurrente
El problema de los productores consumidores
El problema de los lectores y escritores
El problema de la cena de los filósofos
Tema 11. Documentación de software
¿Por qué es importante documentar el software?
Documentación de diseño
Uso de herramientas para la documentación: JavaDoc
Tema 12. Pruebas de software
Introducción a las pruebas del software
Tipos de pruebas
Prueba de unidad
Prueba de integración
Prueba de validación
Prueba del sistema
Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.
Las actividades formativas de esta asignatura son las siguientes:
En la programación semanal puedes consultar cuáles son las actividades concretas que tienes que realizar en esta asignatura.
Estas actividades formativas prácticas se completan, por supuesto, con estas otras:
Las horas de dedicación a cada actividad se detallan en la siguiente tabla:
ACTIVIDADES FORMATIVAS |
HORAS |
% PRESENCIAL |
Sesiones presenciales virtuales | 15 |
100% |
Recursos didácticos audiovisuales | 6 |
0 |
Estudio del material básico | 50 |
0 |
Lectura del material complementario | 25 |
0 |
Trabajos, casos prácticos, test | 17 |
0 |
Prácticas de laboratorios virtuales | 12 |
16,7% |
Tutorías | 16 |
30% |
Trabajo colaborativo | 7 |
0 |
Realización de examen final presencial | 2 |
100% |
Total | 150 |
Bibliografía básica
Tema 1
Tema 2
Tema 3
Tema 4
Tema 5
Tema 6
Tema 7
Tema 8
Tema 9
Tema 10
Tema 11
Tema 12
Bibliografía complementaria
Weisfeld, M. (2009). The object oriented Thought process. Estados Unidos: Addison Wesley.
Laughtlin, B. D. (2006). Head First, object-oriented analysis and design. O'Reilly.
Pérez, M. (2014). Lenguajes de programación orientada a objetos. Estados Unidos: CreateSpace.
Fowler, M. (2004). UML Distilled: A Brief Guide to de Standard Object Modeling Language. Massachusetts: Addison Wesley.
Flórez, H. A. (2012). Programación orientada a objetos usando Java. Colombia: Ecoe Ediciones.
O'Reilly, T. (marzo 2007). What Is Web 2.0: Design Patterns and Business Models for the Next Generation of Software. International Journal of Digital Economics 65, 17-37.
Gamma, E., Helm, R., Johnson, R. & Vlissides, J. M. (1995). Design Patterns. Elements of Reusable Object-Oriented Software. Indiana: Addison Wesley.
Larman, C. (2001). Applying UML and patterns. Nueva Jersey: Prentice Hall.
Grand, M. (2002). Patterns in Java: A catalog of reusable design patterns illustrated with UML. Indiana: Wiley & Sons.
Debrawer , L. (2013). Patrones de diseño en Java. Barcelona: Editorial ENI.
Serbat, A. (2014). Programación en Java: Desarrolla Aplicaciones Java [Ed. Kindle]. Recuperado de Amazon.com
Zukowski, J. (2005). The Definitive Guide to Java Swing. Nueva York: Springer.
Fischer, P. (2005). Introduction to Graphical User Interfaces with Java Swing. Addison Wesley.
Lozano, M. D., González, P., Ramos, I., Moreno, F., & Molina, J. P. (2002). Desarrollo y generación de interfaces de usuario a partir de técnicas de análisis de tareas y casos de uso. Inteligencia Artificial. Revista Iberoamericana de Inteligencia Artificial, 6(16).
Mehlitz, P., NASA Ames Res., Tkachuk, O, Ujma, M. (2011). JPF-AWT: Model checking GUI applications. Automated Software Engineering (ASE). doi: 10.1109/ASE.2011.6100131
Palma, J. T. (2003). Programación concurrente. Madrid: Thomson.
Oakx, S. & Wong, H. (2004). Java Threads. California: Ed. O’Reilly.
Ockerman, S. y Reindl, S. (2019). Mastering Professional Scrum: A Practitioner s Guide to Overcoming Challenges and Maximizing the Benefits of Agility. EE. UU: Addison-Wesley Professional. Part of the The Professional Scrum Series.
Gilbert, R. M. (2019). Inclusive Design for a Digital World: Designing with Accessibility in Mind (Design Thinking) Paperback.
Green, S. (2019). Mobile UI/UX Design Notebook: (Seafoam Green) User Interface & User Experience Design Sketchbook for App Designers and Developers.
Doshi. H. (2016). Scrum Insights for Practitioners: The Scrum Guide Companion Paperback.
Newman, S. (2015). Building Microservices. O'Reilly Media.
http://index-of.es/Varios/Sam%20Newman-Building%20Microservices-O'Reilly%20Media%20(2015).pdf
El sistema de calificación se basa en la siguiente escala numérica:
0 - 4, 9 |
Suspenso |
(SS) |
5,0 - 6,9 |
Aprobado |
(AP) |
7,0 - 8,9 |
Notable |
(NT) |
9,0 - 10 |
Sobresaliente |
(SB) |
La calificación se compone de dos partes principales:
El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.
La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.
Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado en la programación semanal. En ella se detalla la calificación máxima de cada actividad o evento concreto puntuables.
Para aprobar la asignatura será necesario aprobar cada una de las partes.
El sistema de evaluación de la asignatura es el siguiente:
SISTEMA DE EVALUACIÓN |
PONDERACIÓN MIN. |
PONDERACIÓN MÁX. |
Prueba de evaluación final presencial | 60% |
60% |
Evaluación de prácticas de laboratorios virtuales | 0% |
40% |
Resolución de trabajos, proyectos y casos | 0% |
40% |
Test de autoevaluación | 0% |
20% |
Participación en foros y otros medios participativos | 0% |
40% |
Natalia Padilla Zea
Formación: Ingeniera Técnica en Informática de Sistemas (2003) por la Universidad de Granada. Ingeniera en Informática (2005) por la Universidad de Granada. Doctora con mención europea (2011) por la misma Universidad, dentro del Programa de Doctorado de Desarrollo de Software, con Mención de Excelencia. Certificado de Aptitud Pedagógica (2008).
Experiencia: Profesora Adjunta en UNIR (2015-actualidad), perteneciendo al claustro de profesores de la Escuela Superior de Ingeniería y Tecnología. Imparte clases en el Grado en Informática, Máster de Aplicaciones Móviles y Máster de Ingeniería del Software y Sistemas Informáticos. Dirige Trabajos Fin de Máster en el Máster de E-Learning y Redes Sociales. Profesora Sustituta Interina (2013-2015) en Facultad de Educación, Economía y Tecnología de Ceuta (Universidad de Granada), impartiendo asignaturas del Dpto. de Lenguajes y Sistemas Informáticos. Contrato Post-doctoral (2011-2013) en el mismo departamento, impartiendo docencia en el Campus de Aynadamar. Contrato FPU (2009-2011) y beca FPU (2007-2009). Programadora y analista en la empresa Galdón Software, S. A., de aplicaciones a medida (ERP's) (2005-2007).
Líneas de investigación: Aprendizaje colaborativo, videojuegos educativos, diseño de videojuegos educativos. Pertenece al grupo TELSOCK, de UNIR. Colabora con el grupo GEDES de la Universidad de Granada y el grupo IDIS de la Universidad del Cauca (Colombia).
Obviamente, al tratarse de formación on-line puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de actividades, trabajos y exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:
Recuerda que en el aula virtual de Lo que necesitas saber antes de empezar puedes consultar el funcionamiento de las distintas herramientas del aula virtual: Correo, Foro, Sesiones presenciales virtuales, Envío de actividades, etc.
Ten en cuenta estos consejos…
|