Curs 2010-11
Fonaments de la Programació (21406)
Titulació/estudi: Grau en Enginyeria en Informàtica, Grau en Enginyeria Telemàtica i Grau en Enginyeria de Sistemes Audiovisuals
Curs: primer
Trimestre: segon i tercer
Nombre de crèdits ECTS: 8 crèdits
Hores de dedicació de l'estudiant: 200 hores
Llengua o llengües de la docència: català i castellà
Professor: Jesús Ibañez
1. Presentació de l'assignatura
Fonaments de la Programació està integrada en un bloc d'assignatures sobre algorísmica i programació que es duen a terme en el primer i segon curs dels estudis de Grau en Enginyeria en Informàtica, Grau en Enginyeria Telemàtica i Grau en Enginyeria de Sistemes Audiovisuals. Per aquesta primera assignatura del bloc es pressuposa que els estudiants no tenen coneixements previs sobre algorísmica i programació. Dins d'aquesta assignatura també s'estableixen les bases de l'algorísmica, de les estructures de dades i de la programació en el llenguatge C. En les assignatures Programació Orientada a Objectes i Estructures de Dades i Algorismes (primer trimestre del segon curs) s'aprofundirà en les competències aquí adquirides, de manera que al final del primer trimestre del segon curs els estudiants hauran de ser capaços de desenvolupar programes d'una mida considerable amb les estructures de dades adequades, tant en forma imperativa com orientada a objectes. Així mateix, és important destacar que les bases adquirides en Fonaments de la Programació són imprescindibles per poder implementar la part pràctica de moltes assignatures al llarg dels estudis.
Les activitats d'aprenentatge s'han dividit en diferents categories fonamentalment en funció de la seva tipologia:
• sessions de teoria: els professors presenten una sèrie de conceptes i tècniques, a banda d'exemples del seu ús. Els estudiants hauran de repassar fora de l'aula els apunts i les seves notes per acabar d'assimilar els continguts.
• sessions de seminaris: els estudiants han de resoldre una sèrie d'exercicis petits, posant en pràctica els conceptes i tècniques presentats en les sessions de teoria. Aquestes activitats es comencen en aules d'ordinadors, i s'han de completar fora de l'aula.
• sessions de pràctiques: els estudiants han de resoldre uns problemes més amplis que els exercicis abans esmentats, de manera que han de decidir quins conceptes i tècniques han d'utilitzar en cada cas. Aquestes activitats es comencen en aules d'ordinadors, i s'han de completar fora de l'aula. A més a més, en les sessions de pràctiques els estudiants aprenen a utilitzar les eines de programació.
• exercicis d'autoavaluació: exercicis per tal que els estudiants, al final de cada unitat didàctica, comprovin que han assimilat els conceptes i tècniques presentats. Aquesta activitat la realitzen els estudiants fora de l'aula.
2. Prerequisits per al seguiment de l'itinerrai formatiu
Aquesta assignatura no requereix cap coneixement previ de programació ni algorísmica. Per a la realització d'alguns exercicis sí que es requereixen els coneixements de matemàtiques de nivell de batxillerat.
3. Competències que s'han d'assolir
L'objectiu fonamental d'aquesta assignatura és que els alumnes adquireixin les bases de l'algorísmica i de les estructures de dades, així com també que siguin capaços de desenvolupar fluidament programes de mida mitjana utilitzant el llenguatge C.
En aquest capítol es detalla què és el que s'espera que els estudiants hagin après un cop acabada l'assignatura. En primer lloc, les competències generals fan referència a habilitats no directament relacionades a la programació en si, sinó a l'àmbit professional d'un enginyer. Les competències específiques són les que fan referència a aspectes propis de l'assignatura.
3.1. Competències generals
Instrumentals
CG1: Capacitat de síntesi
Els estudiants han de ser capaços d'escriure solucions amb els elements essencials, de forma simple, elegant i com més eficientment millor.
CG2: Capacitat d'anàlisi
Els estudiants han de ser capaços de, a partir d'un problema concret, analitzar-lo i proposar-ne solucions adequades.
Sistèmiques
CG3: Capacitat per aplicar el coneixement a la pràctica
Els estudiants han de ser capaços d'aplicar els coneixements adquirits per resoldre problemes concrets, triant la tècnica que millor s'ajusti a cada cas.
CG4: Interès per la qualitat
Els estudiants han de ser capaços que el seu codi sigui, a banda d'eficient, fàcil de llegir i mantenir. Així mateix és important que es documentin correctament, tant dins del mateix codi com en una memòria.
3.2. Competències específiques
CE1: Capacitat per treballar amb eines de programació
Els estudiants han de ser capaços de treballar amb les eines bàsiques de la programació: un compilador i un debug. A més ha de ser capaç de treballar amb un editor de programació i un entorn de desenvolupament integrat. Aquesta competència és primordial per al desenvolupament correcte de les altres.
CE2: Domini dels tipus de dades estàtiques bàsiques i compostes
Els estudiants han de ser capaços de distingir els diferents tipus de dades estàtiques bàsiques i compostes i de decidir el tipus adequat en cada situació concreta.
CE3: Domini de les estructures de control
Els estudiants han de ser capaços de distingir les diferents estructures de control compostes i de decidir les més adequades per resoldre problemes concrets.
CE4: Capacitat de resolució de problemes mitjançant el disseny descendent i el domini de la utilització de funcions i llibreries
Els estudiants han de ser capaços de resoldre problemes d'una complexitat considerable utilitzant les tècniques del disseny descendent. En particular, els estudiants han d'entendre el funcionament de les crides de funcions i passos de paràmetres, han de dominar l'ús i creació de llibreries, i han de ser capaços de dividir un problema en les unitats adequades.
CE5: Domini dels tipus de dades dinàmics i de la gestió dinàmica de memòria
Els estudiants han d'entendre el mecanisme de gestió de memòria, així com també l'ús de punters i control dinàmic d'estructures de dades. S'inclou també el tractament de fitxers de text.
CE6: Documentació i estructuració de codi
Els estudiants han d'adquirir la costum d'estructurar i documentar el codi de forma adequada amb la finalitat de facilitar la seva lectura posterior.
CE7: Capacitat de lectura (ràpida) de codi en C
Els estudiants han de ser capaços d'entendre codi escrit per altres programadors, de manera relativament ràpida.
CE8: Domini dels elements fonamentals d'algorísmia
Els estudiants han de conèixer i ser capaç d'aplicar de forma adequada els conceptes fonamentals de la algorísmia, com ara la recursivitat i els algorismes de cerca i ordenació.
CE9: Capacitat d'anàlisi d'algorismes
Els estudiants han de conèixer la notació i els mecanismes de l'anàlisi de la complexitat algorísmica, i han de ser capaços de calcular el temps d'execució d'un programa.
4. Continguts
Bloc 1: Introducció i conceptes generals
Conceptes |
Procediments |
- Breu història de la programació i els seus llenguatges i paradigmes |
|
Bloc 2: Tipus de dades bàsics
Conceptes |
Procediments |
- Variables i constants |
- Declaració de constants i variables dels diferents tipus
|
Bloc 3: Expressions, sentències i estructures de control
Conceptes |
Procediments |
- Formació d'expressions |
- Avaluació d'expressions
|
Bloc 4: La descomposició funcional i el disseny descendent
Conceptes |
Procediments |
- Disseny descendent |
- Descomposició de problemes en subproblemes
|
Bloc 5: Tipus de dades compostes estàtiques
Conceptes |
Procediments |
- Arrays unidimensionals |
- Resolució de petits problemes sobre les operacions típiques amb cadascun dels tipus de dades |
Bloc 6: Declaració de tipus propis
Conceptes |
Procediments |
- Els tipus de les estructures |
- Resolució de petits problemes de definició de tipus de dades propis |
Bloc 7: Els punters i la gestió dinàmica de memòria
Conceptes |
Procediments |
- Declaració de punters |
- Resolució de petits problemes sobre les operacions típiques amb punters
|
Bloc 8: La descomposició funcional i el disseny descendent (segona part)
Conceptes |
Procediments |
- Pas de paràmetres per referència |
- Resolució de problemes mitjançant descomposició utilitzant funcions amb paràmetres per referència |
Bloc 9: Fitxers de text
Conceptes |
Procediments |
- El tipus fitxer (FILE) |
-Resolució de petits problemes sobre les operacions típiques amb fitxers de text |
Bloc 10: Estil i bones pràctiques
Conceptes |
Procediments |
- Estil, llegibilitat i ofuscació
|
- Resolució de problemes de detecció d'errors i millora d'estil.
|
Bloc 11: La descomposició funcional i el disseny descendent (tercera part)
Conceptes |
Procediments |
- Programació de llibreries |
- Resolució de problemes de creació i ús de llibreries. |
Bloc 12: Algorismes de cerca i ordenació
Conceptes |
Procediments |
- Cerca lineal i binària |
- Resolució de problemes sobre algorismes de cerca i ordenació |
Bloc 13: Recursivitat
Conceptes |
Procediments |
- Concepte de recursivitat
|
- Resolució de problemes mitjançant definició de funcions recursives |
Bloc 14: Anàlisi d'algorismes
Conceptes |
Procediments |
- Temps d'execució d'un programa
|
- Resolució de problemes de càlcul i comparació de temps d'execució de programes |
5. Avaluació
5.1. Criteris d'avaluació generals
Aquesta assignatura consta de dues parts principals:
• Fonaments teòric-pràctics, que engloba les activitats relacionades amb les sessions de teoria i de seminaris
• Pràctiques
Cadascuna suposa un 50% de la nota final, tot i que és necessari aprovar totes dues parts per superar l'assignatura.
Fonaments teòrico-pràctics
Hi haurà dos exàmens, un a la meitat de l'assignatura (al final del segon trimestre) i un altre al final (al final del tercer trimestre). El primer suposa un 25% de la nota i se centra en el bloc d'exercicis realitzats a les sessions d'exercicis del segon trimestre. El segon examen suposa el 75% restant i abasta qüestions teòrico-pràctiques de tot el conjunt de l'assignatura.
En les sessions d'exercicis, els professors aniran revisant el treball dels estudiants al llarg del trimestre, i podran demanar el lliurament d'un exercici al final de cada sessió. En funció d'aquestes revisions i lliuraments, es podrà pujar (però mai baixar) la nota de la part de fonaments teòrico-pràctics fins a 1,5 punts.
A més a més, s'han programat diverses activitats d'autoavaluació, una al final de cada unitat didàctica, amb l'objectiu que els estudiants vagin valorant el seu progrés. Aquestes activitats consten d'una sèrie de preguntes test de resposta múltiple, d'un nivell similar a les dels exàmens. Així mateix, en les activitats de seminaris els estudiants poden també avaluar el seu progrés, comparant les seves solucions amb els resultats publicats. En tot cas, aquestes activitats d'autoavaluació no incideixen en la nota.
Pràctiques
La nota d'aquesta part s'obté a partir de tres pràctiques lliurables, distribuïdes al llarg de l'assignatura. Cadascuna d'aquestes pràctiques té el mateix pes en la nota (és a dir, cada pràctica avaluable té un pes d'un 33.3%). Pel que fa a la nota de les pràctiques lliurables, a part de la valoració global, els professors podran revisar el progrés en el treball dels estudiants, al llarg de les sessions de pràctiques. En el cas que algun grup no fes aquesta revisió, o que aquesta revisió no fos satisfactòria, haurà de fer una defensa de la serva pràctica amb posterioritat al seu lliurament.
A part de les pràctiques lliurables, les altres pràctiques serviran als estudiants per avaluar el seu progrés. Aquestes activitats no incideixen en la nota.
Recuperació de Setembre
En el cas de no aprovar les dues parts en la convocatòria de Juny, només es guardarà per setembre una part aprovada en el cas que la nota de l'altra part sigui igual o superior a 3. En cas contrari, s'haurà de tornar a fer l'examen i lliurar una nova pràctica (amb un enunciat diferent).
4.2. Concreció
Primera pràctica avaluable
S'avaluarà la resolució d'una pràctica en la qual l'estudiant podrà mostrar el grau d'assimilació dels conceptes i competències adquirits durant el primer terç de l'assignatura. En particular s'avaluaran les competències CE2, CE3 i certs aspectes de la CE4 i la CE6 (estructuració de codi comentat). La pràctica consistirà en la resolució d'un problema, incloent-hi la seva anàlisi i la programació d'una solució adequada en llenguatge C. L'estudiant haurà de decidir les estructures de dades estàtiques així com el flux d'operacions de la solució i realitzar un senzill disseny descendent. Així mateix es valoraran les quatre competències generals definides.
Segona pràctica avaluable
S'avaluarà la resolució d'una pràctica en la qual l'estudiant podrà mostrar el grau de d'assimilació dels conceptes i competències adquirits durant els dos primers terços de l'assignatura, i especialment durant el segon. En particular s'avaluaran les competències CE2, CE3, CE4, CE5 i CE6. La pràctica consistirà en la resolució d'un problema considerablement complex, incloent-hi la seva anàlisi, l'elecció de les estructures de dades (estàtiques i dinàmiques) adequades, el disseny descendent, la programació de una solució adequada en llenguatge C (seguint les recomanacions de bones pràctiques) i la seva correcta documentació en una memòria en la qual també es justificaran les decisions adoptades. Així mateix es valoraran les quatre competències generals definides.
Tercera pràctica avaluable
S'avaluarà la resolució d'una pràctica en la qual l'estudiant podrà mostrar el grau de d'assimilació dels conceptes i competències adquirits durant tota l'assignatura. En particular s'avaluaran les competències CE2, CE3, CE4, CE5, CE6, CE8 i CE9. La pràctica consistirà en la resolució d'un problema considerablement complex, incloent-hi la seva anàlisi, l'elecció de les estructures de dades (estàtiques i dinàmiques) adequades, el disseny descendent, la programació d'una solució adequada en llenguatge C (seguint les recomanacions de bones pràctiques) i la seva correcta documentació en una memòria en la qual també es justificaran les decisions adoptades i on s'inclourà una part d'anàlisi de la complexitat algorísmica. Així mateix es valoraran les quatre competències generals definides.
Examen parcial
S'avaluarà la comprensió i aplicació dels conceptes i tècniques adquirits durant la primera meitat de l'assignatura (corresponent al segon trimestre). En concret s'avaluaran les competències CE2, CE3, CE4, CE5 i especialment la CE7. El mètode d'avaluació consisteix en un examen tipus test d'aproximadament 20 preguntes amb 4 opcions per cada pregunta amb només una resposta vàlida. Les preguntes estaran extretes (amb petites modificacions) de las propostes per a les sessions d'exercicis i de les activitats d'autoavaluació. L'avaluació tindrà lloc durant el període d'exàmens del segon trimestre.
Examen final
S'avaluarà la comprensió i aplicació dels conceptes adquirits al llarg de toda l'assignatura en petits programes. En concret s'avaluaran les competències CE2, CE3, CE4, CE5, CE7, CE8 i CE9. El mètode d'avaluació consisteix en un examen tipus test d'aproximadament 30 preguntes amb 4 opcions per cada pregunta amb només una resposta vàlida. L'avaluació tindrà lloc durant el període d'exàmens del tercer trimestre.
6. Bibliografia i recursos didàctics
6.1. Bibliografia bàsica
· Toni Navarrete Terrasa. Introducción a la programación con lenguaje C.
· Jesús Bisbal Riera. Manual d'algorísmica: Recursivitat, complexitat i disseny d'algorismes. Editorial UOC. ISBN: 978-84-9788-570-6
. Brian W. Kernighan, Dennis M. Ritchie: El lenguaje de programación C. Segunda edición. Prentice-Hall. ISBN: 968-880-205-0
6.2. Bibliografia complementària
Altres llibres sobre C:
· Herbert Schildt: C Manual de referencia. Mc Graw Hill. 84-481-0335-1
· James L. Antonakos, Kenneth C. Mansfield Jr.: Programación estructurada en C. Prentice-Hall. ISBN: 84-89660-23-9
· Marco A. Peña, José M. Cela: Introducción a la programación en C. Edicions UPF. ISBN: 84-8301-429-7
· Luis Joyanes, Ignacio Zahonero: Programación en C. Mc Graw Hill. ISBN: 84-481-3013-8
· Félix García, Jesús Carretero, Javier Fernández, Alejandro Calderón: El lenguaje de programación C. Diseño e implementación de programas. Prentice-Hall. ISBN: 84-205-3178-2
· P.J. Plauger, Jim Brodie: C Estándar. Guía de referencia rápida para programadores. Anaya. ISBN: 84-7614-264-1
Altres llibres "clàssics" sobre algorísmica (més avançats):
· Alfred V. Aho, Jeffrey D. Ullman, John E. Hopcroft: Estructuras de datos y algoritmos. Addison Wesley, 1988. ISBN: 968-444-345-5
· Niklaus Wirth: Algoritmos + estructuras de datos = programas. Ediciones del Castillo, 1980. ISBN: 84-219-0172-9
· Niklaus Wirth: Algoritmia y estructuras de datos. Prentice Hall, 1987. ISBN: 968-880-113-5
· D.E. Knuth: El arte de programar ordenadores (3 volums). Editoria Reverté. ISBN: 84-291-2661-9
· Terrence W. Pratt, Marvin V. Zelkowitz: Lenguajes de programación. Diseño e implementación. Prentice Hall, 3ª edic., 1997. ISBN: 970-17-0046-5
. G. Brassard, P. Bratley: Fundamentos de algoritmia. Prentice-Hall. ISBN: 84-89660-00-X
6.3. Recursos didàctics
A l'aula Moodle de l'assignatura (a l'Aula Global) es penjarà el material docent de l'assignatura. En particular es penjaran:
- Apunts
- Enunciats per a les sessions de seminari
- Enunciats per a les sessions de pràctiques
- Exercicis d'autoavaluació
7. Metodologia
El procés habitual d'aprenentatge en una unitat didàctica comença amb una sessió de teoria on es presenten certs fonaments teòrico-pràctics. Aquesta activitat es realitza en un grup gran d'estudiants. Els estudiants hauran de completar posteriorment aquesta activitat amb una lectura acurada dels apunts. Per exemple, una sessió típica de teoria de 2 hores de durada, convenientment aprofitades, necessitarà un treball personal fora de l'aula d'1 hora.
A continuació es duen a terme una o diverses sessions de seminaris i/o pràctiques. En les sessions de seminaris els estudiants posen a la pràctica els conceptes i tècniques presentats en la sessió de teoria, mitjançant la implementació de programes per a solucionar petits problemes. L'objectiu és que els estudiants consolidin els fonaments perquè posteriorment pugui dur a terme problemes més grans. Aquesta activitat es realitza individualment, en un grup d'uns 15 estudiants. Cada activitat d'aquest tipus està programada amb una durada de 4 hores, de les quals 2 es realitzen amb l'ajuda del professor. Els primers exercicis de la sessió, per als quals s'ofereixen les solucions, s'han de resoldre abans d'arribar a l'aula. El professor pot demanar el lliurament d'un dels exercicis plantejats al final de cada sessió.
En les sessions de pràctiques es proposen uns problemes més grans, especialment en les 3 pràctiques avaluables, que requereixen un disseny previ de la solució que s'implementarà i que integren diferents conceptes i tècniques. En l'última pràctica es reuneixen totes les competències específiques que els estudiants han d'adquirir en aquesta assignatura. Cada activitat d'aquest tipus es realitza per parelles, en un grup d'uns 30 estudiants, i s'ha de continuar fora de l'aula.
En cada sessió de seminaris i de pràctiques es dedica un temps per discutir els principals problemes que s'han presentat en la sessió anterior.
L'últim pas de la unitat didàctica és el de la resolució d'uns exercicis d'autoavaluació mitjançant els quals els estudiants poden comprovar han adquirit les competències que posteriorment s'avaluaran mitjançant els exàmens parcial i final.
Unitats didàctiques
Unitat didàctica 1: Primers passos: introducció, tipus de dades bàsics i estructures de control
Blocs de contingut |
Activitats d'aprenentatge |
|||
1: Introducció i conceptes generals 2: Tipus de dades bàsics 3: Expressions, sentències i estructures de control |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T1, T2 y T3 |
S1 |
P1 |
A1 |
Dedicació total Unitat Didàctica 1: 17 hores (10 a l'aula, 7 fora)
Detall de les activitats:
Sessió de teoria T1. 3 hores (2 a l'aula, 1 fora): breu història de la programació i explicació dels models de compilació i interpretació.
Sessions de teoria T2 i T3. 6 hores (per a cada sessió 2 a l'aula, 1 fora): explicació dels tipus de dades bàsics i principals exemples d'utilització. Explicació de la formació d'expressions i sentències bàsiques amb els principals exemples de la seva utilització. Estructures de control condicionals i iteratives i principals exemples de la seva utilització.
Sessió de seminaris S1. 4 hores (2 a l'aula, 2 fora): exercicis sobre formació d'expressions i estructures de control condicionals i iteratives.
Sessió de pràctiques P1. 3 hores (2 a l'aula, 1 fora): s'explicarà com instal·lar el compilador, i com editar, compilar i executar un programa. Es donarà als alumnes petits programes amb errors perquè s'acostumin als típics missatges d'error del compilador.
Autoavaluació A1. 1 hora (fora de l'aula): resolució d'exercicis d'autoavaluació sobre formació d'expressions i estructures de control.
Unitat didàctica 2: Funcions i disseny descendent
Blocs de contingut |
Activitats d'aprenentatge |
|||
4: La descomposició funcional i el disseny descendent |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T4 |
S2 |
|
A2 |
Dedicació total Unitat Didàctica 2: 8 hores (4 a l'aula, 4 fora)
Detall de les activitats:
Sessió de teoria T4. 3 hores (2 a l'aula, 1 fora): explicació de les bases del disseny descendent així com també la definició de funcions i el mecanisme de crida i pas de paràmetres per valor, amb exemples d'utilització.
Sessió de seminaris S2. 4 hores (2 a l'aula, 2 fora): exercicis sobre disseny descendent i pas de paràmetres per valor.
Autoavaluació A2. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre funcions i pas de paràmetres per valor.
Unitat didàctica 3: Tipus de dades compostos estàtics i declaració de tipus
Blocs de contingut |
Activitats d'aprenentatge |
|||
5: Tipus de dades compostos estàtics 6: Declaració de tipus propis |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T5 i T6 |
S3 |
P2 i P3 |
A3 |
Dedicació total Unitat Didàctica 3: 29 hores (10 a l'aula, 19 fora)
Detall de les activitats:
Sessions de teoria T5 i T6. 6 hores (per a cada sessió 2 a l'aula, 1 fora): explicació dels tipus de dades compostos (arrays, cadenes i estructures) amb exemples d'utilització. Explicació de la definició de tipus de dades propis per part del programador, amb exemples d'utilització.
Sessió de seminaris S3. 4 hores (2 a l'aula, 2 fora): exercicis sobre tipus de dades compostos.
Sessions de pràctiques P2 i P3 (primera pràctica avaluable). 18 hores (per cada sessió, 2 a l'aula, 7 fora): l'estudiant ha de resoldre (programant en C) uns problemes mitjans, utilitzant arrays, cadenes i estructures, i en alguns casos definint els propis tipus. Inclou la confecció d'una memòria explicativa del treball.
Autoavaluació A3. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre tipus de dades compostos.
Unitat didàctica 4: Punters i pas de paràmetres per referència
Blocs de contingut |
Activitats d'aprenentatge |
|||
7: Els punters i la gestió dinàmica de memòria 8: La descomposició funcional i el disseny descendent (segona part) |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T7 i T8 |
S4 |
P4 |
A4 |
Dedicació total Unitat Didàctica 4: 18 hores (8 a l'aula, 10 fora)
Detall de les activitats:
Sessions de teoria T7 i T8. 8 hores (per cada sessió 2 a l'aula, 2 fora): explicació del funcionament dels punters amb exemples d'utilització. Explicació del pas de paràmetres per referència amb exemples d'utilització. Explicació de les normes de visibilitat.
Sessió de seminaris S4. 4 hores (2 a l'aula, 2 fora): exercicis sobre punters i pas de paràmetres per referència.
Sessió de pràctiques P4. 5 hores (2 a l'aula, 3 fora): l'estudiant ha de resoldre (programant en C) uns petits problemes, utilitzant punters i pas de paràmetres per referència.
Autoavaluació A4. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre punters i pas de paràmetres per referència.
Unitat didàctica 5: Fitxers de text
Blocs de contingut |
Activitats d'aprenentatge |
|||
9: Fitxers de text |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T9 |
S5 |
|
A5 |
Dedicació total Unitat Didàctica 5: 8 hores (4 a l'aula, 4 fora)
Detall de les activitats:
Sessió de teoria T9. 3 hores (2 a l'aula, 1 fora): explicació dels fitxers de text i exemples d'utilització.
Sessió de seminaris S5. 4 hores (2 a l'aula, 2 fora): Exercicis sobre fitxers de text.
Autoavaluació A5. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre fitxers.
Unitat didàctica 6: Bones pràctiques i programació de llibreries
Blocs de contingut |
Activitats d'aprenentatge |
|||
10: Estil i bones pràctiques 11: La descomposició funcional i el disseny descendent (tercera part) |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T10 i T11 |
|
P5, P6, P7 i P8 |
A6 |
Dedicació total Unitat Didàctica 6: 33 hores (12 a l'aula, 21 fora)
Detall de les activitats:
Sessió de teoria T10. 3 hores (2 a l'aula, 1 fora): explicació de bones pràctiques per programar de forma llegible i obtenir programes menys propensos a errors. Explicació dels errors comuns quan es codifica un programa. Explicació de les tècniques d'anàlisi i depuració de codi.
Sessió de teoria T11. 3 hores (2 a l'aula, 1 fora): explicació del procés de creació de llibreries i segmentació del codi en diversos fitxers. Repàs de les normes de visibilitat.
Sessió de pràctiques P5. 4 hores (2 a l'aula, 2 fora): es començarà a utilitzar un entorn de desenvolupament integrat i s'explicarà com debugar un programa utilitzant l'entorn de desenvolupament. Els estudiants debugaran diversos programes.
Sessió de pràctiques P6. 4 hores (2 a l'aula, 2 fora): s'explicarà com crear un programa compost de diversos mòduls (o fitxers) utilitzant un entorn de desenvolupament integrat. Els estudiants crearan un programa dividit en diversos mòduls.
Sessions de pràctiques P7 i P8 (segona pràctica avaluable). 18 hores (per cada sessió, 2 a l'aula, 7 fora): l'estudiant ha de resoldre (programant en C) un problema de mida considerable que integri punters, pas de paràmetres per referència, fitxers de text i segmentació del codi en diversos fitxers. La solució s'ha de programar seguint les recomanacions de bones pràctiques. Inclou la confecció d'una memòria explicativa del treball.
Autoavaluació A6. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre estil, bones pràctiques, i segmentació del codi en mòduls o fitxers.
Unitat didàctica 7: Cerca, ordenació i recursivitat
Blocs de contingut |
Activitats d'aprenentatge |
|||
12: Algorismes de cerca i ordenació 13: Recursivitat |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T12, T13, T14 i T15 |
S6 i S7 |
|
A7 |
Dedicació total Unitat Didàctica 7: 24 hores (12 a l'aula, 12 fora)
Detall de les activitats:
Sessió de teoria T12. 3 hores (2 a l'aula, 1 fora): explicació dels algorismes de cerca lineal i binària, així com dels algorismes bàsics d'ordenació (bombolla, inserció i selecció).
Sessions de teoria T13, T14 i T15. 12 hores (T13 2 a l'aula, 2 fora; T14 2 a l'aula, 3 fora; T15 2 a l'aula i 1 fora): explicació del concepte de recursivitat. Explicació de les bases dels algorismes recursius i les seus avantatges i inconvenients. Explicació dels diferents tipus de recursivitat. Explicació de la transformació d'algorismes recursius a algorismes iteratius. Discussió de diversos exemples concrets d'algorismes recursius.
Sessió de seminaris S6. 4 hores (2 a l'aula, 2 fora): Exercicis sobre algorismes de cerca, algorismes d'ordenació i algorismes recursius.
Sessió de seminaris S7. 4 hores (2 a l'aula, 2 fora): Exercicis sobre algorismes recursius.
Autoavaluació A7. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre algorismes de cerca, algorismes d'ordenació i recursivitat.
Unitat didàctica 8: Anàlisi d'algorismes
Blocs de contingut |
Activitats d'aprenentatge |
|||
14: Anàlisi d'algoritmes |
Sessions de Teoria |
Sessions de Seminaris |
Sessions de Pràctiques |
Autoavaluació |
T16, T17 i T18 |
S8 |
P9 i P10 |
A7 |
Dedicació total Unitat Didàctica 8: 33 hores (12 a l'aula, 21 fora)
Detall de les activitats:
Sessions de teoria T16 i T17. 7 hores (T16 2 a l'aula, 2 fora; T17 2 a l'aula, 1 fora): explicació dels factors implicats en la eficiència d'un algorisme. Explicació de la notació asintòtica. Explicació dels procediments per calcular el temps d'execució d'un algorisme, amb exemples il·lustratius.
Sessió de teoria T18. 3 hores (2 a l'aula, 1 fora): repàs general i resolució de dubtes.
Sessió de seminaris S8. 4 hores (2 a l'aula, 2 fora): Exercicis sobre l'anàlisi de la complexitat d'algorismes.
Sessions de pràctiques P9 i P10 (tercera pràctica avaluable). 18 hores (per cada sessió, 2 a l'aula, 7 fora): l'estudiant ha de resoldre (programant en C) un problema de mida considerable que integri tots els conceptes i tècniques de l'assignatura (incloent algorismes recursius i anàlisis de la complexitat algorísmica). La solució ha de programar-se seguint les recomanacions de bones pràctiques. Inclou la confecció d'una memòria explicativa del treball.
Autoavaluació A8. 1 hora (fora de l'aula): Resolució d'exercicis d'autoavaluació sobre l'anàlisi de la complexitat d'algorismes.
Nota: a més a més de les hores de treball previstes i indicades en la descripció de les unitats didàctiques, es reserven 10 hores (8.5+1.5) per preparar i realitzar l'examen parcial, i 20 (17.5+2.5) hores per a l'examen final.
Dedicació total de l'assignatura: 200 hores (76 a l'aula, 124 fora)
8. Programació d'activitats
8.1. Hores de dedicació desl alumnes
|
Activitat |
Hores a l'aula |
Hores fora de l'aula |
|
||
Grup gran |
Grup mitjà |
Grup petit |
|
|||
Unitat didàctica 1 |
T1 |
2 |
|
|
1 |
|
T2 |
2 |
|
|
1 |
|
|
P1 |
|
2 |
|
1 |
|
|
T3 |
2 |
|
|
1 |
|
|
S1 |
|
|
2 |
2 |
|
|
A1 |
|
|
|
1 |
|
|
Unitat didàctica 2 |
T4 |
2 |
|
|
1 |
|
S2 |
|
|
2 |
2 |
|
|
A2 |
|
|
|
1 |
|
|
Unitat didàctica 3 |
T5 |
2 |
|
|
1 |
|
S3 |
|
|
2 |
2 |
|
|
T6 |
2 |
|
|
1 |
|
|
P2 |
|
2 |
|
7 |
|
|
P3 |
|
2 |
|
7 |
|
|
A3 |
|
|
|
1 |
|
|
Unitat didàctica 4 |
T7 |
2 |
|
|
2 |
|
S4 |
|
|
2 |
2 |
|
|
T8 |
2 |
|
|
2 |
|
|
P4 |
|
2 |
|
3 |
|
|
A4 |
|
|
|
1 |
|
|
Unitat didàctica 5 |
T9 |
2 |
|
|
1 |
|
S5 |
|
|
2 |
2 |
|
|
A5 |
|
|
|
1 |
|
|
Unitat didàctica 6 |
T10 |
2 |
|
|
1 |
|
P5 |
|
2 |
|
2 |
|
|
T11 |
2 |
|
|
1 |
|
|
P6 |
|
2 |
|
2 |
|
|
P7 |
|
2 |
|
7 |
|
|
P8 |
|
2 |
|
7 |
|
|
A6 |
|
|
|
1 |
|
|
Unitat didàctica 7 |
T12 |
2 |
|
|
1 |
|
T13 |
2 |
|
|
2 |
|
|
T14 |
2 |
|
|
3 |
|
|
S6 |
|
|
2 |
2 |
|
|
T15 |
2 |
|
|
1 |
|
|
S7 |
|
|
2 |
2 |
|
|
A7 |
|
|
|
1 |
|
|
Unitat didàctica 8 |
T16 |
2 |
|
|
2 |
|
T17 |
2 |
|
|
1 |
|
|
S8 |
|
|
2 |
2 |
|
|
P9 |
|
2 |
|
7 |
|
|
T18 |
2 |
|
|
1 |
|
|
P10 |
|
2 |
|
7 |
|
|
A8 |
|
|
|
1 |
|
|
Exàmens |
Parcial |
1,5 |
|
|
8,5 |
|
Final |
2,5 |
|
|
17,5 |
|
|
Total |
|
40 |
20 |
16 |
124 |
200 (ECTS * 25) |
8.2 Programació de sessions presencials
En aquesta secció s'inclouen taules amb la programació de les sessions presencials. En les taules, les sessions T són de teoria, S són de seminari, i P són de pràctiques. Tingueu en compte que, per a cada grup, la meitat dels seus subgrups de seminari té les sessions de seminari un dia, i l'altra meitat les té un altre dia diferent. En canvi, tots els subgrups de pràctiques de cada grup tenen les sessions de pràctiques el mateix dia i a la mateixa hora, tot i que cada subgrup les té en una aula diferent. Per veure les aules de cada sessió, consulteu:
http://www.upf.edu/esup/docencia/graus/http://www.upf.edu/esup/docencia/graus/