Las plataformas tecnológicas modernas incorporan, cada vez más, dispositivos móviles autónomos (generalmente, inalámbricos) como componentes de su infraestructura. Es el caso, por ejemplo, de sensores, pequeños robots, etc., los cuales, gracias a su (limitado) poder de cómputo y bajo precio, están contribuyendo cada día más a una computación ubicua. A menudo estos dispositivos tienen otras funcionalidades, y su uso no es exclusivo para la infraestructura. Es el caso, por ejemplo, de teléfonos móviles, notebooks, etc.
El objetivo de esta asignatura es introducir a los estudiantes en la programación de algunos dispositivos móviles actuales para el diseño y gestión de aplicaciones de interés social y profesional, y también en la programación de la integración e interacción entre ellos y con las personas.
Profesorado
Responsable
Pere Pau Vázquez Alcocer (
)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0.5
Aprendizaje autónomo
6
Competencias
Competencias Técnicas de cada especialidad
Específicas
CTE11 - Capacidad para conceptualizar, diseñar, desarrollar y evaluar la interacción persona-ordenador de productos, sistemas, aplicaciones y servicios informáticos.
CTE12 - Capacidad para la creación y explotación de entornos virtuales, y para la creación, gestión y distribución de contenidos multimedia.
Competencias Técnicas Genéricas
Genéricas
CG8 - Capacidad para la aplicación de los conocimientos adquiridos y de resolver problemas en entornos nuevos o poco conocidos dentro de contextos más amplios y mulitidisciplinares, siendo capaces de integrar estos conocimientos.
Competencias Transversales
Trabajo en equipo
CTR3 - Ser capaz de trabajar como miembro de un equipo, ya sea como un miembro más, o realizando tareas de dirección con la finalidad de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles.
Actitud frente al trabajo
CTR5 - Tener motivación para la realización profesional y para afrontar nuevos retos, así como una visión amplia de las posibilidades de la carrera profesional en el ámbito de la Ingeniería en Informática. Tener motivación por la calidad y la mejora continua, y actuar con rigor en el desarrollo profesional. Capacidad de adaptación a los cambios organizativos o tecnológicos. Capacidad de trabajar en situaciones de falta de información y/o con restricciones temporales y/o de recursos.
Básicas
CB6 - Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
CB9 - Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.
Introducción y configuración del entorno
Se introduce el curso y se explican los detalles de la aplicación que se hará como ejercicio práctico continuado. Se configura el entorno de trabajo (hardware y software) y programación. Realización de ejercicios con Android y diseño de los primeros menús y componentes de la aplicación. Instalación en los dispositivos.
Proveedores de contenidos y almacenamiento
Se introducen algunos de los diferentes proveedores de contenidos (archivos multimedia, calendario, etc.) y se explica cómo acceder. También se introducen métodos de almacenamiento.
Menús y bases de datos
Uso de menús (de opción, de texto, etc.) y bases de datos en aplicaciones para Android. Introducción a SQLite.
Programación de una parte de la Aplicación práctica relacionada con este tema.
Hilos de ejecución (Threads) e intenciones (Intents)
Se introduce al alumno en la necesidad del uso de hilos de ejecución en aplicaciones móviles y en su programación mediante la clase Thead de Java y las clases gestoras de Android.
También se presentan los Intentos y cómo utilizarlos para gestionar funciones básicas del dispositivos móviles, tales como llamadas y mensajes SMS. Los intentos son descripciones abstractas de una operación a realizar, que facilitan la realización del enlace entre códigos de diferentes aplicaciones en tiempo de ejecución.
Diseño y programación de una parte de la aplicación práctica relacionada con este tema.
Localización y mapeo
Se explica cómo llevar a cabo localización geográfica y mapeo en Android, mediante la utilización del GPS (Global Positioning System) de los dispositivos móviles junto con las herramientas de MapView y Google Maps. Simulación del posicionamiento geográfico y movimiento de los dispositivos mediante DDMS (Dalvik Debug Monitor Server).
Programación de una parte de la aplicación práctica relacionada con este tema.
Introducción a los gràficos 2D y 3D en dispositivos Android
Se introducen los métodos de diseño de aplicaciones gráficas en 2D y 3D. Esto incluye tanto la definición de primitivas como la animación.
El curso se organiza sesiones de laboratorio. Estas sesiones son totalmente prácticas. El objetivo es aprender a programar teléfonos y otros dispositivos móviles con Android a medida que se desarrolla una aplicación real. Cada semana de curso se dedica al desarrollo de un tema y la correspondiente componente de la aplicación.
Cada una de las sesiones se organiza de la siguiente forma: Durante los primeros 30-60 minutos de clase clase se realiza una pequeña introducción al tema y el resto se dedica a implementar ejercicios. En algunos casos, la explicación será un poco más larga.
Algunos días se pedirá la presentación de los ejercicios propuestos a personas o grupos.
La idea es que haya discusión y comentarios en estas presentaciones.
Método de evaluación
Se evalúan dos factores:
1.- Participación en clase:
- Trabajo semanal: 50%. Se evaluará con la entrega de una o más prácticas pequeñas, o entregas parciales del proyecto y teniendo en cuenta la asistencia.
2.- Proyecto final que extiende los contenidos de los ejercicios semanales: 50%
Es necesario que los estudiantes sepan programar con lenguajes orientados a objetos. El curso no tiene como objetivo enseñar un lenguaje de programación concreto, sino las particularidades de la plataforma. El desarrollo se hará en Java o Kotlin o similar, por eso se necesitan conocimientos previos de, como mínimo Java.