Curs 2015-16

Fonaments de la Programació

Titulació: Codi: Tipus:
Grau en Enginyeria Informàtica 21406 Obligatòria 1r curs
Grau en Enginyeria Telemàtica 21297 Obligatòria 1r curs
Grau en Enginyeria en Sistemes Audiovisuals 21595 Obligatòria 1r curs

 

Crèdits ECTS: 8 Dedicació: 200 hores Trimestre: 2n i 3r

 

Departament: Dept. de Tecnologies de la Informació i les Comunicacions
Coordinador: Sergi Jordà
Professorat:

Sergi Jordà, Dolors Sala, Janine Kleinhans, Carthach O'Nuanain, Javier Segovia, David Soto, Vicky Vouloutsi, Jordi Ysard.

Idioma:

Català i Castellà

Horari:
Campus: Campus de la Comunicació - Poblenou

 

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 a aquesta primera assignatura del bloc es pressuposa que els estudiants no tenen coneixements previs sobre algorísmica i programació. En ella s'estableixen les bases de la 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 de segon curs l' estudiant ha de ser capaç de desenvolupar programes de grandària 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 nombroses assignatures al llarg dels estudis.

Les activitats d'aprenentatge s'han dividit fonamentalment en funció de la seva tipologia en diverses categories:

 

Prerequisits

Aquesta assignatura no requereix cap coneixement previ de programació ni algorísmica. Per a la realització d'alguns exercicissi es requereixen els coneixements de matemàtiques de nivell de batxillerat.

 

Competències

L'objectiu fonamental d'aquesta assignatura és que els alumnes adquireixin les bases de la algorísmica i estructures de dades, així com 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 en acabar l'assignatura. En primer lloc, les competències generals fan referència a habilitats no directament relacionades amb la programació en si, sinó a l'àmbit professional d'un enginyer. Les competències específiques són les referides a aspectes propis de l'assignatura.

Competències generals

Instrumentals
CG1: Capacitat de síntesi
L'estudiant ha de ser capaç d'escriure solucions amb els elements essencials, de forma simple, elegant i el més eficient possible.
CG2: Capacitat d'anàlisi
L'estudiant ha de ser capaç de, a partir d'un problema concret, analitzar-lo i proposar solucions adequades a aquest problema.

Sistèmiques
CG3: Capacitat per aplicar el coneixement a la pràctica
L'estudiant ha de ser capaç 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
L'estudiant ha de ser capaç de que el seu codi sigui, a més d'eficient, fàcil de llegir i mantenir. Així mateix és important que es documenti correctament, tant dins del propi codi com en una memòria.

Competències específiques

CE1: Capacitat per treballar amb eines de programació
L'estudiant ha de ser capaç de treballar amb les eines bàsiques per a la programació: un compilador i un debugado. 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 correcte desenvolupament de les altres.
CE2: Domini dels tipus de dades estàtiques bàsiques i compostos
L'estudiant ha de ser capaç de distingir els diferents tipus de dades estàtiques bàsics i compostos i de decidir el tipus adequat per a cada situació concreta.
CE3: Domini de les estructures de control
L'estudiant ha de ser capaç de distingir les diferents estructures de control compostos i de decidir les més adequades per a resoldre problemes concrets.
CE4: Capacitat de resolució de problemes mitjançant disseny descendent i domini de la utilització de funcions i llibreries
L'estudiant ha de ser capaç de resoldre problemes d'una complexitat considerable utilitzant les tècniques del disseny descendent. En particular,  l'estudiant ha de comprendre el funcionament de les crides a funcions i passos de paràmetres, ha de dominar l'ús i creació de llibreries, i ha de ser capaç 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
L'estudiant ha de comprendre el mecanisme de gestió de memòria, així com l'ús de punters i control dinàmic d'estructures de dades . S'inclou també el maneig de fitxers de text.
CE6: Documentació i estructuració de codi
L'estudiant ha d'adquirir l'hàbit d'estructurar i documentar el codi de forma adequada amb la finalitat de facilitar la seva posterior lectura.
CE7: Capacitat de lectura (ràpida) de codi en C
L'estudiant ha de ser capaç de comprendre codi escrit per altres programadors, de forma relativament ràpida.
CE8: Domini dels elements fonamentals d'algorísmia
L'estudiant ha 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ó.

 

Avaluació

 1 . Criteris d'avaluació generals

Aquesta assignatura consta de dos trimestres o blocs, que s'avaluaran per separat. La nota obtinguda a cada un d'ells suposa el 50% de la nota final de la assignatura, i cal aprovar ambdós trimestres, per aprovar la assignatura.
 
La avaluació de cada un d'aquests dos trimestres consta tanmateix de dos parts: una part de "Fonaments teoricopràctics" i una part de "Pràctiques".

Cadascuna d'aquestes dues parts, suposa tanmateix el 50% de la nota de cada trimestre.

Fonaments teoricopràctics

Hi haurà dues proves escrites, una a meitat de l'assignatura (al final del segon trimestre) i una altra al final de la assignatura (al final del tercer trimestre). Aquestes proves es centren en la teoria i el bloc d'exercicis realitzats durant el trimestre en qüestió, i cada una d'elles suposa un 50% de la nota final trimestral. 

A les sessions de seminaris, els professors aniran revisant el treball dels estudiants al llarg del trimestre, i demanaran 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 teoricopràctics fins a 1,5 punts, sempre que la nota obtinguda a la prova escrita sigui superior o igual a 4 sobre 10. 

A més, s'han programat diverses activitats d'autoavaluació, una al final de cada unitat didàctica, amb l'objectiu que l'estudiant vagi valorant el seu propi progrés. Aquestes activitats consten d'una sèrie de preguntes test de resposta múltiple, d'un nivell similar a les de les proves escrites. Aquestes activitats d'autoavaluació no incideixen en la nota.

Pràctiques

En cada un dels dos trimestres, s'obtindrà també una nota de pràctiques, obtinguda a partir de la mitjana de les pràctiques lliurables realitzades durant el trimestre. Per aquesta nota pràctiques, 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 no fos satisfactòria, haurà de fer una defensa de la seva pràctica amb posterioritat al seu lliurament.

A part de les pràctiques lliurables, altres sessions pràctiques serviran als estudiants per avaluar el seu propi progrés. Aquestes activitats no incideixen en la nota.

Recuperació de Juliol

La part de fonaments teoricopràctics és recuperable, però la part de pràctiques no és recuperable. Per tant:

- en cas de suspendre una o les dues parts de fonaments teoricopràctics, i de tenir les parts de pràctiques aprovades, l'estudiant tindrà l'opció de recuperar al juliol la (o les) part(s) de fonaments teoricopràctics corresponent(s), mitjançant la realització de una o dues noves proves escrites (del mateix tipus que la proves escrites de cada un dels trimestres corresponents). 

- en cas de suspendre al juny la part de pràctiques, no serà possible recuperar l'assignatura.

En cas de suspendre (o de no presentar-se) a la recuperació de Juliol, l'estudiant suspendrà tota la assignatura, fins i tot en el cas de que sols tingués un dels dos blocs pendents.

 

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 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 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 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 què 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 d'assimilació dels conceptes i competències adquirits durant tota l'assignatura. En particular s'avaluaran les competències CE2, CE3, CE4, CE5, CE6 i CE8.
La pràctica consistirà en la resolució d'un problema considerablement complex, incloent 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 què 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.

Prova escrita primer bloc (final segon trimestre)

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 una prova escrita tipus test d'al voltant de 20 preguntes amb 4 opcions per cada pregunta amb només una resposta vàlida. Les preguntes estaran extretes (amb lleugeres modificacions) de les 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.

Prova escrita segon bloc (final tercer trimestre)

S'avaluarà la comprensió i aplicació dels conceptes adquirits al llarg de tota l'assignatura en petits programes. En concret s'avaluaran les competències CE2, CE3, CE4, CE5, CE7 i CE8. El mètode d'avaluació consisteix en una prova escrita tipus test de prop de 20 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.

 

Continguts

Bloc 1: Introducció i conceptes generals

ConceptesProcediments

- Breu història de la programació i els seus llenguatges i paradigmes

- Mecanismes de compilació i interpretació

- Diferència entre programa i algorisme
 

 

Bloc 2: Tipus de dades bàsiques 

ConceptesProcediments
 
- Variables i constants

- Els diferents tipus de dades bàsiques

Tipus numèrics
Caràcters
booleans

- Declaració de constants i variables dels diferents tipus

Bloc 3: Expressions, sentencies i estructures de control 

ConceptesProcediments

- Formació d'expressions

- Introducció a la lògica booleana

- Sentències o instruccions:

Assignacions
Operacions d'entrada i sortida
L'ordre de precedència dels operadors

- Les estructures de control:

Les estructures condicionals
Les estructures iteratives
 

- Avaluació d'expressions

- Resolució de petits problemes utilitzant les sentències i estructures de control adequades

 

Bloc 4: La descomposició funcional i el disseny descendent 

ConceptesProcediments

- Disseny descendent

- Declaració de funcions

- Definició de paràmetres

- Trucades a funcions i pas de paràmetres

- El tipus void
 

 
- Descomposició de problemes en subproblemes

- Resolució de petits problemes definint funcions de forma adequada

 

Bloc 5: Tipus de dades compostos estàtics

ConceptesProcediments

- Arrays unidimensionals

- Arrays multidimensionals

- Strings o cadenes de caràcters

- Estructures (structs)

- Resolució de petits problemes sobre les operacions típiques amb cada un dels tipus de dades 

Bloc 6: Declaració de tipus propis 

ConceptesProcediments

- Els tipus de les estructures

- Definició de tipus mitjançant typedef

- Conversions de tipus

- Resolució de petits problemes de definició de tipus de dades pròpies

Bloc 7: Els punters i la gestió dinàmica de memòria

ConceptesProcediments

- Declaració de punters

- Operacions de direcció i indirecció

- Assignació de valors a punters

- El punter nul

- Arrays i punters en C

 - Resolució de petits problemes sobre les operacions típiques amb punters

- Resolució de petits problemes típics d'arrays utilitzant punters

 

Bloc 8: La descomposició funcional i el disseny descendent (segona part) 

ConceptesProcediments

- Pas de paràmetres per referència

- La funció main i els seus arguments

- Visibilitat i abast

- Les llibreries i el pre-processador

 
- Resolució de problemes mitjançant descomposició utilitzant funcions amb paràmetres per referència

Bloc 9: Fitxers de text

ConceptesProcediments

- El tipus fitxer (FILE)

- Operacions amb fitxers:

Obrir
Tancar
Escriure
• Llegir

- Entrada i sortida estàndard

 
 
- Resolució de petits problemes sobre les operacions típiques amb fitxers de text

Bloc 10: Estil i bones pràctiques

ConceptesProcediments

- Estil, llegibilitat i ofuscació

- Bones pràctiques

- Errors comuns

- Anàlisi de codi

- Depuració

- Resolució de problemes de detecció d'errors i millora d'estil

- Ús d'eines d'anàlisi de codi i depuració.

 

Bloc 11: La descomposició funcional i el disseny descendent (tercera part)

ConceptesProcediments

- Programació de llibreries

- Segmentació del codi en fitxers

- Fitxers de capçalera
 

- Resolució de problemes de creació i ús de llibreries

 

Bloc 12: Algoritmes de cerca i ordenació

Conceptes

Procediments
 
- Recerca lineal i binària

- Algorismes bàsics d'ordenació

Bombolla
Inserció
Selecció

- Resolució de problemes sobre algorismes de cerca i ordenació  

Bloc 13: Recursivitat 

ConceptesProcediments

- Concepte de recursivitat

- Algorismes recursius

- Cas base i recurrència

- Avantatges i inconvenients

- Recursivitat directa i indirecta

- Transformació a algorismes iteratius

- Exemples concrets d'algorismes recursius (fractals, torres de Hanoi, Quicksort, etc)

 - Resolució de problemes mitjançant definició de funcions recursives

Bloc 14: Gestió avançada de memòria

ConceptesProcediments

- Punters a punters

- Arrays de punters

- Punters a funcions

- Redimensionament de memòria

- Exemples concrets de gestió avançada de memòria (llistes, arbres binaris, etc)
 

- Resolució de problemes de gestió avançada de memòria

 

 

 

 

Metodologia

El procés habitual d'aprenentatge en una unitat didàctica comença amb una sessió de teoria en què es presenten certs fonaments teoricopràctics. Aquesta activitat es realitza en un gran grup d'estudiants. L'estudiant haurà posteriorment completar aquesta activitat amb una lectura detinguda 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 porta a terme una o diverses sessions de seminaris i / o pràctiques. A les sessions de seminaris l'estudiant posa en pràctica els conceptes i tècniques presentats en la sessió de teoria , mitjançant la implementació de programes per solucionar petits problemes. L'objectiu és que l'estudiant consolidi els fonaments per a posteriorment poder 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 suport 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 sol·licitar el lliurament d'un dels exercicis plantejats al final de cada sessió.

A 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ó a implementar i que integren diferents conceptes i tècniques. En l'última pràctica es reuneixen totes les competències específiques que l'estudiant ha 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.

A cada sessió de seminaris i de pràctiques es dedica un temps per discutir els principals problemes que s'han presentat a 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 l'estudiant pot comprovar si ha adquirit les competències que posteriorment s'avaluaran mitjançant els exàmens parcial i final.

1 . Unitats didàctiques

Unitat didàctica 1: Primers passos : introducció, tipus de dades bàsiques i estructures de control

Blocs de contingut
Activitats d'aprenentatge

1: Introducció i conceptes generals
2: Tipus de dades bàsiques
3: Expressions , sentències i estructures de control

 Sessions de Teoria  Sessions de Seminaris   Sessions de Pràctiques  Autoavaluació
 T1, T2, T3 i T4  S1 i S2  P1

 A1

Dedicació total Unitat Didàctica 1: 21 hores (12 a l'aula, 9 fora)

Detall de les activitats:

Sessió de teoria T1. 3 hores ( 2 a l'aula , 1 fora ): breu història de la programació i explicant els models de compilació i interpretació.
Sessions de teoria T2, T3 i T4. 9 hores (per cada sessió 2 a l'aula, 1 fora): explicació dels tipus de dades bàsiques 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ó .
Sessions de seminaris S1 i S2. 8 hores (4 a l'aula, 4 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'habituïn 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ó

T5 S3  

A2

Dedicació total Unitat Didàctica 2: 8 hores (4 a l'aula, 4 fora)

Detall de les activitats :
Sessió de teoria T5. 3 hores (2 a l'aula , 1 fora): explicació de les bases del disseny descendent així com la definició de funcions i el mecanisme de trucada i pas de paràmetres per valor , amb exemples d'utilització .
Sessió de seminaris S3. 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 Autoavaluació estàtics
6: Declaració de tipus propis

Sessions de Teoria  Sessions de Seminaris Sessions de Pràctiques

Autoavaluació

 T6 i T7  S4  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 T6 i T7. 6 hores (per 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 pròpies per part del programador, amb exemples d'utilització.
Sessió de seminaris S4. 4 hores (2 a l'aula, 2 fora): exercicis sobre tipus de dada 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 seus 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óndiná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ó
 T8 i T9  S5  P4

 A4

Dedicació total Unitat Didàctica 4: 18 hores (8 a l'aula, 10 fora)
Detall de les activitats :
Sessions de teoria T8 i T9 . 8 hores (per cada sessió 2 a l'aula, 2 fora) : explicació del funcionament dels punters amb exemples de utilización.Explicación del pas de paràmetres per referència amb exemples d'utilització . Explicació de les regles de visibilitat .
Sessió de seminaris S5 . 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ó

T10

S6

 

 A5

Dedicació total Unitat Didàctica 5: 8 hores (4 a l'aula, 4 fora)
Detall de les activitats :
Sessió de teoria T10 . 3 hores ( 2 a l'aula , 1 fora ) : explicació dels fitxers de text i exemples d'utilització .
Sessió de seminaris S6 . 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


11: La descomposició funcional i el disseny descendent (tercera part)

Sessions de Teoria Sessions de Seminaris Sessions de Pràctiques Autoavaluació
 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 T11. 3 hores (2 a l'aula, 1 fora): Explicació de les tècniques d'anàlisi i depuració de codi. Explicació del procés de creació de llibreries i segmentació del codi en diversos fitxers. Repàs de les regles 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 debugarán 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ó 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: Recerca, 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  S7 i S8  

 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 algoritmes 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 els 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 (incloent els d'ordenació avançada).
Sessió de seminaris S7. 4 hores (2 a l'aula, 2 fora): Exercicis sobre algorismes de cerca, algorismes d'ordenació i algorismes recursius.
Sessió de seminaris S8. 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: Gestió avançada de memòria

Blocs de contingut
Activitats d'aprenentatge

 14: Gestió avançada de memòria

Sessions de Teoria Sessions de Seminaris Sessions de Pràctiques Autoavaluació

T16, T17 i T18

  P9 i P10 A8

Dedicació total Unitat Didàctica 8: 29 hores (10 a l'aula, 19 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 mecanismes i tècniques per a la gestió avançada de memòria (punters a punters, arrays de punters, punters a funcions, redimensionament de memòria). Discussió d'exemples concrets que il·lustren la gestió avançada de memòria.
Sessió de teoria T18. 3 hores (2 a l'aula, 1 fora): repàs general i resolució de dubtes.
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 gestió avançada de memòria). La solució ha de programar 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 gestió avançada de memòria .

Nota: 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 la prova escrita parcial, i 20 (17.5 +2.5) hores per a la prova escrita final.

Dedicació total de l'assignatura: 200 hores (76 a l'aula, 124 fora)

Programació d'activitats

Hores de dedicació dels alumnes

 
Activitats a l'aula
Hores fora de l'aula
 
Activitat
Grup gran
Grup mitjà
Grup petit
 
Unitat didàctica 1

T1

2

   

1

T2

2

   

1

P1

 

2

 

1

T3

2

   

1

S1

   

2

1

A1

     

1

Unitat didàctica 2

T4

2

     

S2

   

2

 

A2

     

1

Unitat didàctica 3      T5     1
S3     2
T6  2     1
P2   2   7
P3   2   7
A3       1
Unitat didàctica 4     T7  2     2
S4      2 2
T8     2
P4     3

A4

 

 

 

1

Unitat didàctica 5   T9  2     2
S5      2 2
A5       1
Unitat didàctica 6         T10     1
 P5     2
 T11     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 1
 A7       1
Unitat didàctica 8  T16 2     2
T17 2     1
S8     2 2
P9    2   7

 

Recursos

Fonts d'informació per a l'aprenentatge . Bibliografia bàsica

• Toni Navarrete Terrasa. Introducció a la programació amb llenguatge 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 llenguatge de programació C.Segunda edició. Prentice - Hall. ISBN : 968-880-205-0


Fonts d'informació per a l'aprenentatge . Bibliografia complementària

Altres llibres sobre C:
• Herbert Schildt: C Manual de referència. Mc Graw Hill . 84-481-0335-1
• James L. Antonakos , Kenneth C. Mansfield Jr : Programació estructurada en C. Prentice - Hall. ISBN: 84-89660-23-9
• Marc A. Peña, José M. Cela: Introducció a la programació en C.Edicions UPF. ISBN : 84-8301-429-7
• Luis Joyanes, Ignacio Zahonero: Programació en C. Mc Graw Hill. ISBN : 84-481-3013-8
• Félix García, Jesús Carretero, Javier Fernández, Alejandro Calderón: El llenguatge de programació C. Diseñoo i implementació de programas.Prentice - Hall . ISBN: 84-205-3178-2
• P.J. Plauger, Jim Brodie: C Estàndard. Guia de referència ràpida per a programadors. Anaya. ISBN: 84-7614-264-1

Altres llibres "clàssics" sobre algorísmia (més avançats):
• Alfred V. Aho, Jeffrey D. Ullman, John I. Hopcroft: Estructures de dades i algorismes. Addison Wesley, 1988. ISBN : 968-444-345-5
• Niklaus Wirth: Algorismes + estructures de dades= programes. Edicions delCastillo, 1980. ISBN: 84-219-0172-9
• Niklaus Wirth: Algorísmia i estructures de dades. Prentice Hall, 1987. ISBN: 968-880-113-5
• D.E. Knuth: L'art de programar ordinadors (3 Volums) . Editoria Reverté.ISBN : 84-291-2661-9
• Terrence W. Pratt, Marvin V. Zelkowitz : Llenguatges de programació. Disseny i implementació. Prentice Hall , 3a edicte. , 1997. ISBN: 970-17-0046-5
• G. Brassard, P. Bratley: Fonaments d'algorísmia . Prentice - Hall. ISBN : 84-89660 -00- X

Recursos didàctics. Material docent de l'assignatura
A l'aula Moodle de l'assignatura ( a l'Aula Global ) es penjarà el material docent de l'assignatura. En particular es penjaran: o Apunts o Enunciats per a les sessions de seminari o Enunciats per a les sessions de pràctiques o Exercicis d'autoavaluació