Professorat
Responsable
- Alicia Ageno Pulido ( ageno@cs.upc.edu )
- Sergio Álvarez Napagao ( salvarez@cs.upc.edu )
Altres
- Alejandro Ivan Paz Ortiz ( ivan.paz@upc.edu )
- Anna Ramon Hinojosa ( anna.ramon.hinojosa@upc.edu )
- Carles Arnal Castello ( carles.arnal@upc.edu )
- Guillermo Godoy Balil ( guillem.godoy@upc.edu )
- Ignasi Gómez Sebastià ( ignasi.gomez@upc.edu )
- Jose Miguel Urquiza Ortiz ( jose.miguel.urquiza@upc.edu )
- Salvador Medina Herrera ( salvador.medina.herrera@upc.edu )
Hores setmanals
Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0.28
Aprenentatge autònom
5.72
Competències
Treball en equip
- G5.2 - Planificar i acordar els objectius, les regles de funcionament, les responsabilitats, l'agenda i el procediment de revisió de la feina. Identificar conflictes, negociar-los i resoldre-los de forma efectiva. Adaptar-se a diferents tipus de grups (gran/petit, tècnic/mixt, presencial /a distància). Interactuar amb eficàcia i promoure la participació de tots els membres del grup.
Emprenedoria i innovació
- G1.2 - Tenir iniciatives que generin oportunitats, nous objectes o solucions noves, amb una visió d'implementació de procés i de mercat, i que impliqui i faci participar als altres en projectes que s'han de desenvolupar (capacitat d'actuar de manera autònoma).
Competències tècniques comunes
- CT2.3 - Dissenyar, desenvolupar, seleccionar i avaluar aplicacions, sistemes i serveis informàtics i, al mateix temps, assegurar-ne la fiabilitat, la seguretat i la qualitat en funció de principis ètics i de la legislació i la normativa vigents.
- CT2.4 - Demostrar coneixement i capacitat per a aplicar les eines necessàries a l'emmagatzematge, el processament i l'accés als sistemes d'informació, fins i tot els que es basen en la web.
- CT2.5 - Dissenyar i avaluar interfícies persona-computador que garanteixin l'accessibilitat i la usabilitat als sistemes, als serveis i a les aplicacions informàtiques.
- CT3.6 - Demostrar coneixement de la dimensió ètica a l'empresa: la responsabilitat social i corporativa en general i, en particular, les responsabilitats civils i professionals de l'enginyer en informàtica.
- 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.
- CT4.3 - Demostrar coneixement i capacitat d'aplicació dels principis fonamentals i de les tècniques bàsiques dels sistemes intel·ligents i de la seva aplicació pràctica.
- CT5.1 - Triar, combinar i explotar diferents paradigmes de programació, en el moment de construir software, tenint en compte criteris com la facilitat de desenvolupament, l'eficiència, la portabilitat i la mantenibilitat.
- 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.
- CT5.5 - Usar les eines d'un entorn de desenvolupament de software per a crear i desenvolupar aplicacions.
- CT5.6 - Demostrar coneixement i capacitat d'aplicació dels principis fonamentals i de les tècniques bàsiques de la programació paral·lela, concurrent, distribuïda i en temps real.
- CT6.1 - Demostrar coneixement i tenir capacitat per a administrar i mantenir sistemes, serveis i aplicacions informàtiques.
- 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.
- CT8.7 - Controlar versions i configuracions del projecte.
Objectius
-
Invocar els coneixements de programació adquirits en assignatures anteriors durant el desenvolupament d'un projecte de programació de mida mitjana, triant algorismes i estructures de dades adequades per a construir un programa correcte i eficient.
Competències relacionades: CT4.1, CT4.2, CT5.2, -
Organitzar la feina de disseny i programació d'un equip de persones de mida mitjana (de tres a cuatre), d'acord amb a una planificació temporal preestablerta. Aquesta organització inclou tant el compliment de la planificació donada com al repartiment de tasques entre els membres del grup.
Competències relacionades: CT6.1, CT8.6, G5.2, CT8.7, -
Identificar parts susceptibles de ser factoritzades en l'especificació, disseny i implementació d'un programa, per tal de resoldre-les un sol cop. Usar de manera efectiva els mecanismes de l'orientació a objectes per fer la factorització.
Competències relacionades: CT5.4, CT5.5, CT5.1, CT2.3, -
Conèixer els principis del disseny i la programació orientades a objectes, la seva justificació, i els avantatges i inconvenients d'adoptar aquest paradigma en un projecte de programació.
Competències relacionades: CT5.4, CT5.1, -
Usar el mecanisme de classes i herència per evitar la redundància i per capturar abstraccions d'especificació, disseny i implementació. Entendre els avantatges d'aquest ús de la orientació a objectes pel que fa a fiabilitat, modificabilitat, portabilitat, reusabilitat i productivitat.
Competències relacionades: CT4.2, CT5.2, CT5.3, CT2.3, -
Tractar correctament les situacions anòmales dins del programa, usant, si és convenient, el mecanisme d'excepcions ofert pel llenguatge de programació. Testejar el programa de manera sistemàtica i exhaustiva.
Competències relacionades: CT5.1, CT5.3, -
Dissenyar una interfície d'usuari raonablement còmoda i eficaç per al programa, usant una llibreria GUI.
Competències relacionades: CT2.5, CT5.6, -
Desenvolupar un projecte de programació de mida mitjana, en grup, d'acord amb un pla de desenvolupament i una arquitectura proporcionades d'avantmà.
Competències relacionades: G5.2, CT3.6, CT4.1, CT4.2, CT5.2, CT5.4, CT5.5, G1.2, CT2.4, CT4.3, CT5.3, CT2.3,
Continguts
-
Repàs d'IES: Especificació, diagrames de classes i casos d'ús.
Cicles de vida.
Definició del projecte. Requeriments. Especificació funcional. Modelar primer el domini.
UML: diagrama de classes (domini). Diagrama de casos d'ús. Explicacions textuals.
Estudi d'un cas. -
Introducció a Java i Conceptes d'OO en Java
Especificació, disseny i programació orientades a objectes (OO). Classes, objectes, atributs, mètodes i relacions. Encapsulament i ocultació, abstracció i classificació, herència. Polimorfisme, "binding" estàtic i dinàmic. Altres relacions: associació, agregació, dependència. -
Disseny i implementació en Java de l'arquitectura en 3 capes
Descripció del paradigma de disseny d'arquitectura en 3 capes i implementació en Java -
Prova de programes
Program Testing: prova i depuració.
Prova de components.
Estratègies de prova i integració. Drivers i stubs/mocks. Planificació de proves.
"Bastimentada" i tests de regressió.
Eines d'ajuda a la prova (JUnit)
Tractament de errors i excepcions. -
Patrons de disseny en Java
Es descriuran i implementaran alguns dels patrons de disseny clàssics (decorador, estat, singleton. etc) -
Conceptes bàsics de disseny d'interfícies en Java
Com dissenyar una interfície gràfica senzilla utilitzant les llibreríes stàndard de Java i aplicant els principis d'arquitectura en 3 capes -
Eines pel desenvolupament del programari
Es descriuran per sobre eines per facilitar el desenvolupament del programari: control de versions (Git), integració amb testing (JUnit)
Activitats
Activitat Acte avaluatiu
Primera entrega del projecte
Disseny i principi de la implementació. S'ha d'implementar completament el model del domini i el nucli bàsic algorítmic del projecte, proporcionant els jocs de proves i tests de la part implementada.Objectius: 8 1 2 3 6 4 5
Setmana: 10
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Tercera entrega del projecte
Lliurament final. La documentació a presentar ha d'incloure la implementació completa del projecte, així com els jocs de prova i el manual d'usuari. A més del lliurament de la documentació, cada equip haurà de fer una presentació del seu projecte.Objectius: 8 1 2 3 6 7 4 5
Setmana: 15 (Fora d'horari lectiu)
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h
Presentació tercera entrega
Presentació i entrevista presencial de la tercera entrega.Objectius: 8
Continguts:
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
2.2h
Aprenentatge autònom
0h
Metodologia docent
El temari s'exposa de forma molt pràctica, a través de la presentació de molts exemples.Les classes de teoria introdueixen tot els coneixements, les tècniques i els conceptes necessaris per a la realització del projecte de l'assignatura.
Algunes de les classes de laboratori, normalment cap a principi de curs, serveixen perquè el professor presenti breument les notacions, llenguatges, llibreries i eines a utilitzar. En la majoria de classes de laboratori, però, no és el professor qui porta la iniciativa. Són unes hores que cada equip de projecte pot fer servir per treballar en comú, o bé per consultar dubtes amb el professor i rebre'n els seus comentaris.
Les dues hores de classes de teoria i les dues de laboratori es fan setmanalment, excepte la primera setmana que només es fa teoria (dues sessions) i les dues darreres que només es fa laboratori.
La realització del projecte és la part principal de la feina a realitzar dins de l'assignatura. Aquest projecte tindrà un fort component algorísmic i d'estructures de dades.
Per implementar aquest projecte, el sistema de treball serà el segent:
- Els estudiants s'organitzen en equips de 4 persones, i els equips s'estructuren en grups de laboratori de 15-20 persones.
- Cada grup de laboratori tindrà un professor tutor assignat.
- Dins de cada equip, un estudiant i tan sols un és responsable de programar i provar cada classe.
El curs utilitza el llenguatge de programació Java.
Mètode d'avaluació
Nota Final: Nota_ProjecteNota_Projecte: (0.40 * Entrega1 + 0.15 * Entrega2 + 0.45 * Entrega3) * FT
Donat que el projecte és un treball en grup en el que han de participar tots i només els membres del equip, la nota final del projecte està ponderada per FT. Aquest Factor de Treball (FT) és una ponderació (0<=FT<=1) individual que valora el grau de treball de cada membre del equip. Es farà públic juntament amb les notes de la darrera entrega, i es determinarà a partir del repartiment de tasques dintre del equip (entregats a la Entrega1 i la Entrega3) i de les presentacions finals del equip amb el seu tutor.
Competència transversal "Treball en equip": S'avalua usant una rúbrica simple, disponible pels estudiants, en que el tutor de cada grup puntua els diferents aspectes associats a la competència de cada membre dels equips.
Competència transversal "Empreneduria i innovació": S'avalua considerant la iniciativa de l'equip en els dos moments en què s'han de prendre decisions pròpies, no predeterminades a l'assignatura: les funcionalitats extres del projecte i els algorismes i estructures de dades amb què es resoldrà la funcionalitat principal. Per tant, l'avaluació és una combinació de dos criteris:
1) En funció de les funcionalitats opcionals proposades versus les funcionalitats opcionals implementades
2) En funció de la iniciativa de l'equip en escollir algorismes i EDs per implementar les funcionalitats principals
Bibliografia
Bàsic
-
An introduction to object-oriented programming
- Budd, T,
Addison-Wesley,
2002.
ISBN: 0201760312
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002402469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Testing object-oriented systems: models, patterns and tools
- Binder, R.V,
Addison-Wesley,
2000.
ISBN: 9780321700674
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003748579706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
The Java programming language
- Arnold, K.; Gosling, J.; Holmes, D,
Addison-Wesley,
2006.
ISBN: 0321349806
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003128819706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Enginyeria del software: programació orientada a objectes
- Peralta, A.J.; Rodríguez, H,
Edicions UPC,
1994.
ISBN: 8476533748
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991000965439706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
JUnit in action
- Tahcheiv, P. [et al.],
Manning,
2011.
ISBN: 9781935182023
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004104699706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
The object-oriented thought process
- Weisfeld, M,
Addison-Wesley Professional,
2019.
ISBN: 9780135181966
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004210579706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Design patterns : elements of reusable object-oriented software
- Gamma, Erich,
Addison-Wesley,
cop. 1995.
ISBN: 0201633612
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001193289706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Java design patterns: a hands-on experience with real-world examples
- Sarcar, V,
Apress L.P.,
2022.
ISBN: 9781484279717
Complementari
-
Object-oriented software construction
- Meyer, B,
Prentice Hall,
1997.
ISBN: 0136291554
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002431179706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
The unified modeling language user guide
- Booch, G.; Rumbaugh, J.; Jacobson, I,
Addison-Wesley,
2005.
ISBN: 0321267974
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003448989706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
The unified modeling language reference manual
- Rumbaugh, J.; Jacobson, I.; Booch, G,
Addison-Wesley,
2005.
ISBN: 0321245628
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002895869706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
UML and C++: a practical guide to object-oriented development
- Lee, R.C.; Tepfenhart, W.M,
Prentice Hall,
2001.
ISBN: 0130290408
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003632949706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Software engineering: a practitioner's approach
- Pressman, R.S.; Maxim, B.R,
McGraw Hill Higher Education,
2020.
ISBN: 9781260548006
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004193559706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
About face: the essentials of interaction design
- Cooper, A.; Reimann, R.; Cronin, D.; Noessel, C,
Wiley,
2014.
ISBN: 9781118766576
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004024899706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Pragmatic Programmer: your journey to mastery
- Thomas, David,
Addison Wesley,
2020.
ISBN: 9780135957059
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004949115106711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Clean architecture : a craftsman's guide to software structure and design
- Martin, Robert C,
Prentice Hall,
[2018].
ISBN: 9780134494166
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004184599706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- Pàgina de Java, el llenguatge de programació usat a l'assignatura. L'última versió disponible de la Java Platform es pot descarregar lliurement d'aquesta web. https://www.oracle.com/java/index.html
- Pàgina del consorci UML. https://www.uml.org/
Capacitats prèvies
- Capacitat de resoldre problemes algorísmics de dificultat mitjana a partir d'una especificació clara, i d'implementar les solucions en un llenguatge de programació imperatiu.- Coneixement dels mecanismes bàsics d'estructuració de programes (modularització, encapsulació, tipus abstractes de dades, classes) i capacitat per aplicar-los a problemes petits-mitjans (uns pocs mòduls)
- Coneixement dels elements de programació orientada a objectes (classes, objectes, mecanismes d'execució).
- Familiaritat amb un llenguatge imperatiu orientat a objectes.
- Capacitat d'usar i programar estructures de dades en aquest llenguatge.
- Capacitat d'usar llibreries en aquest llenguatge.
- Domini d'estratègies bàsiques per trobar i corregir errors en mòduls senzills.