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

Programació I (P1)

Crèdits Dept. Tipus Requisits
9.0 (7.2 ECTS) CS
  • Obligatòria per a l'EI
  • Obligatòria per a l'ETIG
  • Obligatòria per a l'ETIS
   

Professors

Responsable:  (-)
Altres:(-)

Objectius Generals

L'objectiu general de l'assignatura és que l'estudiant sigui capaç d'escriure
amb fluïdesa programes correctes i llegibles que resolguin problemes de
dificultat elemental.

Objectius Específics

Coneixements

  1. Sintaxi i semàntica de les expressions i de les instruccions bàsiques d'un llenguatge de programació imperatiu (C++). Tipus de dades elementals i estructurats. Funcions i accions.
  2. Disseny iteratiu i disseny recursiu.
  3. Esquemes fonamentals sobre seqüències i taules, algorismes clàssics.

Habilitats

  1. Davant d'un problema de dificultat elemental, trobar un algorisme
    elegant que el solucioni. Saber-lo codificar amb un subconjunt d'instruccions
    bàsiques del llenguatge imperatiu C++
  2. Utilitzar eines d'edició, compilació i execució per desenvolupar
    programes.
  3. Disposar de recursos per corregir els programes quan no funcionen.
  4. Escriure programes amb bon estil, amb una documentació rellevant, amb els
    comentaris precisos i amb les especificacions necessàries.

Competències

  1. Capacitat per al raonament crític i lògico-matemàtic
  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 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.

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ó
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 2,0 6,0 0 6,0 6,0 0 24,0
- Introducció a l'algorísmia i la programació.
- Conceptes: Problema computacional, entrada, sortida, especificació, algorisme, correctesa, programa, llenguatge de programació, editor, compilador, intèrpret, execució, joc de proves.
- Elements: Tipus, valors, literals, constants, variables, operadors i expressions. Assignació. Construcció seqüencial. Construccions condicionals. Construccions iteratives. Entrada/sortida bàsica. Sintaxi d'aquestes construccions en C++.
- Entorn de programació.

2. Procediments
T      P      L      Alt    L Ext. Est    A Ext. Total 
2,0 1,0 3,0 0 3,0 3,0 0 12,0
- Funcions, accions, crides, pas de paràmetres (d'entrada, de sortida i d'entrada sortida; paràmetres reals i formals; pas per valor i per referència).
- Àmbit de les variables.
- Descomposició funcional.
- Ús de llibreries de funcions bàsiques.

3. Recorreguts i cerques
T      P      L      Alt    L Ext. Est    A Ext. Total 
2,0 1,0 3,0 0 3,0 3,0 0 12,0
- Seqüències.
- Esquema de recorregut.
- Esquema de cerca.
- Esquemes híbrids.

4. Recursivitat
T      P      L      Alt    L Ext. Est    A Ext. Total 
2,0 1,0 3,0 0 3,0 3,0 0 12,0
Introducció al disseny d'algorismes recursius

5. Taules i tuples
T      P      L      Alt    L Ext. Est    A Ext. Total 
6,0 3,0 9,0 0 9,0 9,0 0 36,0
- Taules.
- Taules multidimensionals.
- Tuples.
- Estructuració i processament de dades amb taules i tuples.

6. Algorismes fonamentals
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 2,0 6,0 0 6,0 6,0 0 24,0
- Algorismes d'ordenació elementals (selecció, inserció i bombolla).
- Cerca dicotòmica.
- Fusió de taules.
- Ordenació per fusió.
- Nocions d'eficiència

7. Consolidació i estudi personal
T      P      L      Alt    L Ext. Est    A Ext. Total 
0 9,0 6,0 0 21,0 20,0 0 56,0


Total per tipus T      P      L      Alt    L Ext. Est    A Ext. Total 
20,0 19,0 36,0 0 51,0 50,0 0 176,0
Hores addicionals dedicades a l'avaluació 4,0
Total hores de treball per l'estudiant 180,0

Metodologia docent

El curs s'organitza en 13 setmanes de classes, a raó de 6 hores setmanals. Cada
setmana hi ha una sessió de 3 hores de teoria/problemes i una altra sessió
de 3 hores de laboratori amb preseència parcial del professor. Es pretén que l'estudiant treballi pel seu compte una extensa col·lecció de problemes.

- El professor de teoria/problemes intercala l'exposició de nou material
teòric amb exemples i problemes. Es combina tant la part magistral, en la qual
el professor exposa, explica i exemplifica els conceptes de l'assignatura, com
la interacció amb els alummnes sobre les diverses alternatives que apareguin
durant la resolució dels problemes. Durant les classes de consolidació,
es treballen molts problemes.

- A les primeres sessions de laboratori, el professor descriu l'entorn de
programació. A partir d'aquell moment, la seva feina fonamental és donar suport
a l'estudiant amb les dificultats que se li plantegin, així com ajudar-lo a
polir el seu estil de programació.

- S'espera que a les sessions de laboratori, i durant les hores d'estudi
personal, els estudiants provin de resoldre els problemes de la col·lecció, i
que enviïn les seves solucions a un jutge automàtic que en comprovarà el
funcionament amb jocs de proves exhaustius. Al principi del curs, si el programa
enviat és incorrecte, el jutge proporcionarà algun exemple concret d'entrada per
al qual falli. Més endavant, el jutge només indicarà que un programa és erroni,
i serà responsabilitat de l'estudiant trobar el motiu i corregir-lo.
Addicionalment, l'estudiant farà bé de mostrar regularment els seus programes
(funcionin o no) als professors, per tal que aquests n'avaluïn la qualitat.

Mètode d'avaluació

Al càlcul de la nota final de l'assignatura intervenen les notes següents (totes elles sobre 10).

NF = nota final de l'assignatura
NA = nota d'una prova de resolució de problemes nous
NL = nota de les proves de resolució de problemes de llistes tancades a laboratoris
NE = nota de l'examen final.

La nota NL es calcula com a mitjana ponderada de les notes de 3 proves consistents a resoldre un exercici de programació. La resolució es farà durant les classes de laboratori i es farà amb l'ús d'un avaluador automàtic que es descriurà més avall. Per a cada prova, l'exercici serà escollit d'una llista coneguda amb antelació per l'estudiant. Per presentar-se a cadascuna de les proves serà imprescindible haver enviat amb èxit a l'avaluador automàtic un nombre mínim (establert per a cada prova) de problemes de la llista; altrament, la nota de la prova serà No Presentat. Les tres proves tindran pesos 20%, 40% i 40% en el càlcul de la nota NL.

La nota NA s'obtindrà de la resolució d'un altre exercici de programació. Al igual que les proves de la nota NL, s'avaluarà mitjançant l'avaluador automàtic. A diferència d'elles, l'exercici a resoldre no serà necessàriament de cap llista publicada amb antelació (serà un problema nou), i es farà alhora per tots els grups de l'assignatura, fora d'hores de classe, en un interval de temps establert per la Facultat a l'efecte.

La nota NE provindrà d'un examen fet a final de curs, que es resoldrà en paper, sense ordinador ni avaluador automàtic.

La nota NF es calcula com:

NF = màxim( 40% NE + 20% NA + 40% NL, 70% NE ).

L'avaluació mitjançant l'avaluador automàtic funciona de la següent manera:

Un problema es defineix amb un enunciat i un o més jocs de proves públics. Resoldre un problema consisteix a escriure un programa correcte (segons els criteris comentats a continuació) que superi tots els jocs de proves, tant públics com privats. Quan un estudiant tingui un programa que consideri correcte, l'enviarà a un jutge automàtic que, en pocs segons, li retornarà un veredicte sobre el comportament del seu programa, que en particular indicarà de manera distinta si passa tots els jocs de proves públics i els privats. Si al final de l'examen no s'ha enviat cap programa que superi tots els jocs de proves públics, la nota és 0.

Altrament, els professors corregiran manualment l'últim programa enviat que superi tots els jocs de proves públics i privats. Si aquest no existeix, es corregirà l'últim que superi tots els jocs de proves públics. Si es detecta que l'estudiant s'ha saltat les regles bàsiques de programació fixades amb claredat durant el curs, o si el programa no compleix els requeriments de l'enunciat, o si l'algorisme usat per resoldre el problema és manifestament inadequat, la nota és 0.

Altrament, sigui V la valoració, entre 0 i 5, donada pels professors al programa corregit (en funció de la claredat, l'estil, etcètera). Es calcularà també una penalització P del problema per enviaments erronis de la següent manera: S'afegirà a P 1 punt per cada enviament al jutge que no superi els jocs de proves públics, i 0,3 punts per cada enviament que superi els jocs de proves públics però no els privats, quedant-ne exclosos fins a 3 enviaments (els tres amb penalització més gran, si n'hi ha d'ambdós pesos). La nota del problema és max(V+5-P,0) si el programa passa tots els jocs de proves públics i privats, i max(V+2,5-P,0) si no passa tots els jocs de proves privats.

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

  • J. Petit, S. Roura Col·leció de Problemes de P1, , .

Bibliografía complementària

  • Fatos Xhafa... [et al.] Programación en C++ para ingenieros, Thomson, 2006.
  • X. Franch ... [et al.] Introducció a la programació : problemes resolts, Edicions UPC, 2006.

Enllaços web

  1. https://p1.jutge.org/
    Pàgina web de l'assignatura


Capacitats prèvies

(-)


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