Pràctiques de Programació ( PRAP )
| Crèdits: |
Departament: |
Tipus: |
Requisits: |
| 7.5 |
LSI |
Obligatòria per l'EI
Obligatòria per l'ETIG
Obligatòria per l'ETIS
|
|
P1
- Pre-requisit per l' EI , ETIG , ETIS
|
|
|
Professors
| Responsable: | Albert Rubio Gimeno (rubio lsi.upc.edu). |
| Altres: | Borja Valles Fuente (valles lsi.upc.edu) Elvira Pino Blanco (pino lsi.upc.edu) Guillem Godoy Balil (ggodoy lsi.upc.edu) Jorge Castro Rabal (castro lsi.upc.edu) Jose E. Adsuara Fuster (adsuara lsi.upc.edu) M. Luisa Bonet Carbonell (bonet lsi.upc.edu) Maria José Casany Guerrero (mjcasany lsi.upc.edu) Rene Alquezar Mancho (alquezar lsi.upc.edu). |
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 construccio de programes
Objectius Específics
Coneixements
- Comprendre els conceptes de mòdul i d'abstracció de dades.
- Aprendre tècniques de descomposició modular de programes.
- Tenir un primer contacte amb les estructures de dades lineals i arborescents
- Acostumar-se a analitzar l'eficiencia dels programes com a un criteri més de qualitat
- Adquirir conceptes bàsics de programació orientada a objectes.
- Conèixer la tècnica de disseny recursiu per immersió i la seva
relació amb la iteració.
Habilitats
- Crear nous tipus de dades, separant les fases d'especificació i implementació
- Descomposar un problema de cert tamany en mòduls independents
- Produir programes de tamany mitja fiables i fàcils d'entendre,
modificar, mantenir i reusar
- Codificar en un llenguatge orientat a objectes un disseny modular.
- Usar mòduls predefinits
- Escriure programes recursius sobre tipus no necesariament basics
i poder raonar sobre la seva correció i eficiència.
Competències
- 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.
- Capacitat d'abstracció. Capacitat d'enfrontar-se a problemes nous recorrent conscientment a estratègies que han estat útils en problemes resolts anteriorment.
- 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.
- 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).
- 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 traduits a Java. 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 introduits anteriorment.
Entre d'altres temes s'introdueixen
- 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 comeixements algorismics 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 Java.
|
|
3. Projecte de laboratori
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 0 |
0 |
21,0 |
0 |
35,0 |
0 |
0 |
56,0 |
|
Es tracta d'un treball individual on l'alumne hagi 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 Java.
2. Biblioteques (packages).
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 intermèdis.
- 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 Java 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 |
|
|
Generalització d'una funció. Com i quan generalitzar funcions en el disseny recursiu. Relacio entre nous parametres en funcions recursives 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 |
49,0 |
22,0 |
0 |
141,0 |
- Hores addicionals dedicades a l'avaluació:
|
6,0 |
- Total hores de treball per l'estudiant |
147,0 |
|
Metodologia docent
A classe de teoria el professor presenta els nous conceptes, argumentant la seva utilitat i mostrant mitjançant exemples com s'utilitzen.
A classe de laboratori hi ha una primera part 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 intermèdis 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:
- La Documentació i la Codificació en
Java 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.
En cas de còpia parcial o total en qualsevol de les avaluacions de l'assignatura s'aplicarà el que preveu la Normativa Acadèmica General de la UPC: realitzar de forma fraudulenta qualsevol acte d'avaluació comporta, com a mínim, una qualificació 0 de tota l'assignatura, i, possiblement, processos disciplinaris més severs. Més informació a l'apartat "L'avaluació de les assignatures" de la Guia Docent.
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.
Bibliografía complementària
- Castro J., et al. Curs de programació (tambe en castella), McGraw Hill, 1992.
- Cortadella J., Rubio A., Valentín L. Programació I (notes de curs), CPET, 2001.
- Liskov, B., Guttag, J. Abstraction and Specification in Program Development, McGraw-Hill, 1986.
- Campione, M. Walrath, K. The Java Tutorial: A Short Course on the Basics, Addison-Wesley, 2000.
- Bishop J. Java: fundamentos de programación, Addison-Wesley , 1999.
Enllaços web
-
http://www.lsi.upc.edu/~prap/prap.html
Pagina web oficial de l'assignatura
Capacitats prèvies
Coneixements i habilitats de programació bàsica i del llenguatge
de programació Java.
|