Descripción
La programación es una ciencia principalmente práctica y, como la mayoría de ciencias prácticas, esta se estructura en proyectos. Esta es la premisa de la cual parte la asignatura de Proyectos de Programación 2. El objetivo principal de la asignatura es ampliar los conocimientos de los alumnos en el campo de la programación, presentándolos un nuevo ámbito: la programación para dispositivos móviles. Dado que el mundo de la programación para dispositivos móviles es muy amplio, la asignatura se centrará en el sistema que, de momento, tiene una mayor presencia en el mercado. Este sistema es Android. La asignatura tendrá también como objetivo dotar al alumno de técnicas y conocimientos, tanto prácticos como teóricos, que le permitan afrontar el mundo de la programación con las herramientas necesarias. La asignatura pretende utilizar una metodología eminentemente práctica para impartir el nuevo conocimiento. De esta forma será habitual que los conocimientos teóricos voy acompañados de ejercicios, y/o proyectos, tanto individuales como en equipo.
Tipo asignatura
Tercer - Obligatoria
Semestre
Segundo
Curso
2
Créditos
6.00

Profesores Titulares

Conocimientos previos

Es aconsejable que el alumno tenga conocimientos previos de programación en Java y que este se desarrolle correctamente en el lenguaje de modelado UML.

Objetivos

Introducir al alumno en el mundo de la programación móvil.
Introducir al alumno en el mundo del desarrollo para Android.
Dotar al alumno de herramientas y conocimientos para el diseño de arquitecturas software para Android.

Contenidos

Tema 1. Introducción a la plataforma Android
1. Java y SDK
2. APK
3. Sistema operativo y Arquitectura
4. Entorno y ciclo de vida de una App
5. Componentes de una App
6. Debugging – Emulación y entorno real
7. Creación de proyectos Android

Tema 2. Desarrollo de interfaces de usuario
1. Medida y densidad de pantalla
2. Layouts y componentes gráficos
3. Controladores de actividad
4. Strings e internacionalización

Tema 3. Interfaces de usuario flexibles
1. Fragmentos
2. FrameLayout
3. FragmentManager

Tema 4. Aplicaciones con múltiples actividades
1. Activities
2. Intents
3. Actividades con resultados

Tema 5. Almacenamiento y obtención de datos
1. Trabajar con SQLite
2. Trabajar con Web Services

Tema 6. Geolocalització
1. Maps

Metodología

La asignatura se orienta para que el alumno tome parte activa en su propio aprendizaje. La metodología docente está pensada para que la asignatura sea dinámica y participativa. Las clases magistrales se combinan con clases de ejercicios, actividades a clase y prácticas en grupo.

A nivel de contenido de la asignatura, las tecnologías que se usan son el lenguaje Java y XML. También se utiliza el en torno a programación Android Studio. Metodológicamente se usan diagramas UML para la documentación de los trabajos.

Evaluación

- La nota de la asignatura se calculará a partir del conjunto de ejercicios y la práctica que desarrollen a lo largo de la asignatura:

Nota asignatura = 60% * Nota_Ejercicios + 40% * Nota_Práctica

Siempre y cuándo:
Nota_Práctica >= 5

- La nota de los ejercicios y controles (Nota_Ejercicios) se calculará ponderando las notas de los diferentes ejercicios y controles que se desarrollen a lo largo de la asignatura.

- La asignatura no se evaluará mediante exámenes, de forma que no habrá examen semestral.

Criterios evaluación

1. Conocimientos generales básicos sobre el área de estudio [G, I]
2. Comunicación oral y escrita en la propia lengua [F, I]
3. Habilidades de gestión de la información (habilidad para buscar y analizar información proveniente de fuentes diversas) [F, I]
4. Resolución de problemas [F, G]
5. Trabajo en equipo [F, G]
6. Capacidad para comunicarse con personas no expertas en la materia [ I ]
7. Capacidad de aplicar los conocimientos en la práctica [F, G]

Bibliografía básica

ANDROID. Material Design for Android. [En línea] https://developer.android.com/design/material/index.html.

ANDROID. Getting Started - Android Developers. [En línea] https://developer.android.com/training/index.html.

ANDROID. Introduction to Android. [En línea] https://developer.android.com/guide/index.html.

ANDROID. Download Android Studio and SDK Tools. [En línea] https://developer.android.com/studio/index.html.

COCKBURN, ALISTAIR. Hexagonal architecture. [En línea] http://alistair.cockburn.us/Hexagonal+architecture

WILSON, JIM. 4 reasons to use Android Fragments. [En línea] Pluralsight. https://www.pluralsight.com/blog/software-development/android-fragments.

SOURCE MAKING. Design Patterns. [En línea] Source Making. https://sourcemaking.com/design_patterns.

FACEBOOK. Getting Started - SDK for Android. [En línea] https://developers.facebook.com/docs/android/getting-started/.

TWITTER. Getting Started - Twitter Developers. [En línea] https://dev.twitter.com/docs/authhttps://dev.twitter.com/mopub/android/g....

GOOGLE. Getting Started - Google Maps Android API - Google Developers. [En línea] https://developers.google.com/maps/documentation/android-api/start.

ATLASSIAN. Git Tutorials and Training. [Online] https://www.atlassian.com/git/tutorials/

GIT. Git – Documentation. [Online] https://git-scm.com/doc

Material complementario

GENERAL
https://developer.android.com/guide/index.html
https://developer.android.com/guide/index.html
https://developer.android.com/about/dashboards/index.html

TEMA 1
https://developer.android.com/studio/index.html
http://socialcompare.com/en/comparison/android-versions-comparison
https://developer.android.com/studio/run/oem-usb.html

TEMA 2
https://material.io/guidelines/
https://developer.android.com/design/material/index.html
https://developer.android.com/training/material/index.html
https://developer.android.com/guide/topics/ui/declaring-layout.html
http://www.vogella.com/tutorials/AndroidListView/article.html
https://www.raywenderlich.com/124438/android-listview-tutorial
https://material.io/guidelines/components/snackbars-toasts.html
http://www.truiton.com/2015/06/android-snackbar-example/
https://developer.android.com/training/appbar/index.html
http://www.vogella.com/tutorials/AndroidActionBar/article.html
https://www.mkyong.com/java/java-object-sorting-example-comparable-and-c...
https://developer.android.com/guide/topics/ui/dialogs.html
https://material.io/guidelines/components/dialogs.html

TEMA 3
https://developer.android.com/guide/components/intents-filters.html

TEMA 4
https://developer.android.com/guide/components/fragments.html
https://www.pluralsight.com/blog/software-development/android-fragments
https://medium.com/@ali.muzaffar/should-i-use-fragment-or-activity-in-an...

TEMA 5
https://developer.android.com/training/basics/data-storage/databases.html
http://www.vogella.com/tutorials/AndroidSQLite/article.html#creating-and...
https://developer.android.com/guide/components/broadcasts.html
http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html
https://developer.android.com/training/basics/network-ops/connecting.html
https://developer.android.com/reference/java/net/HttpURLConnection.html
https://developer.android.com/reference/android/os/AsyncTask.html
http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html
http://www.androidhive.info/2014/05/android-working-with-volley-library-1/
https://developer.android.com/training/volley/index.html

TEMA 6
https://developer.android.com/training/location/index.html
https://developer.android.com/guide/topics/location/strategies.html
https://developer.android.com/guide/topics/location/index.html
https://developer.android.com/training/permissions/requesting.html
http://www.vogella.com/tutorials/AndroidPermissions/article.html