Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Adso Fernández Baena

Trimestre: Segon trimestre

Crèdits: 4

Professorat: 

Rosa Herrero Antón

Competències


Competències específiques
  • E6. Desenvolupar videojocs en llenguatges de programació d'alt nivell en motors gràfics  a partir de les especificacions.

Competències generals
  • G3. Reunir i interpretar dades rellevants (normalment dins de la seva àrea d'estudi) per emetre judicis que incloguin una reflexió sobre temes rellevants d'índole social, científica o ètica.

  • G5. Desenvolupar les habilitats d'aprenentatge necessàries per emprendre estudis posteriors amb un alt grau d'autonomia.

Competències transversals
  • T1. Comunicar en un tercer idioma, que serà preferentment l'anglès, amb un nivell adequat de forma oral i per escrit i d'acord amb les necessitats que tindran els graduats i graduades.

Descripció


L'assignatura Programació I suposa la primera aproximació al disseny d'algorismes utilitzant les bases de la programació orientada a objectes en el marc de la matèria de Desenvolupament. Es treballen problemes d'una certa complexitat, tant per dissenyar algorismes nous com per testejar i debugar adequadament algorismes implementats. L'assignatura consta de sessions teòriques i sessions de pràctica. Per assolir els coneixements de l'assignatura s'avalua per un costat tres pràctiques i per un altre els coneixements teòrics de manera individual.

Aquesta assignatura disposa de recursos metodològics i digitals per fer possible la seva continuïtat en modalitat no presencial en el cas de ser necessari per motius relacionats amb la Covid-19. D’aquesta forma s’assegurarà l’assoliment dels mateixos coneixements i competències que s'especifiquen en aquest pla docent. Per tal que els alumnes treballin col·laborativament a les pràctiques serà obligatori l'ús de l'eina GIT.

Resultats d'aprenentatge


En acabar l'assignatura els estudiants han de ser capaços de:

E6.1. Dissenyar l'arquitectura del software d'un videojoc d'acord a unes especificacions.

Metodologia de treball


L'assignatura utilitza les següents metodologies de treball:

Classe magistral, càpsules de vídeo, resolució de problemes, laboratori en grup reduït i aprenentatge col·laboratiu, i tutories no presencials.

Continguts


Tema 1: Descomposició funcional i disseny descendent

1.1. Descomposició de problemes en subproblemes

1.2. Diagrames de flux

1.3. Recorregut vs cerca

1.4. Pas de paràmetres: entrada, sortida, referència i valor

Tema 2: Introducció i conceptes generals de la programació orientada a objectes (POO)

2.1. Què és la POO?

2.2. Programació estructurada vs POO

2.3. Perquè utilitzar la POO i els seus beneficis

2.4. Característiques de la POO.

Tema 3: Conceptes bàsics de la programació orientada a objectes

3.1. Definició d'objecte i classe

3.2. Atributs, constants i mètodes d'una classe

3.3. Diagrames de llenguatge unificat de modelat (UML)

3.4. Constructors, inicialització i sobrecàrrega de mètodes d'una classe

3.5. Paraula clau "this"

3.6. Membres estàtics i d'instància

3.7. Gestió d'excepcions i debug dins d'una classe

3.8. Sobrecàrrega de mètodes i d'operadors

Tema 4: Herència, interfaces i polimorfisme (jerarquia de classes)

4.1. Introducció, definició d'herència i exemples

4.2. Creació de classes base i derivades

4.3. Classes "sealed" i "abstract"

4.4. Interfaces

4.5. Polimorfisme

Tema 5: Estructures de dades

5.1. Llistes dinàmiques

5.2. Llistes ordenades (Key/value)

5.3. Cues (FIFO) i stacks (LIFO)

5.4. Taules de hash

5.5. Grafs

Activitats d'aprenentatge


Amb l'objectiu de recollir evidència de l'assoliment dels resultats d'aprenentatge esperats es realitzaran les següents activitats de caràcter avaluatiu (relacionades amb totes les competències comunes):

A1. Pràctiques de laboratori 1 (Evidència del resultat d’aprenentatge E6.1)

En aquesta pràctica l'estudiant haurà d'aplicar els conceptes explicats a les classes teòriques sobre la descomposició funcional i disseny descendent, a més de la diferència entre recorregut i cerca, caldrà dissenyar el diagrama de flux del joc. També aplicarà els conceptes explicats a les classes teòriques introductòries sobre la orientació a objectes.

A2. Pràctiques de laboratori 2 (Evidència del resultat d’aprenentatge E6.1)

En aquesta pràctica l'estudiant haurà d'aplicar els conceptes explicats a les classes teòriques sobre la programació orientada a objectes, més en concret, els temes 2 i 3 del temari teòric. A més l'estudiant utilitzarà classes de C# per a la lectura i escriptura de fitxers guardats en el disc dur de l'ordinador. L'estudiant haurà de seguir un diagrama UML per la creació de les diferents classes i haurà de dissenyar un diagrama de flux del joc.

A3. Pràctiques de laboratori 3 (Evidència del resultat d’aprenentatge E6.1)

En aquesta tercera pràctica del curs, l'estudiant haurà d'aplicar els conceptes d'herència, interfaces i polimorfisme (jerarquia de classes) explicats en el tema 4 del curs. L'estudiant haurà de dissenyar un diagrama UML de les classes utilitzades i un diagrama de flux del joc.

A4. Exercicis a casa o classe (Evidència de tots els resultats d’aprenentatge)

Diversos tests individual de preguntes curtes dels conceptes teòrics i exercicis pràctics individuals o en parella de tota l'assignatura.

A5. Examen final (Evidència de tots els resultats d’aprenentatge)

Test individual d'aplicació pràctica (resolució d'exercicis i problemes) dels conceptes teòrics i pràctics de tota l'assignatura.

Criteris generals de les activitats:

  • El professor presentarà un enunciat per cada activitat i els criteris d'avaluació i/o rúbriques.
  • El professor informarà de les dates i format del lliurament de l'activitat (s'haurà de realitzar la corresponent entrega electrònica de la pràctica juntament amb les explicacions pertinents de la mateixa).

Sistema d'avaluació


La nota de cada alumne es calcularà seguint els següents percentatges:

A1. Pràctiques de laboratori 1 10%

A2. Pràctiques de laboratori 2 20%

A3. Pràctiques de laboratori 3 20%

A4. Exercicis a casa o classe10%

A5. Examen final 40%

Nota final = A1·0,1 + A2·0,2 + A3·0,2 + A4·0,1 + A5·0,4

Consideracions:

  • Cal obtenir una nota superior o igual a 5 a l'examen final per a aprovar l'assignatura.
  • Una activitat no entregada o lliurada amb retard i sense justificació (citació judicial o assumpte mèdic) compta com un 0. 
  • És potestatiu dels docents acceptar o no lliuraments fora dels terminis que s'indiquin per les activitats A1, A2 i A3, i sempre abans de l'examen final. En el cas que aquests lliuraments fora de termini s'acceptin, és potestatiu del docent decidir si aplica alguna penalització i la quantia d'aquesta.
  • És responsabilitat de l'alumne evitar el plagi en totes les seves formes. En el cas de detectar un  plagi, independentment del seu abast, en alguna activitat correspondrà a tenir una nota de 0. A més, el professor comunicarà a la Cap d'estudis la situació per a que es prenguin mesures aplicables en matèria de règim sancionador.

Recuperació:

  • Només es poden presentar a la recuperació els estudiants que es presentin a l'examen final i que no superin la qualificació mínima (5) a la nota final.
  • Les activitats A1, A2, A3 i A4 no es poden recuperar.
  • La nota de l'examen de recuperació substitueix només a la nota de l'activitat A5.

Bibliografia


Bàsic

Clark, Dan (2011) Beginning C# Object-Oriented Programming. Apress.

Fagerberg, Jonas (2015)  C# for Beginners: The Tactical Guidebook: Learn Csharp by Coding. CreateSpace Independent Publishing Platform.

Meyer, Bertrand (1997) Object-Oriented Software Construction. Prentice Hall, segunda edición.

Versión española: Construcción de software orientado a objetos, Prentice Hall Iberia, 1999.

Chaudhary, Harry H. (2014) C# Programming: Step By Step Beginner's To Experts Edition. Createspace LLC USA.