Descripció
La programació és una ciència principalment pràctica i, com la majoria de ciències pràctiques, aquesta s’estructura en projectes. Aquesta és la premissa de la qual parteix l’assignatura de Projectes de Programació 2. L’objectiu principal de l’assignatura és ampliar els coneixements dels alumnes en el camp de la programació, tot presentant-los un nou àmbit: la programació per a dispositius mòbils. Donat que el món de la programació per a dispositius mòbils és molt ampli, l’assignatura es centrarà en el sistema que, de moment, té una major presencia en el mercat. Aquest sistema és Android. L’assignatura tindrà també com a objectiu dotar a l’alumne de tècniques i coneixements, tant pràctics com teòrics, que li permetin afrontar el món de la programació amb les eines necessàries. L’assignatura pretén utilitzar una metodologia eminentment pràctica per tal d’impartir el nou coneixement. D’aquesta forma serà habitual que els coneixements teòrics vaig acompanyats d’exercicis, i/o projectes, tant individuals com en equip.
Tipus assignatura
Tercer - Obligatoria
Semestre
Segon
Curs
2
Crèdits
6.00

Professors Titulars

Coneixements previs

Es recomana que l´alumne tingui coneixements previs de programació en Java i es desenvolupi correctament en el llenguatge de modelat UML.

Objectius

Introduir a l'alumne al món de la programació mòbil.
Introduir a l'alumne al món del desenvolupament per a Android.
Dotar a l'alumne d'eines i coneixements per al disseny d'arquitectures software per a Android.

Continguts

Tema 1. Introducció a la plataforma Android
1. Java i SDK
2. APK
3. Sistema operatiu i Arquitectura
4. Entorn i cicle de vida d’una App
5. Components d’una App
6. Debugging – Emulació i entorn real
7. Creació de projectes Android

Tema 2. Desenvolupament d’interfícies d’usuari
1. Mida i densitat de pantalla
2. Layouts i components gràfics
3. Controladors d’activitat
4. Strings i internacionalització

Tema 3. Interfícies d’usuari flexibles
1. Fragments
2. FrameLayout
3. FragmentManager

Tema 4. Aplicacions amb múltiples activitats
1. Activities
2. Intents
3. Activitats amb resultats

Tema 5. Emmagatzematge i obtenció de dades
1. Treballar amb SQLite
2. Treballar amb Web Services

Tema 6. Geolocalització
1. Maps

Metodologia

L’assignatura s’orienta per tal que l’alumne prengui part activa en el seu propi aprenentatge. La metodologia docent està pensada per tal que l’assignatura sigui dinàmica i participativa. Les classes magistrals es combinen amb classes d’exercicis, activitats a classe i pràctiques en grup.

A nivell de contingut de l’assignatura, les tecnologies que es fan servir són el llenguatge Java i XML. També s’utilitza l’entorn de programació Android Studio. Metodològicament es fan servir diagrames UML per a la documentació dels treballs.

Avaluació

- La nota de l’assignatura es calcularà a partir del conjunt d’exercicis i la pràctica que desenvolupin al llarg de l’assignatura:

Nota assignatura = 60% * Nota_Exercicis + 40% * Nota_Pràctica

Sempre i quan:
Nota_Pràctica >= 5

- La nota dels exercicis i controls (Nota_Exercicis) es calcularà ponderant les notes dels diferents exercicis i controls que es desenvolupin al llarg de l’assignatura.

- L’assignatura no s’avaluarà mitjançant exàmens, de forma que no hi haurà examen semestral.

Criteris avaluació

1. Coneixements generals bàsics sobre l'àrea d'estudi [G, I]
2. Comunicació oral i escrita en la pròpia llengua [F, I]
3. Habilitats de gestió de la informació (habilitat per buscar i analitzar informació provinent de fonts diverses) [F, I]
4. Resolució de problemes [F, G]
5. Treball en equip [F, G]
6. Capacitat per comunicar-se amb persones no expertes en la matèria [ I ]
7. Capacitat d'aplicar els coneixements en la pràctica [F, G]

Bibliografia 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 complementari

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