DADES IDENTIFICATIVES 2019_20
Assignatura (*) TÈCNIQUES AVANÇADES DE PROGRAMACIÓ Codi 17914136
Ensenyament
Doble titulació de Grau d'Enginyeria Informàtica i de Biotecnologia (2014)
Cicle 1r
Descriptors Crèd. Tipus Curs Període
6 Obligatòria Quart 1Q
Llengua d'impartició
Català
Departament Enginyeria Informàtica i Matemàtiques
Coordinador/a
REBOLLO MONEDERO, DAVID
Adreça electrònica david.rebollo@urv.cat
daniel.barcelona@urv.cat
Professors/es
REBOLLO MONEDERO, DAVID
BARCELONA PONS, DANIEL
Web
Descripció general i informació rellevant Aquesta assignatura tracta conceptes importants de programació i disseny de software. En particular, un objectiu clar és adquirir la capacitat per analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.

Competències
Tipus A Codi Competències Específiques
 A4 Capacitat per concebre, desenvolupar i mantenir sistemes, serveis i aplicacions informàtiques emprant els mètodes de l’enginyeria del software com a instrument per a l’assegurament de la qualitat.
 A5 Capacitat per concebre i desenvolupar sistemes o arquitectures informàtiques centralitzades o distribuïdes integrant hardware, software i xarxes.
 A7 Capacitat per definir, avaluar i seleccionar plataformes hardware i software per al desenvolupament i l’execució de sistemes, serveis i aplicacions informàtiques.
 CM1 Capacitat per dissenyar, desenvolupar, seleccionar i avaluar aplicacions i sistemes informàtics, assegurant-ne la fiabilitat, seguretat i qualitat, d'acord amb principis ètics i la legislació i normativa vigent.
 CM8 Capacitat per analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.
Tipus B Codi Competències Transversals
Tipus C Codi Competències Nuclears

Resultats d'aprenentage
Tipus A Codi Resultats d'aprenentatge
 A4 Dissenya una aplicació basada en components utilitzant un marc de treball de programari estàndard.
Aplica tècniques de qualitat del programari com els test unitaris, la integració de codi i el control d’errors.
 A5 Dissenya una aplicació basada en components utilitzant un marc de treball de programari estàndard.
 A7 Aplica tècniques de refactoring i patrons de disseny en la creació de programari.
Aplica tècniques de qualitat del programari com els test unitaris, la integració de codi i el control d’errors.
 CM1 Coneix els principals paradigmes de programació.
Aplica tècniques de refactoring i patrons de disseny en la creació de programari.
Aplica conceptes generals de metaprogramació I intercepció de programari.
Aplica tècniques de qualitat del programari com els test unitaris, la integració de codi i el control d’errors.
 CM8 Coneix els principals paradigmes de programació.
Aplica tècniques de refactoring i patrons de disseny en la creació de programari.
Aplica conceptes generals de metaprogramació I intercepció de programari.
Dissenya una aplicació basada en components utilitzant un marc de treball de programari estàndard.
Aplica tècniques de qualitat del programari com els test unitaris, la integració de codi i el control d’errors.
Tipus B Codi Resultats d'aprenentatge
Tipus C Codi Resultats d'aprenentatge

Continguts
Tema Subtema
Introducció i conceptes generals Qualitat del Software
Paradigmes de programació
Arquitectura del Software
Sistemes de tipus i polimorfisme Tipat estàtic i dinàmic
Polimorfisme de sobrecàrrega
Polimorfisme paramètric
Polimorfisme de herència
Patrons de disseny i refactoring Patrons de creacío, estructurals i de comportament
Millora del codi i refactoring
Documentació del software i APIs
Mètriques d'avaluació de codi
Arquitectura del Software Agile Programming
Validació del software i tests unitaris
Programació reflectiva
Components software i Marcs de treball
Casos d'us Middleware i Objectes distribuïts
Arquitectures orientades a serveis
Servidors d'aplicacions
Eines de depuració i profiling de codi

Planificació
Metodologies  ::  Proves
  Competències (*) Hores a classe
Hores fora de classe
(**) Hores totals
Activitats Introductòries
4 8 12
Sessió Magistral
A4
20 35 55
Pràctiques a laboratoris
CM1
CM8
25 25 50
Atenció personalitzada
4 8 12
 
Proves de desenvolupament
A4
A5
A7
7 14 21
 
(*) En el cas de docència no presencial, són les hores de treball amb suport vitual del professor.
(**) Les dades que apareixen a la taula de planificació són de caràcter orientatiu, considerant l’heterogeneïtat de l’alumnat

Metodologies
Metodologies
  Descripció
Activitats Introductòries Repás de conceptes d'orientació a objectes
Exemples de laboratori
Sessió Magistral Explicació de conceptes de teoria
Interacció amb preguntes i respostes amb els alumnes
Pràctiques a laboratoris Introducció de tecnologies i eines
Treball en grup
Atenció personalitzada Entrevistes individuals en horari de tutories.
Seguiment de resultats parcials.

Atenció personalitzada
Descripció
Entrevistes individuals en horari de tutories. Seguiment de resultats parcials.

Avaluació
Metodologies Competències Descripció Pes        
Pràctiques a laboratoris
CM1
CM8
Examen de laboratori sense Internet (setmana 6): conceptes de polimorfisme i patrons en Java
30
Proves de desenvolupament
A4
A5
A7
Pràctica final: pràctica a resoldre en grup publicada la cinquena setmana. A lliurar incrementalment fins la setmana 16.

Examen teòric final
70
Altres  
 
Altres comentaris i segona convocatòria

L'avaluació de l'assignatura tindrà tres components fonamentals:
1) Examen de laboratori sense Internet (setmana 6): conceptes de polimorfisme i patrons en Java
2) Examen de teoria (setmana 15)
3) Pràctica final: pràctica a resoldre en grup publicada la cinquena setmana. A lliurar incrementalment fins la setmana 16.

La segona convocatoria consistirà en un examen de laboratatori de dos hores (1), un examen de teoria de dos hores (2) i el lliurament de la pràctica final (3).


Fonts d'informació

Bàsica Bertrand Meyer , Construcción de Software Orientado a Objetos , Prentice Hall , 2003
Paul Deitel, Como programar en Java, Pearson Education, 2012
Gamma et al, Design Patterns, Addison-Wesley, 1994
Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999
C. Szyperski , Component Software, Beyond Object-Oriented Programming, Addison-Wesley, 2000
Kent Beck, Test Driven Development, Addison-Wesley , 2002
Luciano Ramalho, Fluent Python, O'Reilly, 2014
David Beazley, Python Cookbook, O'Reilly , 2013
Martin Odersky, Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition, Artima, 2010

Complementària

Recomanacions

Assignatures que en continuen el temari
SISTEMES DISTRIBUÏTS/17234106

Assignatures que es recomana cursar simultàniament
SISTEMES OBERTS/17234123

Assignatures que es recomana haver cursat prèviament
FONAMENTS DE PROGRAMACIÓ I/17234001
METODOLOGIES DE LA PROGRAMACIÓ/17234116
ESTRUCTURES DE DADES/17234115
(*)La Guia docent és el document on es visualitza la proposta acadèmica de la URV. Aquest document és públic i no es pot modificar, llevat de casos excepcionals revisats per l'òrgan competent/ o degudament revisats d'acord amb la normativa vigent