Augmentar lletres   Inici   Informació   Contactar   Mapa
Castellano   English

Programació I (P1)

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

Professors

Responsable:  Jordi Petit Silvestre (jpetit@lsi.upc.edu)
Salvador Roura Ferret (roura@lsi.upc.edu)
Altres:Albert Atserias Peri (atserias@lsi.upc.edu)
Amalia Duch Brown (duch@lsi.upc.edu)
Ana Edelmira Pasarella Sanchez (edelmira@lsi.upc.edu)
Christian Blum (cblum@lsi.upc.edu)
Edgar Gònzalez Pellicer (egonzalez@lsi.upc.edu)
Emma Rollón Rico (erollon@lsi.upc.edu)
Enrique Romero Merino (eromero@lsi.upc.edu)
Gabriel Alejandro Valiente Feruglio (valiente@lsi.upc.edu)
Joaquin Gabarró Vallés (gabarro@lsi.upc.edu)
Jordi Delgado Pin (jdelgado@lsi.upc.edu)
Juan Garcia-Villaraco Y Perez (joan.garcia-villaraco@upc.edu)
Leonor Frias Moya (lfrias@lsi.upc.edu)
M. Jose Blesa Aguilera (mjblesa@lsi.upc.edu)
Maria Josefina Sierra Santibañez (jsierra@lsi.upc.edu)
Omer Gimenez Llach (omer.gimenez@upc.edu)
Pilar Nieto Soler (pnieto@lsi.upc.edu)
Ramon Ferrer Cancho (ramon.ferrericancho@gmail.com)
Xavier Messeguer Peypoch (peypoch@lsi.upc.edu)

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ó

Hi ha diverses proves, totes davant d'ordinador i consistents a
resoldre un problema.

Durant el curs, i per potenciar l'avaluació continuada, es
realitzaran entre quatre i set controls (incloent el parcial) consistents
a resoldre un problema que avalua el seguiment del
temari presentat fins al moment. Es podrà exigir que els
estudiants lliurin uns pocs exercicis de la col·lecció per
poder-se presentar als controls.

C és la mitjana ponderada dels controls. Al principi de curs,
s'informarà del nombre i ponderació de cadascun dels controls.

En el periode d'exàmens finals, es realitzaran tres problemes
(F1, F2 i F3) que avaluen la totalitat del temari.

No presentar-se als exàmens finals implicarà la qualificació de NP.

Cada problema s'avalua independentment dels altres i rep una
nota entre 0 i 10 punts, segons els criteris que es donen més
avall sobre la correcció dels problemes. La nota final de
l'assignatura és

màx{ (C + F1 + F2 + F3) / 4 , (F1 + F2 + F3) / 3 }.

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.


CRITERIS DE CORRECCIÓ DE CADA PROBLEMA:

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.
Tant si el programa passa els jocs de proves privats com si no,
l'estudiant podrà reenviar vàries solucions per al mateix
problema. Si al final de l'examen no s'ha enviat cap programa
que superi tots els jocs de proves, la nota és 0.

Altrament, d'entre tots els programes que superin els jocs de
proves, els professors en corregiran manualment l'últim. 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), i sigui P el nombre de programes enviats
que no superen els jocs de proves. La nota del problema és

V + 5 - max{ P - 1, 0 }.

És a dir, es resta un punt sobre deu per cada solució enviada
que no passi els jocs de proves, si bé la primera solució
errònia no es penalitza. Lògicament, una nota negativa es
converteix en 0 (fet que afita amb 10 el màxim nombre
d'enviaments incorrectes).


Bibliografía bàsica

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

Bibliografía complementària

  • F. Xhafa, P-P. Vázquez, J. Marco, X. Molinero, Á. Martín Programación en CPP para ingenieros, Thomson, 2006.
  • X. Franch, J. Marco, X. Molinero, J. Petit, F. Xhafa Introducció a la Programació - Exercicis resolts, Edicions UPC, 2006.

Enllaços web

  1. Obrir nova finestra http://p1.lsi.upc.edu
    Pàgina web de l'assignatura


Capacitats prèvies

(-)



 
logo FIB © Facultat d'Informàtica de Barcelona - webmaster@fib.upc.edu - RSS RSS