Informació general


  • Tipus d'assignatura: Obligatòria
  • Coordinador: Enric Sesa Nogueras
  • Trimestre: 1
  • Crèdits: 4
  • Professorat:

Idiomes d'impartició


  • Català

Descripció


L'assignatura de Programació Avançada pertany a la matèria de la Programació. Els diversos temes tractats en l'assignatura estan pensats per capacitar als estudiants per l'aprenentatge de, per un cantó en l’ús de les diferents tècniques de disseny d’algorismes i per l’altre a fer una gestió dinàmica de la memòria i aplicar-la a la implementació de les estructures de dades arbres.

Resultats d'aprenentatge


A nivell general, aquesta assignatura contribueix als següents resultats d'aprenentatge especificats per a la matèria a la qual pertany (Algorísmica i Programació):

  • Construir algorismes correctes i eficients per a problemes de dificultat mitjana.
  • Implementar algorismes en un llenguatge de programació imperatiu de referència per al nivell mitjà.
  • Identificar les solucions algorísmiques més escaients per a resoldre problemes de dificultat mitjana.
  • Raonar sobre la correcció i l'eficiència d'una solució algorísmica.
  • Dissenyar, escriure, provar, depurar, documentar i mantenir codi en un llenguatge d'alt nivell per a resoldre problemes de programació aplicant esquemes algorísmics i usant estructures de dades.
  • Usar les eines d'un entorn de desenvolupament de software per crear i dissenyar aplicacions.
  • Demostrar coneixement i comprensió de fets essencials, conceptes, principis i teories relatives a la informàtica i a les seves disciplines de referència.
  • Col·laborar en un entorn unidisciplinar. Identificar els objectius del grup i col·laborar en el disseny de l'estratègia a seguir i un pla de treball per a aconseguir-los. Identificar les responsabilitats de cada component del grup i assumir el compromís personal de la tasca assignada. Avaluar i presentar els resultats propis. Identificar el valor de la cooperació i intercanviar informació amb els altres components del grup. Intercanviar informació sobre el progrés del grup i proposar estratègies per millorar el seu funcionament.

A un nivell més concret, en acabar l’assignatura l’estudiant o estudianta ha de ser capaç de:

  • RA1: Crear i manipular seqüències enllaçades.
  • RA2: Utilitzar les seqüències enllaçades en la implementació d'estructures de dades.
  • RA3: Definir i implementar les estructures de dades arbre.
  • RA4: Decidir i argumentar quina i/o quines és l'estructura de dades més adient per resoldre una problemàtica determinada.
  • RA5: Enumerar i explicar la filosofia de funcionament de les diferents tècniques de disseny.
  • RA6: Comparar des del punt de vista de l'eficiència les diferents tècniques de disseny.
  • RA7: Aplicar les diferents tècniques de disseny d'algorismes en la resolució problemes.
  • RA8: Analitzar un problema per a poder determinar quina tècnica és l'adient per a la seva resolució.
  • RA9: Deduir i argumentar la correcta aplicació de les diferents tècniques.
  • RA10: Tenir un primer contacte amb un altre llenguatge de programació.
  • RA11: Codificar i depurar programes utilitzant el paradigma de la programació orientat a l'objecte.

Metodologia de treball


Tots els conceptes teòrics de la matèria s'exposaran en classes de teoria (grups grans). En aquestes classes, i a discreció dels docents impartidors, també es resoldran exercicis i problemes de caire més pràctic. Així mateix i sempre a discreció dels impartidors, es podrà demanar als estudiants que resolguin, de manera individual o en grup, problemes i/o exercicis breus. Aquestes activitats, que per la seva naturalesa d'optativitat i brevetat no apareixen reflectides a la llista d'activitats, serviran a l'estudiant com a instrument d'autoavaluació del seu assoliment dels continguts de la matèria i podran ser utilitzades per part del docent per a prendre decisions sobre la qualificació final de l'estudiant, bo i que mai en detriment de la qualificació numèrica calculada segons el sistema de qualificació indicat.

Els conceptes de caire més pràctic i tot el que en essència es pugui considerar l'aplicació pràctica dels conceptes teòrics seran treballats en grups petits (de laboratori). En les sessions que es programin a aquest efecte es donaran les eines escaients per a resoldre les activitats programades bo i que s'espera que aquestes s'allarguin des del punt de vista temporal més enllà de les hores de laboratori i que, en conseqüència, els estudiants les hagin de finalitzar durant el temps d'aprenentatge autònom.

Es posarà a disposició dels estudiants activitats de caire totalment opcional que l'ajudin a preparar i a preparar-se per a les de caire obligatori.

Continguts


  1.- VARIABLE DINÀMICA

  • Variable dinàmica
  • Gestió dinàmica de la memòria
  • Seqüències enllaçades

2.-  ESTRUCTURES DE DADES. ELS ARBRES

  • Tipus de dades no estructurats
  • Arbres binaris
  • Recorreguts d'arbres: inordre, preordre, postordre i amplada
  • El TAD Arbre de Cerca binària (ACB)

3.- TÈCNIQUES DE DISSENY D’ALGORISMES

  • Introducció als esquemes algorísmics
  • Tècnica del divideix i venç
  • Tècnica de la programació dinàmica
  • Tècnica voraç
  • Tècnica del backtracking

Activitats d'aprenentatge


Es posa a disposició dels estudiants tot un seguit d'activitats de caire eminentment pràctic (exercicis curts, problemes...) que són la base de les activitats d'aprenentatge de l'assignatura. Aquestes activitats els estudiants/es les hauran de resoldre, sovint de manera no presencial, seguint les indicacions dels docents i també seran treballades a classe, ja sia com a exemples en les sessions de teoria, ja sia en les sessions de laboratori. Si bé aquestes activitats tindran caràcter optatiu (els docents no en verificaran de manera individualitzada la realització per part dels estudiants), seran imprescindibles per assolir els coneixements teorico-pràctics de l'assignatura.

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 (pràctiques i exàmens). Les pràctiques han de ser realitzades en grup de dos estudiants. No necessàriament la qualificació dels dos membres del grup ha de ser la mateixa, es tindrà en compte el grau de participació de cadascun d'ells en la confecció de cadascuna de les pràctiques.

PRÀCTICA 1

En aquesta pràctica, els estudiants i estudiantes han de codificar un disseny de classes orientat a l'objecte.

L'objectiu de la pràctica és doble, per una banda refrescar els conceptes de la POO treballats en assignatures precedents i per altra aprendre un nou llenguatge de programació (els elements més bàsics).

L’aprenentatge del llenguatge serà amb un cert grau d’autonomia. A partir d’un document lliurat per la professora on s’indiquen les principals diferencies existents entre el llenguatge usat fins aleshores en les assignatures prèvies de programació i, les explicacions i aclariments per part de la professora, de les parts que puguin ser més complexes i puguin generar més dificultat als estudiants, l’estudiant ha d’exercir i desenvolupar les seves habilitats d’aprenentatge autònom.  L’estudiant demostrarà amb aquesta activitat una capacitat d’autoaprenentatge del nou llenguatge utilitzant-lo en la codificació demanada,  valorant sempre la selecció dels procediments algorítmics bàsics més idonis en cada cas.

Els estudiants i estudiantes hauran de finalitzar la codificació en les hores dedicades a l'aprenentatge autònom la totalitat del disseny.

La realització d'aquesta activitat contribueix a l'assoliment dels resultats d'aprenentatge RA10 i RA11.

 

PRÀCTICA 2

Aquesta pràctica està específicament pensada per a que els estudiants i estudiantes practiquin la gestió dinàmica de la memòria, creant i gestionant seqüències enllaçades.

Es treballaran més conceptes amb el nou llenguatge (elements més complexes)  i també practicaran el primer contingut treballat a l'assignatura.

La professora posarà a disposició dels estudiants documentació amb els conceptes que s’han d’incorporar, conceptes ja coneguts per l’estudiant de les assignatures prèvies de programació, però que ara s'han implementar usant el nou llenguatge de programació. Serà important recalcar l’existència d'elements nous que el llenguatge conegut per ells no ofereix. Cal conscienciar a l’estudiant de què no tots els llenguatges ofereixen el mateix i que depenent de l’aplicació que es vol desenvolupar és més o menys adient usar un u altre llenguatge.

Els estudiants i estudiantes hauran de finalitzar la codificació en les hores dedicades a l'aprenentatge autònom la totalitat del disseny.

La realització d'aquesta activitat contribueix a l'assoliment dels resultats d'aprenentatge RA1, RA2, RA10 i RA11.

 

PRÀCTICA 3

Aquesta pràctica està específicament destinada a que els estudiants i estudiantes practiquin la implementació d'una estructura de dades no lineal mitjançant seqüències enllaçades. L'estructura de dades a implementar s'ha d'ajustar a una modalitat de tipus d'arbre.

El llenguatge de programació serà escollit per l’estudiant, continuar amb el nou llenguatge après o amb el que ja coneixen d’assignatures prèvies i que s’usa a les classes de teoria.

Els estudiants i estudiantes hauran de finalitzar, en les hores dedicades a l'aprenentatge autònom la totalitat de la implementació de l'estructura de dades.

La realització d'aquesta activitat contribueix a l'assoliment dels resultats d'aprenentatge RA1, RA2, RA3 i RA4.

 

PRÀCTICA 4

En aquesta pràctica, els estudiants i estudiantes hauran de codificar altra modalitat d'arbre i acompanyar-lo de mètodes que en fan tractaments, mètodes que seran implementats usant la tècnica del divideix i venç.

Els estudiants i estudiantes hauran de finalitzar, en les hores dedicades a l'aprenentatge autònom la totalitat dels problemes plantejats.

La realització d'aquesta activitat contribueix a l'assoliment dels resultats d'aprenentatge RA4, RA5, RA7, RA8 i RA9.

 

PRÀCTICA 5

En aquesta pràctica, els estudiants i estudiantes hauran de codificar, fent ús de la tècnica del Backtracking i de la tècnica Voraç, dos enunciats d'una envergadura mitjana.

En aquesta activitat serà primordial l’anàlisi prèvia a la implementació, per això la professora lliurarà tota una llista de qüestions que l’estudiant haurà de contestar argumentadament abans de fer la codificació, i que, l’ajudaran a prendre les decisions adients en la utilització de les tècniques.  L’estudiant ha de prendre consciencia de la importància de l’elaboració i defensa d’arguments abans de la resolució de problemes dins de la seva àrea d’estudi.

Els estudiants i estudiantes hauran de finalitzar, en les hores dedicades a l'aprenentatge autònom la totalitat del problema plantejat.

La realització d'aquesta activitat contribueix a l'assoliment dels resultats d'aprenentatge RA5, RA6, RA7, RA8 i RA9.

A nivell competencial les cinc pràctiques, que majoritàriament s’hauran de desenvolupar en temps no presencial, cobreixen les següents competències comunes i específiques de l’assignatura (entre parèntesi els aspectes més rellevants de cada competència als quals contribueix):

  • CIN1 (desenvolupar programari)
  • CIN3 (hàbits de treball efectius en els entorns de desenvolupament de software i habilitats de comunicació)
  • CIN5 (manteniment aplicacions)
  • CIN6 (aplicar procediments algorísmics)
  • CIN8 (construir aplicacions de forma robusta, segura i eficient i els llenguatges de programació més adequats)
  • EFB3 (comprendre i dominar els conceptes de l’algorísmica) i
  • EFB4 (ús de programes informàtics)

Les activitats pràctiques 3 i 4 també contribueixen a l'assoliment de la competència CIN7 (utilització de forma eficient d'estructures de dades més adequades a la resolució d'un problema)

PROVA ESCRITA I

Aquesta activitat serà de caire personal i avaluarà els dos primers continguts de l'assignatura. Amb aquesta prova s'avaluen els resultats d'aprenentatge: RA1, RA2, RA3, RA4, RA10 i RA11.

PROVA ESCRITA II

Aquesta activitat unipersonal avaluarà el darrer contingut de l'assignatura. Amb aquesta prova s'avaluen els resultats d'aprenentatge: RA5, RA6, RA7, RA8 i RA9.

 

A nivell competencial aquestes dues proves, cobreixen les següents competències comunes i específiques de l’assignatura:

  • CIN1 (desenvolupar programari)
  • CIN3 (hàbits de treball efectiu)
  • CIN5 (manteniment de sistemes)
  • CIN6 (aplicar procediments algorísmics)
  • CIN7 (utilització de forma eficient i disseny d'estructures de dades)
  • EFB3 (comprendre i dominar els conceptes de l’algorísmica i la seva aplicació per a resolució de problemes)

 

Per tal de superar (aprovar) les activitats avaluatives, els estudiants hauran de demostrar

  • Que han adquirit els coneixements teòrics relatius als continguts de l’assignatura i que la seva comprensió els permet de portar-los a la pràctica [MECES-2 punt a, punt c]
  • Que poden desenvolupar solucions a problemes que, si bé són semblants a d’altres vistos anteriorment, presenten aspectes que són nous [MECES-2 punt f]

En relació a les competències bàsiques assignades a l’assignatura, aquestes queden cobertes especialment pel que fa als aspectes que s’expliciten:

  • CB2: resolució de problemes dins de la seva àrea d’estudi.
  • CB5: desenvolupament d'habilitats d'aprenentatge necessàries per a estudis posteriors (accés autònom a documentació, hàbits de treball efectiu). Es treballa molt més en el desenvolupament de les activitats pràctiques 1 i 2 on l'estudiant ha d'aprendre i usar un llenguatge de programació diferent de l'usat en les assignatures prèvies a aquesta.

Finalment, i pel que fa  a les competències transversals associades a l'assignatura:

 CT1: (coneixement tercera llengua) aquesta es treballa a partir de les fonts documentals que els estudiants han de consultar, atès que totes elles es troben en anglès.

CT2: (treball en grup) es treballa a les activitats de pràctiques, que es realitzen en grups de dos estudiants i en les que han de contribuir i consensuar les solucions d'aquestes activitats.

.

Normes de realització de les activitats

Per a cada activitat, els docents n'informaran de les normes i condicions particulars que les regeixin.

Les activitats unipersonals pressuposen el compromís de l'estudiant de realitzar-les de manera individual. Es consideraran suspeses totes aquelles activitats en què l'estudiant no s'ajusti a aquest compromís, independentment del seu paper (origen o destí).

Igualment, les activitats que s'hagin de realitzar en grups pressuposen el compromís per part dels estudiants que l'integren de realitzar-les en el si del grup. Es consideraran suspeses totes aquelles activitats en què el grup no hagi respectat aquest compromís amb independència del seu paper (origen o destí).

En les activitats realitzades en grup el docent pot, en base a la informació de què disposi, personalitzar la qualificació per a cada integrant del grup.

Qualsevol activitat no lliurada es considerarà puntuada amb zero punts.

És potestatiu dels docents acceptar o no lliuraments fora dels terminis que s'indiquin. 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.

Sistema d'avaluació


La qualificació final és la suma ponderada de les qualificacions de les següents activitats:

ACTIVITAT     PES

PROVA ESCRITA I 40%

PROVA ESCRITA II 30%

PRACTICA 1 6%

PRACTICA 2 6%

PRACTICA 3 6%

PRACTICA 4 6%

PRÀCTICA 5 6%

Amb les ponderacions anteriors, les activitats de laboratori (pràctiques) tenen un pes del 30%, les activitats de caire teòric tenen un pes del 70%.

La ponderació indicada prèviament només s'aplica si la qualificació de cadascuna de las proves escrites és superior a 3. Si no s'aplica, la qualificació final és la nota més baixa de las dues proves escrites.

La recuperació només possibilita recuperar la qualificació de les activitats teòriques, PROVA ESCRITA I i/o II, i sempre que aquesta nova qualificació no sigui inferior a 3 s’aplicarà la mateixa ponderació descrita anteriorment. En cas contrari l’assignatura no es considerarà recuperada, a l’igual que, si un estudiant o estudianta no ha realitzat les pràctiques de l’assignatura aquesta no pot ser recuperada.

 

Bibliografia


Bàsica

Juan Nadal, Lina. Programació: Notes de classe i exercicis. Publicació interna del TCM 2019,


Complementària

Allen Weiss, Mark. Estructuras de datos en Java. Ed. Addison Wesley,

Barnes D. J. , Kölling Michael. Programación orientada a objetos con Java. Ed. Pearson EDUCACION,

Lewis J., Chase J.. Estructuras de datos con Java. Diseño de estructuras y algoritmos. Ed. Pearson EDUCACION,

Martí N., Ortega Y., Verdejo J.A.. Estructuras de datos y métodos algorítmicos. Ejercicios resueltos. Ed. Ibergaceta Publicaciones, S.L. Edición 2.