Saltar al contingut Saltar a navegacio
Mapa
  • Inici
  • Informació
  • Contacte
  • Mapa

Programació 1 ( PRO1 )

Crèdits ECTS Departament Tipus Requisits Idiomes Impartició
7.5 LSI
  • Obligatòria
   
  • Català   
  • Castellà   
  • Anglès   
Centre on s'imparteix l'assignatura: Facultat d'Informàtica de Barcelona (FIB) - Universitat Politècnica de Catalunya - BarcelonaTECH

Descripció

En l'assignatura s'adquireixen els conceptes i tècniques bàsiques per a la construcció de programes en llenguatges imperatius. En acabar el curs, el/la estudiant:

1. Coneixerà els constituents bàsics de llenguatges imperatius: variables, tipus, expressions, condicionals i iteracions.

2. Podrà usar i dissenyar procediments (accions i funcions) per encapsular solucions de subproblemes.

3. Podrà usar la metodologia del disseny descendent per donar solucions a problemes de dificultat mitjana.

4. Podrà usar vectors per guardar informació estructurada i com a base del disseny d'estructures de dades.

5. Coneixerà i podrà reproduir i usar adequadament alguns algorismes fonamentals, com ara la cerca dicotòmica o els algorismes elementals d'ordenació de vectors.

Actualment el llenguatge de programació emprat com a base és un subconjunt de C++, encara que l'èmfasi no és en l'aprenentatge dels detalls del llenguatge sinó en la resolució de problemes
algorísmics y la construcció estructurada de programes.

Professors

Responsable:   Jorge Castro Rabal (castro@lsi.upc.edu)
Ricard Gavaldà Mestre (gavalda@lsi.upc.edu)
Altres: Albert Oliveras Llunell (oliveras@lsi.upc.edu)
Alberto Rubio Gimeno (albert@lsi.upc.edu)
Ana Edelmira Pasarella Sanchez (edelmira@lsi.upc.edu)
Christian Blum (cblum@lsi.upc.edu)
Emma Rollón Rico (erollon@lsi.upc.edu)
Fernando Orejas Valdés (orejas@lsi.upc.edu)
Gabriel Alejandro Valiente Feruglio (valiente@lsi.upc.edu)
Glyn Verden Morrill (morrill@lsi.upc.edu)
Jordi Cortadella Fortuny (jordi.cortadella@upc.edu)
Jose Miguel Rivero Almeida (rivero@lsi.upc.edu)
Lluis Vila Grabulosa (vila@lsi.upc.edu)
Luis Marquez Villodre (lluism@lsi.upc.edu)
M. Angela Nebot Castells (angela@lsi.upc.edu)
M. Jose Blesa Aguilera (mjblesa@lsi.upc.edu)
M. Pilar Brigida Nivela Alos (nivela@lsi.upc.edu)
Maria Josefina Sierra Santibañez (jsierra@lsi.upc.edu)
Marta Arias Vicente (marias@lsi.upc.edu)
Nicolas Eduardo Mylonakis Pascual (nicos@lsi.upc.edu)
Silvia Inés Clérici Martínez (silvia@lsi.upc.edu)
Dedicació en hores setmanals T : 2.0 P : 0.0 L : 3.0 AA : 7.0 AD : 0.5

Competències Genèriques

Competències Transversals

  • APRENENTATGE AUTÒNOM

  • G7.1 - Aprenentatge dirigit: dur a terme les tasques assignades en el temps previst, treballant amb les fonts d'informació indicades d'acord amb les pautes marcades pel professor o pel tutor. Identificar el progrés i el grau d'acompliment dels objectius d'aprenentatge. Identificar els punts forts i els punts febles.
  • G7 - Detectar carències en el coneixement propi i superar-les mitjançant la reflexió crítica i l'elecció de la millor actuació per ampliar aquest coneixement. Capacitat per a l'aprenentatge de nous mètodes i tecnologies, i versatilitat per a adaptar-se a noves situacions.


Competències Tècniques

  • COMPETÈNCIES TÈCNIQUES COMUNES

  • CT1 - Demostrar coneixement i comprensió de fets essencials, conceptes, principis i teories relatives a la informàtica i a les seves disciplines de referència.
  • CT1.1A - Demostrar coneixement i comprensió dels conceptes fonamentals de la programació i de l'estructura bàsica d'un computador. CEFB4. Coneixement dels fonaments de l'ús i de la programació dels computadors, dels sistemes operatius, de les bases de dades i, en general, dels programes informàtics amb aplicació a l'enginyeria.
  • CT1.1B - Demostrar coneixement i comprensió dels conceptes fonamentals de la programació i de l'estructura bàsica d'un computador. CEFB5. Coneixement de l'estructura, funcionament i interconnexió dels sistemes informàtics, i dels fonaments de la seva programació.
  • CT1.2B - Interpretar, seleccionar i valorar conceptes, teories, usos i desenvolupaments tecnològics relacionats amb la informàtica i la seva aplicació a partir dels fonaments matemàtics, estadístics i físics necessaris. CEFB2. Capacitat per a comprendre i dominar els fonaments físics i tecnològics de la informàtica: electromagnetisme, ones, teoria de circuits, electrònica i fotònica i la seva aplicació per a la resolució de problemes propis de l'enginyeria.
  • CT4 - Demostrar coneixement i capacitat d'aplicació dels procediments algorísmics bàsics de les tecnologies informàtiques per a dissenyar solucions a problemes, analitzant la idoneïtat i la complexitat dels algorismes
  • CT4.1 - Identificar les solucions algorísmiques més adequades per a resoldre problemes de dificultat mitjana.
  • CT4.2 - Raonar sobre la correcció i l'eficiència d'una solució algorísmica.
  • CT5 - Analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.
  • CT5.2 - Conèixer, dissenyar i utilitzar de forma eficient els tipus i les estructures de dades més adients per a la resolució d'un problema.
  • CT5.3 - Dissenyar, escriure, provar, depurar, documentar i mantenir codi en un llenguatge d'alt nivell per a resoldre problemes de programació aplicant esquemes algorísmics i utilitzant estructures de dades.
  • CT5.4 - Dissenyar l'arquitectura dels programes utilitzant tècniques d'orientació a objectes, de modularització i d'especificació i implementació de tipus abstractes de dades.
  • CT8 - Planificar, concebre, desplegar i dirigir projectes, serveis i sistemes informàtics en tots els àmbits, liderar-ne la posada en marxa, la millora contínua i valorar-ne l'impacte econòmic i social.
  • CT8.6 - Demostrar comprensió de la importància de la negociació, dels hàbits de treball efectius, del lideratge i de les habilitats de comunicació en tots els entorns de desenvolupament de software.

Objectius Específics

  1. Comprendre el procés de construcció d'un programa i saber utilitzar les eines que es requereixen: consola, editor i compilador

    Competències relacionades
  2. Conèixer la sintaxi i semàntica de les expressions i instruccions bàsiques d'un llenguatge de programació imperatiu (C++).

    Competències relacionades
  3. Tenir destresa en l'ús de funcions i accions en el desenvolupament de programes.

    Competències relacionades
  4. Entendre els conceptes de funció, acció i pas de paràmetres

    Competències relacionades
  5. Conèixer en profunditat les taules i identificar aquells problemes en les que el seu ús és apropiat.

    Competències relacionades
  6. Ser capaç de confrontar solucions respecte a l'ús que en fan de els recursos de temps i memòria i escollir la més apropiada en casos senzills.

    Competències relacionades
  7. Assimilar en profunditat els esquemes de recorregut i cerca

    Competències relacionades
  8. Associar a un problema l'esquema de solució apropiat

    Competències relacionades
  9. Comprendre la recursivitat. Ser capaç de proposar solucions recursives a problemes simples.

    Competències relacionades
  10. Assimilar en profunditat l'algoritme de cerca binària i els algorismes d'ordenació d'inserció, selecció, mergesort
    i quicksort.


    Competències relacionades
  11. Conèixer en profunditat altres algoritmes fonamentals: Hörner, producte rapid, etc

    Competències relacionades
  12. Ser capaç d'escriure programes d'una pàgina que siguin llegibles, elegants i eficients.

    Competències relacionades

Continguts

1. Introducció als principis bàsics de la programació

Introducció de conceptes fonamentals: Algorisme, programa, variable, expressió, tipus de dades,etc. Instruccions bàsiques c++.

2. La instrucció iterativa

Instruccions for i while. Exemples

3. Esquemes de recorregut i cerca

Seqüències. Recorreguts i cerques en seqüències

4. Accions i Funcions

Accions i Funcions. Pas de paràmetres. Àmbits de visibilitat.

5. Recursivitat

Introducció al disseny recursiu

6. Taules

Taules unidimensionals. Taules multidimensionals. Recorreguts i cerques en taules.

7. Tuples

Programació amb tuples

8. Algorismes fonamentals I

Algorismes de ordenació. Cerca dicotòmica.

9. Algorismes fonamentals II

Altres algorismes importants: Hörner, producte ràpid, etc.

Activitats

Llegenda

ActivitatActivitat de tipus Acte avaluatiu T P L AA AD
Activitat Activitat de tipus Acte avaluatiu Hores de Teoria Hores de Problemes Hores de Laboratori Hores d'Aprenentatge Autònom Hores d'Aprenentatge Dirigit

Desenvolupament del tema: "Principis bàsics de la programació" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre les activitats proposades en laboratori.

Objectius:

Continguts
  • 1. Introducció als principis bàsics de la programació
Desenvolupament del tema: "La instrucció iterativa" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 2. La instrucció iterativa
Desenvolupament del tema: "Esquemes de recorregut i cerca" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 3. Esquemes de recorregut i cerca
Desenvolupament del tema: "Accions i funcions". T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 4. Accions i Funcions
Desenvolupament del tema: "Recursivitat" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.8 11.8

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 5. Recursivitat

Descripció tipus d'hores
AD    Control 1
Consolidació dels temes 1 a 5 T      P      L      AA    AD    Total 
4.0 0.0 6.0 12.0 0.0 22.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a la consolidació de la primera part del curs de la web www.jutge.org.

Objectius:

Continguts
  • 1. Introducció als principis bàsics de la programació
  • 2. La instrucció iterativa
  • 3. Esquemes de recorregut i cerca
  • 4. Accions i Funcions
  • 5. Recursivitat
Desenvolupament del tema: "Taules" T      P      L      AA    AD    Total 
4.0 0.0 6.0 12.0 0.9 22.9

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 6. Taules

Descripció tipus d'hores
AD    Control 2
Desenvolupament del tema: "Tuples" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 7. Tuples
Desenvolupament del tema: "Algorismens fonamentals I" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 8. Algorismes fonamentals I
Desenvolupament del tema: "Algorismes fonamentals II" T      P      L      AA    AD    Total 
2.0 0.0 3.0 6.0 0.0 11.0

Alumne: Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 9. Algorismes fonamentals II
Consolidació T      P      L      AA    AD    Total 
6.0 0.0 9.0 33.0 5.8 53.8

Alumne: Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.

Objectius:

Continguts
  • 1. Introducció als principis bàsics de la programació
  • 2. La instrucció iterativa
  • 3. Esquemes de recorregut i cerca
  • 4. Accions i Funcions
  • 5. Recursivitat
  • 6. Taules
  • 7. Tuples
  • 8. Algorismes fonamentals I
  • 9. Algorismes fonamentals II

Descripció tipus d'hores
AD    Control 3 + Parcial + Final
Control 1 T      P      L      AA    AD    Total 
- - - 0.0 0.0 0.0

S'ha de resoldre un exercici de programació usant el jutge. Per presentar-se a aquest control es podrà exigir la resolució prèvia, amb èxit i individualment, d'un nombre mínim d'exercicis d'una llista. Objectius avaluats: 1 i 2.

Setmana 5 (Fora l'horari de classe)
Tipus Examen: Control de laboratori

Objectius:
Control 2 T      P      L      AA    AD    Total 
- - - 0.0 0.0 0.0

S'ha de resoldre un exercici de programació usant el jutge. Per presentar-se a aquest control es podrà exigir la resolució prèvia, amb èxit i individualment, d'un nombre mínim d'exercicis d'una llista. Objectius avaluats: 3, 4 i 7.

Setmana 9 (Fora l'horari de classe)
Tipus Examen: Control de laboratori

Objectius:
Control 3 T      P      L      AA    AD    Total 
- - - 0.0 0.0 0.0

S'ha de resoldre usant el jutge un exercici de programació usant el jutge. Objectius avaluats: 5 i 9.

Setmana 13 (Fora l'horari de classe)
Tipus Examen: Control de teoria

Objectius:
Control 4 T      P      L      AA    AD    Total 
- - 0.0 0.0 - 0.0

S'ha de resoldre un exercici de programació usant el jutge. Per presentar-se a aquest control es podrà exigir la resolució prèvia, amb èxit i individualment, d'un nombre mínim d'exercicis d'una llista. Objectius avaluats 6, 8 i 9.

Setmana 14 (Dins l'horari de classe)
Tipus Examen: Control de laboratori

Objectius:
Examen escrit de tota l'assignatura T      P      L      AA    AD    Total 
- - - 0.0 0.0 0.0

Examen tradicional escrit Objectius avaluats: 10, 11 i 12.

Setmana 15-18 (Fora l'horari de classe)
Tipus Examen: Examen final

Objectius:
Total per tipus T      P      L      AA    AD    Total 
30.0 0.0 45.0 105.0 7.5 187.5

Metodologia docent

En les sessions de teoria el professor 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 alumnes sobre les diverses alternatives que apareguin
durant la resolució de casos pràctics

En les primeres sessions de laboratori, el professor descriu l'entorn de programació. A partir d'aquí, el seu treball fonamental és donar suport a l'estudiant amb les dificultats que se li plantegen, així com ajudar a polir el seu estil de programació. Es pretén que els estudiants prenguin la iniciativa en la resolució de problemes, avaluïn les seves solucions i aprenguin dels seus errors.

S'espera que en les sessions de laboratori, i durant les hores d'estudi
personal, els estudiants intentin resoldre problemes d'una col lecció, i que enviïn les seves solucions a un jutge automàtic que comprovarà el funcionament amb jocs de proves exhaustius.
Addicionalment, s'aconsella l'estudiant mostrar regularment els seus programes
(funcionin o no) als professors, per tal que aquests avaluïn la qualitat.



Mètode d'avaluació

Tipus d'avaluació

Assignatura que s'avalua en període d'examens

La nota d'un estudiant s'obté combinant el resultat de cinc proves i tenint en compte el nombre de problemes que ha resolt amb èxit durant el curs.

En quatre d'aquestes proves (anomenades controls c1, c2, c3 i c4) s'han de resoldre un o més exercicis de programació i s'utilitza un avaluador automàtic o jutge, que aplica als programes enviats a una sèrie de jocs de proves.

Els controls c1, c2 i c3 tenen associades llistes de problemes que es proposaran per a la seva resolució a les sessions de laboratori de les setmanes precedents. Per poder presentar-se a un d'aquests controls caldrà haver resolt, a veredicte del jutge, un mínim d'un 70% dels problemes, dins dels terminis indicats. Per al control c4 no hi haurà cap llista de problemes previs associada. La cinquena prova és un examen final escrit, que dóna una nota f.

Addicionalment, es calcularà una nota z com 0.5*(nverds/4)*max(0,prob - 70% totalprob)/(30%
totalprob), on nverds és el nombre dels controls c1, c2, c3, c4 que han superat amb èxit els jocs de proves del jutge, prob és el total de problemes resolts de les llistes associades a c1, c2, c3, i totalprob és el total de problemes que composaven aquestes llistes.

Si un estudiant no s'ha presentat al control 4 ni a l'examen final, la seva qualificació serà No Presentat (NP). Altrament, la qualificació final d'un estudiant és el màxim entre:

- min(7% nota c1 + 14% nota c2 + 14% nota c3 + 25% * nota c4 + 40% nota f + nota z, 10)
- 0,7 * nota f

La qualificació de la competència genèrica "Aprenentatge Autònom" depèn de la proporció p dels exercicis de les llistes públiques resolts satisfactòriament i de les qualificacions c1, c2 i c3 dels controls amb aquestes llistes. La correspondència és la següent:

- Es defineix q com ((c1+c2+c3)/30 * p)^0.5
- Si q > = 9 / 10: A
- Si q > = 7 / 10 i q < 9 / 10: B
- Si q > = 5 / 10 i q < 7 / 10: C
- Si q < 5 / 10: D

Pes de les competències transversals en l'avaluació de la part específica de l'assignatura

  • 0.0 % - Aprenentatge dirigit: dur a terme les tasques assignades en el temps previst, treballant amb les fonts d'informació indicades d'acord amb les pautes marcades pel professor o pel tutor. Identificar el progrés i el grau d'acompliment dels objectius d'aprenentatge. Identificar els punts forts i els punts febles.

Bibliografía bàsica

Bibliografía complementària

Enllaços web

  1. Obrir nova finestra http://www.lsi.upc.edu/~pro1/
    Pàgina de la asignatura, on es troben apunts, normes de programació, exàmens de cursos passats i altre material docent.
    Página de la asignatura, donde se encuentran apuntes, normas de programación, exámenes de cursos pasados y otro material docent.
    Course homepage, with notes, programming style rules, past edition exams, and other teaching material.
  2. Obrir nova finestra https://www.jutge.org
    El jutge o avaluador automàtic de programes.
    El juez o evaluador automático de programas.
    The judge or automatic program evaluator.
  3. Obrir nova finestra http://www-cs-faculty.stanford.edu/~eroberts/books/ArtAndScienceOfJava/
    Curs de programació impartit a la Stanford University. Encara que el llenguatge de base és Java i no C++, molts conceptes són similars. Programació 1 cobreix, aproximadament, els temes 1 a 5, 8, part de l'11, 12 i part del 14.
    Curso de programación impartido en la Stanford University. Aunque el lenguaje de base es Java y no C++, muchos conceptos son similares. Programación 1 cubre, aproximadamente, los temas 1 a 5, 8, parte del 11, 12 y parte del 14.
    Programming course taught at Stanford University. Although the base language is Java and not C++, many concepts are similar. Programming 1 covers, approximately, topics 1 to 5, 8, part of 11, 12, and part of 14.
  4. Obrir nova finestra http://minidosis.org/
    Col·lecció de videos (en castellà) construits per a una altra assignatura de programació pel professor Pau Fernández, del departament. Encara que ni l'estil ni el contingut s'ajusten del tot als d'aquesta assignatura, poden ser un complement útil. El temari de Programació 1 és aproximadament els temes 1 a 13.
    Colección de videos construidos para otra asignatura de programación por el profesor Pau Fernández, del departamento. Aunque ni el estilo ni el contenido se ajustan del todo a los de esta asignatura, pueden ser un complemento útil. El temario de Programación 1 es aproximadamente los temas 1 a 13.
    Video collection (in Spanish) built for another programming course by Pau Fernández, also instructor at our department. Although neither the style nor the contents is exactly that of Progrmaming 1, it may be a useful complement. The topics in Programming 1 are those in "temas" 1 to 13.
  5. Obrir nova finestra http://www.cprogramming.com/
    Referència molt completa dels llenguatges C i C++.
    Referencia muy completa de los lenguajes C y C++.
    Very complete reference for the C and C++ languages.
  6. Obrir nova finestra http://www.uow.edu.au/~nabg/ABC/ABC.html
    Una introducció a C++. A diferència de l'assignatura, l'èmfasi és en el llenguatge i menys en els conceptes algorísmics.
    Una introducción a C++. A diferencia de la asignatura, el énfasis es en el lenguaje y menos en los conceptos algorítmicos.
    An introduction to C++. Unlike Programming 1, the emphasis is on the lantuage and less on algorithmic concepts.

Capacitats prèvies

Les definides en el batxillerat científic-tècnic o equivalents.

Compartir

 
logo FIB © Facultat d'Informàtica de Barcelona - Contacte - RSS