Saltar al contingut Menu
Mapa
  • Inici
  • Informació
  • Contacte
  • Mapa

Pràctiques de Programació (PRAP)

Crèdits Dept. Tipus Requisits
7.5 (6.0 ECTS) CS
  • Obligatòria per a l'EI
  • Obligatòria per a l'ETIG
  • Obligatòria per a l'ETIS
P1 - Pre-requisit per la EI , ETIG , ETIS

Professors

Responsable:  (-)
Altres:(-)

Objectius Generals

Aprofundir en l'aprenentatge de la programació estructurada. Introduir tècniques per dissenyar programes de tamany mitjà. Proporcionar a l'alumne més experiència en el camp de la Programació mitjançant la realització de pràctiques.
Ampliar el domini de la recursivitat com a eina de construcció de programes.


Objectius Específics

Coneixements

  1. Comprendre els conceptes de mòdul i d'abstracció de dades.
  2. Aprendre tècniques de descomposició modular de programes.
  3. Tenir un primer contacte amb les estructures de dades lineals i arborescents.
  4. Acostumar-se a analitzar l'eficiencia dels programes com a un criteri més de qualitat.
  5. Adquirir conceptes bàsics de programació orientada a objectes.
  6. Conèixer la tècnica de disseny recursiu per immersió i la seva
    relació amb la iteració.

Habilitats

  1. Crear nous tipus de dades, separant les fases d'especificació i implementació.
  2. Descomposar un problema de cert tamany en mòduls independents.
  3. Produir programes de tamany mitja fiables i fàcils d'entendre,
    modificar, mantenir i reusar.
  4. Codificar en un llenguatge orientat a objectes un disseny modular.
  5. Usar mòduls predefinits.
  6. Escriure programes recursius sobre tipus no necessàriament bàsics
    i poder raonar sobre la seva correcció i eficiència.

Competències

  1. Capacitat per entendre problemes: davant l'enunciat d'un problema, distingir les dades (o els elements de partida), les incògnites (o el que es demana) i les hipòtesis i lleis aplicables.
  2. Capacitat d'abstracció. Capacitat d'enfrontar-se a problemes nous recorrent conscientment a estratègies que han estat útils en problemes resolts anteriorment.
  3. Capacitat per argumentar lògicament les decisions preses, la feina feta o un punt de vista. Capacitat per donar opinions, raonaments i justificacions fonamentades per tal de convèncer.
  4. Capacitat per presentar per escrit, de forma clara i correcta, els resultats de la pròpia feina (a nivell de documentar un lliurament de pràctiques).
  5. Capacitat d'organització del treball personal: capacitat per establir prioritats entre diverses tasques, per planificar el temps i per elaborar i organitzar el propi material de treball.

Continguts

Hores estimades de:

T P L Alt L Ext. Est A Ext.
Teoria Problemes Laboratori Altres activitats Laboratori extern Estudi Altres hores fora d'horari fixat

1. Introducció als mòduls
T      P      L      Alt    L Ext. Est    A Ext. Total 
6,0 0 12,0 0 8,0 3,0 0 29,0
Descomposició de problemes complexos. Reusabilitat. Modularitat. Independència de la representació. Especificació de mòduls: dades i operacions.
Jerarquia de mòduls. Enriquiments.
Ús de mòduls. Programació amb mòduls predefinits. Especificació i ús de tipus de dades genèrics: piles, cues, llistes i arbres binaris.
Implementació de moduls. Implementació de nous tipus: el constructor Tupla.
  • Laboratori:
    A les sessions es mostren exemples d'us de mòduls ja traduïts a C++. A continuació els alumnes resolen diversos exercicis.

2. Disseny modular
T      P      L      Alt    L Ext. Est    A Ext. Total 
6,0 0 9,0 0 6,0 3,0 0 24,0
Es presenten les tècniques per a descomposar programes en mòduls satisfent els requeriments de qualitat introduïts anteriorment.

Entre d'altres temes, s'hi inclouen
- Descomposició de problemes complexos.
- Abstracció funcional i de dades
- Refinaments successius
- Disseny ascendent/descendent.

Els conceptes i tècniques s'ilustren amb casos d'estudi.
Al mateix temps es repassen els coneixements algorísmics vistos a l'assignatura Programació 1.
  • Laboratori:
    A les sessions es reprenen els casos d'estudi vistos a teoria i es treballa la seva traducció a C++.

3. Projecte de laboratori
T      P      L      Alt    L Ext. Est    A Ext. Total 
0 0 21,0 0 42,0 0 0 63,0
Es tracta d'un treball individual on l'alumne ha de resoldre un problema de mitjana complexitat. S'hauran d'aplicar tant els coneixements de disseny
modular i orientat a objectes, vistos als continguts 1 i 2, com els coneixements de Programació a petita escala estudiats al curs anterior.

Els temes d'ajut al desenvolupament del projecte que es tractaran a les sessions de laboratori seran els següents:

1. Codificació en C++.
2. Biblioteques (libraries).
3. Depuració i prova de programes ("debugging" i "testing").
4. Entrada/sortida amb fitxers de text.
  • Laboratori:
    El projecte s'estructurarà de manera que es pugui resoldre incrementalment durant varies setmanes del curs, amb supervisió setmanal i lliuraments parcials.
  • Activitats de laboratori addicionals:
    L'alumne haurà de invertir un cert temps fora de classe per preparar les sessions de supervisiò i la documentació per els diversos lliuraments. L'alumne podrà fer consultes als professors fora de classe (amb cita previa). També la traducció a C++ es pot fer en horari lliure.

4. Programació recursiva
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 0 0 0 0 4,0 0 8,0
Immersió/generalització d'una funció. Com i quan generalitzar funcions en el disseny recursiu. Relacio entre els nous parametres de les funcions recursives generalitzades i les variables locals en les iteracions.

5. Millores d'eficiència en programes recursius i iteratius
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 0 0 0 0 4,0 0 8,0
El problema de repetir càlculs en un programa. Com evitar repetir càlculs. Recursivitat: nous paràmetres i/o resultats (immersions per raons d'eficiència). Iteració: noves variables locals.

6. Tipus recursius
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 0 0 0 0 4,0 0 8,0
Introducció a l'ús de tipus recursius. Definicions recursives de tipus. Implementació dels tipus abstractes de dades mitjançant tipus recursius. Implementació de les operacions bàsiques.

7. Combinació de recursivitat i iteració
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 0 0 0 0 4,0 0 8,0
Algorismes de cerca exhaustiva. Algorismes de càlcul d'objectes combinatoris.


Total per tipus T      P      L      Alt    L Ext. Est    A Ext. Total 
28,0 0 42,0 0 56,0 22,0 0 148,0
Hores addicionals dedicades a l'avaluació 6,0
Total hores de treball per l'estudiant 154,0

Metodologia docent

A classe de teoria el professor presenta els nous conceptes, argumenta la seva utilitat i mostra mitjançant exemples com s'utilitzen.

A classe de laboratori hi ha una primera part (7-8 setmanes) basada en la resolució d'exercicis petits per part de l'alumne.

A la segona part, es publica un enunciat per un programa una mica mes gran
que l'alumne resoldrà amb la supervisio personalitzada del professor.
Aquest procés inclourà lliuraments periòdics de parts de la solució,
amb la finalitat d'orientar a l'alumne en la direcció correcta.

Mètode d'avaluació

La nota final de l'assignatura es calcula així:

65% pràctica + 35% examen final

La nota de la pràctica s'obté a partir de dues notes, procedents de
l'avaluació de:

- El Desenvolupament de la Pràctica, reflectit a l'Informe de Resolució i a la Codificació en C++ de la Pràctica, que conjuntament valdran el 55%
- Un Control sobre els continguts de la Pràctica, que valdrà l'altre 45%. Aquest control es convocarà com si fos un examen parcial.

Qualsevol intent de frau realitzat durant el curs comportarà l'aplicació de la normativa acadèmica general de la UPC i l'inici d'un procés disciplinari.

Bibliografía bàsica

  • Rubio, Albert, Valles, Borja Apunts de PRAP, web de l'assignatura, 2004.
  • Valles, Borja Laboratori de PRAP , Web de l'assignatura, 2004.
  • Cortadella J., Rubio A., Valentín L. Programació 1 (notes de curs), CPET, 2001.

Bibliografía complementària

  • Jorge Castro ... [et al.] Curs de programació, McGraw-Hill,, 1992.
  • Balcázar, José Luis Programación Metódica, McGraw-Hill, 1993.
  • Barbara Liskov and John Guttag Abstraction and specification in program development, The MIT Press / McGraw-Hill, 1986.
  • Roura, Salvador Normes de Programació de P1, Pàgina web de l'assignatura P1, .
  • Pozo, Salvador y otros C más más con clase, http://www.conclase.net/c/index.php, .

Enllaços web

  1. http://www.lsi.upc.es/~prap/prap.html
    Pagina web oficial de l'assignatura


Capacitats prèvies

Coneixements i habilitats de programació bàsica i del llenguatge
de programació C++.


Compartir

 
logo FIB © Facultat d'Informàtica de Barcelona - Contacte - RSS
Aquest web utilitza cookies pròpies per oferir una millor experiència i servei. En continuar amb la navegació entenem que acceptes la nostra política de cookies.
Versió clàssica Versió mòbil