Programació I

Esteu aquí

Crèdits
7.5
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits, però té capacitats prèvies
Departament
CS
Mail
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 i la construcció estructurada de programes.

Professors

Responsable

  • Jose Carmona Vargas ( )
  • Lluis Padro Cirera ( )

Altres

  • Edelmira Pasarella Sanchez ( )
  • Emma Rollón Rico ( )
  • Enrique Romero Merino ( )
  • Gabriel Valiente Feruglio ( )
  • Gerard Canal Camprodon ( )
  • Glyn Morrill ( )
  • Jorge Castro Rabal ( )
  • Jose Miguel Rivero Almeida ( )
  • Lluis Vila Grabulosa ( )
  • Maria Angela Nebot Castells ( )
  • Nicolas Mylonakis Pascual ( )
  • Rosa Maria Jiménez Gómez ( )

Hores setmanals

Teoria
2
Problemes
0
Laboratori
3
Aprenentatge dirigit
0.5
Aprenentatge autònom
7

Competències

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.

Competències Transversals

Aprenentatge autònom

  • 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.
    • 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.

Objectius

  1. Comprendre el procés de construcció d'un programa i saber utilitzar les eines que es requereixen: consola, editor i compilador
    Related competences: G7.1, CT1.1B, CT1.1A,
  2. Conèixer la sintaxi i semàntica de les expressions i instruccions bàsiques d'un llenguatge de programació imperatiu (C++).
    Related competences: CT5.3,
  3. Tenir destresa en l'ús de funcions i accions en el desenvolupament de programes.
    Related competences: G7.1, CT4.1, CT5.4,
  4. Entendre els conceptes de funció, acció i pas de paràmetres
    Related competences: CT4.1,
  5. Conèixer en profunditat les taules i identificar aquells problemes en les que el seu ús és apropiat.
    Related competences: CT4.1, CT5.2, CT5.3,
  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.
    Related competences: CT4.1, CT4.2, CT5.2,
  7. Assimilar en profunditat els esquemes de recorregut i cerca
    Related competences: CT4.2, CT1.2B,
  8. Associar a un problema l'esquema de solució apropiat
    Related competences: CT4.1, CT5.3,
  9. Comprendre la recursivitat. Ser capaç de proposar solucions recursives a problemes simples.
    Related competences: CT4.1, CT4.2, CT5.3,
  10. Assimilar en profunditat l'algoritme de cerca binària i els algorismes d'ordenació d'inserció, selecció, mergesort
    i quicksort.
    Related competences: CT4.1, CT4.2, CT5.2,
  11. Conèixer en profunditat altres algoritmes fonamentals: Hörner, producte rapid, etc
    Related competences: CT4.1, CT1.2B, CT1.1A,
  12. Ser capaç d'escriure programes d'una pàgina que siguin llegibles, elegants i eficients.
    Related competences: G7.1, CT8.6, CT4.1, CT4.2, CT5.2, CT5.4, CT5.3, CT1.1B, CT1.2B, CT1.1A,

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

Activitat Acte avaluatiu


Desenvolupament del tema: "Principis bàsics de la programació"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre les activitats proposades en laboratori.
Objectius: 1 2
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Desenvolupament del tema: "La instrucció iterativa"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a aquest tema de la web www.jutge.org.
Objectius: 1 2
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Desenvolupament del tema: "Esquemes de recorregut i cerca"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a aquest tema de la web www.jutge.org.
Objectius: 2 7 8
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Desenvolupament del tema: "Accions i funcions".

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per a aquest tema de la web www.jutge.org.
Objectius: 2 4 3
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Desenvolupament del tema: "Recursivitat"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.
  • Aprenentatge dirigit: Control 1
Objectius: 4 3 9
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0.8h
Aprenentatge autònom
6h

Consolidació dels temes 1 a 5

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: 1 2 4 3 7 8 9
Continguts:
Teoria
4h
Problemes
0h
Laboratori
6h
Aprenentatge dirigit
0h
Aprenentatge autònom
12h

Desenvolupament del tema: "Taules"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.
  • Aprenentatge dirigit: Control 2
Objectius: 5 6 7 8 12
Continguts:
Teoria
4h
Problemes
0h
Laboratori
6h
Aprenentatge dirigit
0.9h
Aprenentatge autònom
12h

Desenvolupament del tema: "Tuples"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.
Objectius: 12
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Desenvolupament del tema: "Algorismes fonamentals I"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.
Objectius: 5 6 10 12
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Desenvolupament del tema: "Algorismes fonamentals II"

Entendre i assimilar els conceptes introduïts en teoria. Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.
Objectius: 6 11 12
Continguts:
Teoria
2h
Problemes
0h
Laboratori
3h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Consolidació

Resoldre els problemes seleccionats per aquest tema de la web www.jutge.org.
  • Aprenentatge dirigit: Control 3 + Parcial + Final
Objectius: 12
Continguts:
Teoria
6h
Problemes
0h
Laboratori
9h
Aprenentatge dirigit
5.8h
Aprenentatge autònom
33h

Control 1

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: 1 2
Setmana: 6 (Fora d'horari lectiu)
Tipus: examen de laboratori
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Control 2

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: 4 3 7
Setmana: 10 (Fora d'horari lectiu)
Tipus: examen de laboratori
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Control 3

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: 5 6 8 9
Setmana: 15 (Fora d'horari lectiu)
Tipus: examen de laboratori
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Examen final

Examen sobre ordinador. Avaluació global de l'assignatura, amb èmfasi en els darrers temes
Objectius: 10 11 12
Setmana: 15 (Fora d'horari lectiu)
Tipus: examen final
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

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

Les sessions de laboratori tenen dues parts diferenciades:
Durant la primera hora, hi ha una sessió guiada pel professor, on s'expliquen conceptes pràctics de l'entorn de programació, o bé es fan exercicis de forma col·laborativa, o bé s'analitza codi per trobar-hi errors, etc.
Les restants dues hores de la sessió de laboratori, els estudiants les dediquen a resoldre problemes al jutge, amb l'assistència del professor si és necessari.

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 n'avaluïn la qualitat.

Mètode d'avaluació

En aquesta assignatura es realitzen tres controls parcials C1, C2 i C3.

Amb les tres notes dels controls s'obté la nota d'avaluació contínua AC expressada a la fórmula [1].
[1] AC = 0.2*C1 + 0.3*C2 + 0.5*C3

Els estudiants amb AC>=5 es consideren aprovats per curs, amb nota final AC.

Els estudiants amb AC<5 s'hauràn de presentar a l'examen final (F). La seva nota de l'assignatura NF s'obtindrà per la fórmula [2]
[2] NF = max(F, (AC+F)/2)

Els estudiants amb AC>=5 podran presentar-se al final només si demanen explícitament el canvi a la fórmula d'avaluació [2]. El canvi serà irreversible.

Per poder presentar-se als controls caldrà haver resolt un mínim de problemes de les llistes vinculades a cada control, segons el procediment i els terminis indicats a la web de l'assignatura.

La correcció dels controls combina una nota automàtica atorgada pel Jutge i una nota manual. El pes global de les notes automàtiques o de les notes manuals al total de l'assignatura, no serà inferior al 30%.

La correcció de l'examen final serà íntegrament manual.

REAVALUACIÓ
La reavaluació consisteix en un curs intensiu de 12 hores presencials amb la corresponent avaluació, un cop finalitzats els exàmens finals i abans de l'inici del quadrimestre següent. Es calcula que la reavaluació requereix unes 50 hores de dedicació per part de l'estudiant entre classes presencials, hores d'estudi personal i avaluació.

Requisits mínims per optar a la reavaluació:
- Estar matriculat de l'assignatura
- Haver obtingut una nota final entre 3.5 i 4.9
- Haver-se presentat a tots els examens (controls i final) durant el quadrimestre.

Requisits per a ser re-avaluat:
- Assistir a totes les classes presencials del curs intensiu.
- Fer els exercicis o activitats que demani el professorat del curs intensiu.

Avaluació:
El resultat de l'avaluació del curs intensiu serà "apte" o "no apte". La nota definitiva de l'assignatura serà:
Nota definitiva = 5, si la nota de l'intensiu és "apte";
Nota definitiva = NF, si la nota de l'intensiu és "no apte";
(on NF és la nota obtinguda durant el quadrimestre).

COMPETÈNCIA TRANSVERSAL

L'avaluació de la competència transversal "Aprenentatge Autònom" es basa en la recopilació de 2 dades relacionades amb el rendiment de l'estudiant respecte a les llistes de problemes a entregar durant el quatrimestre:

Esforç d'autoaprenentatge (E):
Mitja del ratio problemes_entregats/problemes_minims_requerits per cada control del curs. Es calcularà com: E = (E1+E2+E3)/3. La mesura se saturarà a 2. Aquesta mesura pretén incentivar als estudiants a fer més exercicis dels mínims requerits per presentar-se als controls.

Planificació de l'autoaprenentatge (P):
Mesura de la distribució temporal de les entregues dels problemes presentats de les diferents llistes. Es calcularà com P = (P1+P2+...+Pn)/n
On:
Pi = -Xi*log(Xi) - (1-Xi)*log(1-Xi), si Xi<0.5
Pi = 1, si Xi>=0.5
essent Xi el percentatge de problemes presentats la primera meitat del període d'entrega de la llista i (per tant 1-Xi és el percentatge de problemes presentats la segona meitat del període). Un valor baix de P indica tendència a deixar la feina pel final del període de treball esperat. Un valor alt indica una distribució més uniforme de la feina, o que s'avança la feina al principi del període.
Aquesta mesura pretén incentivar als estudiants a organitzar-se la feina i distribuir els exercicis en el temps, al ritme marcat per les sessions de teoria i laboratori.

La nota de la competència transversal serà:
NP si E <= 0.5 (no hi ha prous exercicis presentats per avaluar la competència)
D si 0.5 < E < 1 (no s'ha arribat al mínim requerit, indicant poc esforç d'autoaprenentatge)
C si E>=1 i P*E <= 0.4
B si E>=1 i 0.4 < P*E <= 1
A si E>=1 i P*E > 1

Bibliografia

Bàsica:

Complementaria:

Web links

  • 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. http://www.lsi.upc.edu/~pro1/
  • El jutge o avaluador automàtic de programes. El juez o evaluador automático de programas. The judge or automatic program evaluator. https://www.jutge.org
  • 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. http://www-cs-faculty.stanford.edu/~eroberts/books/ArtAndScienceOfJava/
  • 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. http://minidosis.org/
  • 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. http://www.cprogramming.com/
  • 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. http://www.uow.edu.au/~nabg/ABC/ABC.html

Capacitats prèvies

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