Logo

Programació 2

Codi: 107890
Crèdits: 6
2026/2027
Titulació Tipus Curs
Enginyeria Informàtica FB 1

Professor/a de contacte

Nom :
Jorge Bernal Del Nozal
Correu electrònic :
jorge.bernal@uab.cat

Equip docent

Mireia Bellot Garcia
Yael Tudela Barroso
Antonio Lozano Bagen
Miguel Hernández Cabronero
Marc Ortega Gil
Miguel Carpio Miranda

Idiomes dels grups

Podeu consultar aquesta informació al final del document.

Prerequisits

L'assignatura no té cap prerequisit oficial. De totes formes, s'assumeix que l'estudiant ha cursat l'assignatura prèvia de Programació I i, per tant, està familiaritzat amb les estructures bàsiques de la programació.

Objectius

Aquesta assignatura forma part de la matèria 3 (Informàtica) del Grau d’Enginyeria Informàtica i s'ha de veure com la continuació lògica de Programació I. L'objectiu bàsic és aprofundir en les nocions bàsiques de la programació imperativa introduïdes a Programació I i introduir els principis de la programació orientada a objectes. D'aquesta forma, els objectius formatius que es proposen per a l'assignatura són els següents:

  • Entendre el cicle de vida del desenvolupament software: analitzar el problema (entendre el que se'ns demana), disseny (proposar una solució al problema), implementació (codificació en un llenguatge de programació de la solució escollida), prova (realització d'un test de manera sistemàtica per assegurar la correctesa de la solució implementada).
  • Entendre el concepte d'algorisme com a eina de resolució de problemes amb l'ordinador i aprendre els conceptes fonamentals de l'algorísmica.
  • Comprendre les principals estructures de la programació imperativa i utilitzar-les correctament per resoldre problemes algorísmics de certa complexitat.
  • Conèixer les diferents estructures per representar informació dins dels algorismes, tant els tipus de dades estàtics (taules, registres i cadenes de caràcters) com els tipus de dades dinàmics (piles, cues, llistes), per poder utilitzar l'estructura de dades més adient per representar la informació associada un problema algorísmic.
  • Entendre i aplicar correctament els principis bàsics de la programació orientada a objectes: concepte de classe i encapsulament de dades.
  • Dotar l'alumne de la capacitat de disseny d'algorismes per a la resolució de problemes complexos, introduint de manera progressiva i sistemàtica una metodologia rigorosa i estructurada de programació, basada fonamentalment en la tècnica del disseny descendent d'algorismes.
  • Programar en un llenguatge de programació real i conèixer les diferents fases de desenvolupament d'un programa: escriptura, compilació i muntatge i execució i prova.
  • Desenvolupar els programes seguint unes normes d'estil tendents a aconseguir programes de qualitat. Dins d'aquestes normes d'estil s'engloben aquelles que faciliten la comprensió del codi, com poden ser l'ús de comentaris, la indentació del codi, la utilització de noms adequats per variables i funcions, etc.
  • Ser capaç de fer un exercici d’abstracció per poder traslladar els conceptes teòrics de la assignatura, especialment els relatius a la programació orientada a objectes, a diferents llenguatges de programació, com poden ser C++ o Python

Resultats d'aprenentatge

  • CM04 (Validar les solucions proposades a problemes de l’àmbit de la informàtica en funció dels seus requisits i atenent les condicions establertes.) Validar les solucions proposades a problemes de l’àmbit de la informàtica en funció dels seus requisits i atenent les condicions establertes.
  • KM06 (Identificar els conceptes bàsics de la programació estructurada, modular i orientada a objectes, així com les eines i els entorns de desenvolupament per a la creació de programari de qualitat.) Identificar els conceptes bàsics de la programació estructurada, modular i orientada a objectes, així com les eines i els entorns de desenvolupament per a la creació de programari de qualitat.
  • KM07 (Identificar els tipus de dades simples i les estructures de dades complexes dels llenguatges de programació d’alt nivell, així com el seu emmagatzematge en memòria.) Identificar els tipus de dades simples i les estructures de dades complexes dels llenguatges de programació d’alt nivell, així com el seu emmagatzematge en memòria.
  • SM09 (Analitzar les necessitats de programació d’un sistema informàtic des del punt de vista de la necessitat del client.) Analitzar les necessitats de programació d’un sistema informàtic des del punt de vista de la necessitat del client.
  • SM10 (Fer servir eines per a l’anàlisi, el disseny, la codificació i la depuració de programes.) Fer servir eines per a l’anàlisi, el disseny, la codificació i la depuració de programes.
  • SM11 (Desenvolupar programari de complexitat petita o mitjana per resoldre problemes utilitzant programació estructurada i orientada a objectes.) Desenvolupar programari de complexitat petita o mitjana per resoldre problemes utilitzant programació estructurada i orientada a objectes.
  • SM12 (Demostrar habilitats per treballar cooperativament en el desenvolupament d’aplicacions informàtiques.) Demostrar habilitats per treballar cooperativament en el desenvolupament d’aplicacions informàtiques.

Continguts

Tema 0: Introducció. Repàs d'eines de desenvolupament (IDE, Git)


Tema 1: Introducció a la programació orientada a objectes


  • Introducció al concepte de classe. Mètodes i atributs. Part privada i pública. Constructors i destructors.
  • Encapsulament de dades.
  • Composició de classes. Herència.
  • Persistència i serialització d'objectes. Fitxers.
  • Complexitat Computacional.


Tema 2: Estructures de dades dinàmiques


  • Concepte d'apuntador. Operacions amb apuntadors.
  • Objectes dinàmics. Arrays dinàmics
  • Representació i implementació d'estructures de dades dinàmiques: llistes, piles i cues.


Tema 3: Standard Template Library


  • Introducció al concepte de Template
  • Utilització d'estructures de dades dinàmiques amb la llibreria STL (vector, llista, cua, pila)


Tema 4: Introducció a Python


  • Sintaxis bàsica. Estructures condicionals, iteratives, funcions.
  • Orientació a objectes.
  • Serialització d’objectes. Fitxers.
  • Estructures de dades (dictionaris, sets, llistes)


Activitats formatives i Metodologia

Títol Hores ECTS Resultats d'aprenentatge
Seguiment de la resolució del projecte de programació 1 0,04 CM04, SM09, SM10, SM11
Estudi individual per preparar proves d'avaluació 11 0,44 KM06, KM07, SM09, SM11
Resolució de problemes 36 1,44 CM04, KM06, KM07, SM10, SM11
Realització del projecte de programació 48 1,92 CM04, KM06, KM07, SM09, SM10, SM11, SM12
Sessions de teoria i exercicis 50 2 CM04, KM06, KM07, SM09, SM10, SM11

La metodologia docent de l'assignatura parteix del principi que “programar és l'única manera d'aprendre a programar” i, per tant, es centrarà principalment en el treball pràctic de l'estudiant. Les sessions presencials s'organitzaran per introduir els continguts teòrics de l'assignatura des d'una perspectiva molt pràctica, a partir d'exemples, exercicis i problemes de programació que s'hauran de resoldre a classe directament amb l'ordinador. Un dels objectius de l'assignatura és separar els conceptes teòrics (com la definició d'una classe o el tractament de fitxers) de la seva implementació en un llenguatge de programació específic, tot i que el llenguatge vehicular de l'assignatura serà C++.

A més de l'explicació dels conceptes teòrics i la resolució de petits problemes a mode d'exemple durant les classes, els estudiants hauran de realitzar, en grups de dos, un projecte de programació que es desenvoluparà de forma autònoma durant tot el curs, fora de les sessions presencials. Aquest projecte permetrà abordar un problema de programació amb una certa complexitat, integrant la majoria dels conceptes explicats durant el curs. Al llarg del curs, es poden dedicar algunes sessions presencials al control, seguiment i avaluació del treball realitzat.

Finalment, també es proposarà un conjunt d'exercicis i activitats complementàries (com ara qüestionaris) que s'hauran de resoldre de forma individual al llarg del curs. Tots els exercicis que formen part de l'avaluació es faran durant les sessions de classe, amb l'objectiu que el professor o professora acompanyi en el procés d'aprenentatge mentre aquest es realitzi a l'aula. Així mateix, es proposaran exercicis addicionals perquè els estudiants puguin practicar a casa, sense que tinguin pes en la nota. Això és degut a la proliferació de l'ús de la IA en l'elaboració d'aquests exercicis per part dels estudiants, fet que els fa confiar-se de cara a haver assimilat uns coneixements que no han adquirit de manera efectiva. Per tant, aquest any es donarà tot el pes a activitats on el professor pugui assegurar-se que l'estudiant ha realitzat la tasca que té assignada.

En totes les activitats del curs (sessions presencials, problemes i pràctiques) s'utilitzarà principalment el llenguatge de programació C++, tot i que també s'explicarà de forma complementària com codificar els conceptes més importants utilitzant Python.

Pel que fa a la presencialitat, l'assignatura no distingirà entre sessions de teoria, problemes i pràctiques. Les sessions presencials s'organitzaran en quatre hores setmanals en grups d'uns 40 estudiants. Durant aquestes sessions es treballaran els conceptes detallats en el temari de l'assignatura. En alguns casos, es posaran a disposició de l'estudiant vídeos explicatius que haurà de visualitzar abans de la classe. Les sessions tindran un enfocament molt pràctic, amb exemples i exercicis que es plantejaran per facilitar la comprensió i l'aprenentatge de l'esmentats conceptes. Aquests exercicis es realitzaran i es discutiran durant la sessió, i serviran per introduir els continguts de l'assignatura i veure'n l'aplicació pràctica. Es recomana que l'estudiant porti el seu propi ordinador portàtil a classe, si en disposa d'un, per poder realitzar els exercicis proposats.

És important tenir en compte que el temari té una continuïtat lògica al llarg del curs, per la qual cosa per poder seguir correctament una classe és necessari haver assimilat el que s'ha explicat en les sessions anteriors.

La gestió de la docència de l'assignatura es realitzarà a través del Campus Virtual de la UAB, que servirà per consultar els materials, gestionar els grups de pràctiques, realitzar les lliuraments corresponents, consultar les qualificacions, comunicar-se amb el professorat, etc.

Nota: es reservaran 15 minuts d'una classe, dins del calendari establert pel centre/titulació, perquè l'alumnat completi les enquestes d'avaluació de l'actuació del professorat i d'avaluació de l'assignatura.

Avaluació

Activitats d'avaluació continuada

Títol Pes Hores ECTS Resultats d'aprenentatge
Segon examen parcial 45.5% 2 0,08 CM04, KM06, KM07, SM09, SM11
Primer examen parcial 19.5% 2 0,08 CM04, KM06, KM07, SM09, SM11
Activitats avaluables a realitzar a classe 15% 0 0 CM04, KM06, KM07, SM09, SM10, SM11
Projecte de programació 20% 0 0 CM04, KM06, KM07, SM09, SM10, SM11, SM12

Entendido, ¡culpa mía! Aquí tienes el texto traducido al catalán con un formato limpio y estructurado, utilizando texto normal para las fórmulas en lugar de bloques de LaTeX:

La avaliació de l'assignatura es basarà en tres tipus d'activitats:

  • Activitats d'avaluació contínua
  • Avaluació individual (exàmens parcials)
  • Projecte de programació

La nota final de l'assignatura es calcularà combinant aquestes tres activitats mitjançant la fórmula següent:

Nota Final = (0,15 * Avaluació Contínua) + (0,2 * Projecte) + (0,65 * Avaluació Individual)

És imprescindible obtenir una nota igual o superior a 5 en el Projecte de Programació i en l'Avaluació Individual per optar a aprovar l'assignatura. La Nota Final de l'assignatura haurà de ser igual o superior a 5 per aprovar.

1. Avaluació Contínua (Individual)

Aquest apartat representa el 15% de la nota final i inclou:

  • Resolució i lliurament de petits problemes durant les sessions de classe.
  • Qüestionaris d'autoavaluació al Campus Virtual, realitzats i lliurats durant les sessions de classe.
Important: No s'exigeix una nota mínima en aquest apartat, pero les activitats les dates de lliurament de les quals hagin expirat no es podran recuperar. Es recomana participar-hi activament, ja que són clau per assimilar els coneixements en temps real i permeten al professorat adaptar les classes reforçant els conceptes que presentin més dubtes.

2. Avaluació Individual

Aquest apartat representa el 65% de la nota final i inclou les proves individuals realitzades durant el curs:

  • Dues proves durant el període lectiu, un primer parcial i un examen final. El primer parcial no elimina matèria de cara a l'examen final. L'examen final contindrà continguts explicats durant tot el curs.
  • Una prova de recuperació, adreçada únicament a estudiants que no hagin superat l'avaluació individual.

El càlcul de la nota d'aquest bloc es realitzarà de la manera següent:

Avaluació Individual = màxim((0,3 * Nota Primer Parcial) + 0,7 * Nota Examen Final, Nota Examen Final)

És necessari tenir una nota igual o superior a 5 en l'Examen Final (o prova de recuperació) per poder aprovar l'Avaluació Individual i l'assignatura.

3. Projecte de Programació (Grupal i Individual)

Aquest apartat representa el 20% de la nota final i inclou:

  • Avaluació dels dos lliuraments del projecte: un d'intermedi (Nota_Intermedia) i un altre de final (Nota_Final).
  • Seguiment del projecte durant el curs (Nota_Individual). Es podrà realitzar una prova de validació individual per garantir la participació equitativa i efectiva de tots els membres del grup.

La nota del projecte es calcularà mitjançant la fórmula següent:

Nota Projecte = (0,2 * Nota_Individual) + (0,3 * Nota_Intermedia) + (0,5 * Nota_Final)

Requisits per aprovar el projecte:

  • Obtenir una nota mínima de 5 en el lliurament final (Nota_Final).
  • Obtenir una nota superior a 5 en el seguiment del projecte (Nota_Individual).
Recuperació del projecte:
  • Es podrà recuperar el lliurament final del projecte en cas que la nota del lliurament ordinari no arribi al 5è.
  • La prova de validació individual podrà ser recuperada a l'examen de recuperació.

Avaluació Única

L'estudiantat que opti per l'avaluació única haurà de:

  • Lliurar el projecte de programació.
  • Realitzar una prova d'avaluació individual que inclourà tot el contingut del curs.

Aquesta prova individual serà idèntica a l'examen final de la resta dels estudiants de l'assignatura i requerirà una nota mínima de 5 per aprovar.

Càlcul de la nota final en avaluació única:

Nota Final = (0,15 * Projecte) + (0,85 * Avaluació Individual)

Les notes mínimes requerides per aprovar i el sistema de recuperació són els mateixos que els aplicats en l'avaluació contínua.


Casos Especials en les Qualificacions Finals

  • No Avaluable (NA): Es considerarà no avaluable aquell alumne que no participi en cap de les activitats avaluables de l'assignatura.
  • Suspens: Si no es supera l'assignatura perquè alguna de les activitats no assoleix la nota mínima exigida, la qualificació numèrica que constarà en l'expedient serà el valor menor entre 4,5 i la mitjana ponderada de les notes.
  • Matrícula d'Honor (MH): La concessió d'aquesta qualificació és decisió exclusiva del professorat. D'acord amb la normativa de la UAB, només es podran concedir a estudiants amb una nota final igual o superior a 9,00, fins a un màxim del 5% del total d'alumnes matriculats. El criteri d'assignació serà la nota final de l'assignatura.


Revisió de Qualificacions

Per a cada activitat d'avaluació es publicará el lloc, la data i l'hora de la revisió, espai en el qual l'estudiant podrà examinar la seva prova juntament amb el professorat i presentar reclamacions. Si l'estudiant no hi assisteix en l'horari establert, perdrà el dret a revisar aquesta activitat posteriorment.


Estudiants Repetidors

Aquesta assignatura no contempla un tractament diferenciat per a l'alumnat repetidor. En tractar-se d'una assignatura nova amb un equip docent i una metodologia renovats, no es convalidarà cap nota de teoria, activitat d'avaluació contínua ni projecte d'anys anteriors.


Nota Important: Còpies i Plagis

Qualsevol irregularitat comesa per un estudiant que pugui afectar la qualificació d'una activitat avaluable serà sancionada com una nota de zero (0) en aquesta activitat, la qual no serà recuperable. Si l'activitat és obligatòria per aprovar l'assignatura, aquesta es considerarà suspesa automàticament sense possibilitat de recuperació en el mateix curs.

Les irregularitats inclouen, entre d'altres:

  • Còpia total o parcial d'una pràctica, informe o activitat d'avaluació.
  • Permetre que altres estudiants copiïn.
  • Presentar un treball en grup que no hagi estat elaborat íntegramment pels seus membres.
  • Presentar com a propis materials de tercers (incloses traduccions o adaptacions).
  • Utilitzar dispositius de comunicació (mòbils, rellotges intel·ligents, etc.) o comunicar-se amb altres alumnes durant les proves.
  • Utilitzar materials no autoritzats explícitament durant els exàmens.

En aquests casos, la nota numèrica a l'expedient serà el valor menor entre 3,0 i la mitjana ponderada de les qualificacions, per la qual cosa no serà possible aprovar per compensació. S'utilitzaran eines automàtiques de detecció de còpia de codi en tots els lliuraments.


Planificació i Ús d'Eines

  • Planificació d'Activitats
  • Les dates d'avaluació contínua i de lliurament de treballs es publicaran a l'inici del curs i es podran modificar davant de possibles incidències. Tots els canvis es comunicaran formalment a través de la plataforma Caronte, canal habitual d'informació de l'assignatura.
  • Ús de la Intel·ligència Artificial (IA)
  • Es permet l'ús de tecnologies d'IA exclusivament com a eina de suport (recerca d'informació, interpretació de codi, resolució de dubtes conceptuals, etc.).
  • Està estrictament prohibit utilitzar la IA per desenvolupar les tasques de programació que s'hagin de lliurar. Qualsevol treball que inclogui fragments de codi o text generats per IA es considerarà una falta d'honestedat acadèmica, es tractarà com una irregularitat i podrà comportar el suspens directe de l'assignatura.
  • Consideracions Addicionals
  • Els tràmits administratius següents s'hauran de gestionar directament a través de la Gestió Acadèmica de l'Escola d'Enginyeria:
  • Sol·licitud de traducció del material d'avaluació a un idioma diferent del català.
  • Petició de reprogramació de proves d'avaluació.
  • Sol·licitud per acollir-se a la modalitat d'avaluació única.
  • El professorat no té potestat per prendre decisions sobre aquests aspectes i es limitarà a aplicar les resolucions dels òrgans competents de l'Escola.

Bibliografia


  • http://www.cplusplus.com/ : The C++ Resources Network
  • https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B: Programación en C++ - Wikilibros
  • https://www.sololearn.com/: SoloLearn
  • L. Joyanes, I. Zahonero: Programación en C: metodología, estructura de datos y objetos, Mc Graw-Hill, 2001.
  • B. Eckel. Thinking in C++, Volume 1: Introduction to Standard C++, Prentice-Hall, 1999.
  • B. Eckel. Thinking in C++, Volume 2: Standard Libraries and Advanced Topics, Prentice-Hall, 1999.
  • E. Valveny, R. Benavente, A. Lapedriza, M. Ferrer, J. García: Programació en Llenguatge C. Amb 56 problemes resolts i comentats. Servei publicacions UAB, 2009.
  • L. Joyanes, A. Castillo, L. Sánchez, I. Zahonero: Programación en C: libro de problemas, Mc Graw-Hill, 2002.
  • B.W. Kernighan, D.M. Ritchie: El lenguaje de programación C. 2ª Edición, Prentice Hall, 1986.
  • B.W. Kernighan, R. Pike: La Práctica de la Programación. Pearson Educación, 2000.
  • L. Joyanes Aguilar : Fundamentos de Programación: Algoritmos, Estructuras de Datos y Objetos. 3ª Edición, Mc. Graw-Hill, 2003
  • J. Guttag. Introduction to Computation and Programming Using Python: With Application to Understanding Data. Second Edition. MIT Press. ISBN-10: 9780262529624.
  • S. Chazallet Python 3. Los fundamentos del lenguaje. Eni, ISBN-10: 2409006140.
  • Steven F. Lott. Mastering object-oriented Python. Packt publishing, 2014.

Programari

Qualsevol entorn de desenvolupament en C++ y Python (Visual Studio Code)

Grups i idiomes de l'assignatura

La informació proporcionada és provisional fins al 30 de novembre. A partir d'aquesta data, podreu consultar l'idioma de cada grup a través d'aquest enllaç. Per accedir a la informació, caldrà introduir el CODI de l'assignatura

Tipus de docència Grup Idioma Semestre Torn
(PAUL) Pràctiques d'aula 411 Català/Castellà segon quadrimestre matí-mixt
(PAUL) Pràctiques d'aula 412 Català/Castellà segon quadrimestre matí-mixt
(PAUL) Pràctiques d'aula 431 Català/Castellà segon quadrimestre matí-mixt
(PAUL) Pràctiques d'aula 432 Català/Castellà segon quadrimestre matí-mixt
(PAUL) Pràctiques d'aula 451 Català segon quadrimestre tarda
(PAUL) Pràctiques d'aula 452 Català/Castellà segon quadrimestre tarda
(PAUL) Pràctiques d'aula 471 Català/Castellà segon quadrimestre tarda
(PAUL) Pràctiques d'aula 472 Català/Castellà segon quadrimestre tarda
(PAUL) Pràctiques d'aula 511 Català/Castellà segon quadrimestre matí-mixt