1. FONAMENTS DE PROGRAMACIÓ
1.1. Modularització
1.2. Abstracció i descomposició
1.3. Disseny descendent vs disseny ascendent
2. PROGRAMACIÓ ORIENTADA A OBJECTES
2.1. Objectes. Estat i comportament. Encapsulament.
2.2. Visió OO dels objectes. Getters i setters.
2.3. Tipus abstractes de dades. Java: classes abstractes vs. interfaces.
2.4. Herència vs subtipatge
2.5. Utilització vs refinament
2.6. Polimorfisme. Lligam missatge-mètode.
3. ROBUSTESA
3.1. Excepcions i gestió d'errors
3.2. Disseny per contracte: precondicions, postcondicions i invariants
4. EINES PRÀCTIQUES (basades en Java)
4.1. Genericitat
4.2. Iterabilitat
4.3. Comparabilitat. Equals i hashcode.
4.4. Contenidors bàsics a l'API de Java
4.5. Comodins. Comodins afitats
4.6. Mètodes genèrics
4.7. Funcions lambda i interfaces funcionals
5. DISSENY MODULAR
5.1. Principis SOLID
5.2. Composició + delegació vs herència
5.3. Patrons simples: delegació i Strategy
5.4. MVC com a paradigma de separació de responsabilitats
6. EXEMPLE COMPLET
7. QUALITAT I DOCUMENTACIÓ
7.1. Documentació d'implementacions
7.2. Introducció al testing i a la verificació
8. TEMES OPTATIUS
8.1. Documentació Doxygen
8.2. GUI's bàsiques amb JavaFX
8.3. JUnit (eina per a proves unitàries)
El projecte es desenvoluparà en equips de mínim dos i màxim tres alumnes. Cal tenir en compte que cada any el projecte és diferent, de manera que el nombre de membres dels equips s'ajustarà depenent del projecte, a criteri del professor. També és possible que es permeti desenvolupar un mateix projecte en equips de dos i de tres. En tal cas, el professor procurarà que la càrrega de feina sigui equitativa.
Per motius pedagògics relacionats amb les comptències a assolir, en cap cas es permetrà que un alumne faci el projecte sol.
La interacció amb el "client" (el professor) a l'hora de definir l'especificació de les funcionalitats i usos del programa, i la discussió de la implementació del programa amb un programador "expert" (el professor), influiran en la qualificació del projecte.
L'avaluació del projecte podrà tenir en compte tant l'aportació individual de l'alumne com els resultats del seu equip. Això implica que no tots els components d'un equip tindran necessàriament la mateixa nota.
No s'acceptaran lliuraments de projectes dels quals no se n'hagi pogut fer un seguiment satisfactori (veure activitats d'avaluació).
Pel que fa al 10% de la nota corresponent als petits exercicis realitzats durant algunes classes de teoria, els alumnes que, a inici de quadrimestre, vegin que no podran assistir a bona part d'aquestes classes, hauran d'indicar-ho al professor, amb un corresponent justificant. Així, aquest 10% s'absorbirà a la nota d'examen, que passarà a tenir un pes del 40% per a aquests alumnes.
Criteris específics de la nota «No Presentat»:
Si un alumne no ha fet (o no se li ha acceptat) el darrer lliurament del projecte, o bé no s'ha presentat a cap examen, tindrà la qualificació de "No Presentat".
Avaluació única:
L'avaluació única consisteix d'un examen escrit.
Requisits mínims per aprovar:
La realització del projecte és obligatòria.
Per aprovar l'assignatura cal tenir el projecte acceptat (veure criteris de qualificació), una nota mínima de 4 de l'examen, i una nota mínima de 5 segons la ponderació de les diferents activitats d'avaluació (és a dir, la nota final haurà de ser >=5 per superar l'assignatura).
En el cas que la nota d'examen sigui inferior a 4, la nota final serà 3.5.
En el cas d'haver lliurat l'examen de recuperació i també el primer examen, la nota que comptarà serà la millor de totes dues (interessant per als alumnes que vulguin apujar nota).
L'objectiu principal d'aquesta assignatura és el de practicar la programació d'aplicacions de mitjana escala, incloent aspectes de disseny, documentació, implementació i proves. Es treballaran tant els aspectes lligats a la qualitat del producte final (eficiència, reusabilitat de components, etc.) com al propi procés per arribar-hi (organització de l'equip de treball, prototipatge, proves, etc.)