Competències i objectius
Context de l'assignatura per al curs 2016-17
L'assignatura parteix de la premissa que els estudiants coneixen amb certa profunditat alguns llenguatges de programació, principalment imperatius i orientats a objectes. El seu objectiu principal és que aconsegueixin una major perspectiva i puguin raonar en general sobre els llenguatges de programació. Quins elements són comuns als llenguatges de programació? Quin característiques tenen? Quins són els elements essencials i els accessoris? Quines famílies o paradigmes de llenguatges podem identificar? Com dissenyar un bon llenguatge de programació? Dominant aquests continguts serà molt més fàcil aprendre nous llenguatges de programació, identificar els seus aspectes essencials i fins i tot ser capaç de dissenyar llenguatges específics orientats a dominis concrets.
En el curs utilitzarem els llenguatges de programació Scheme i Swift. Scheme és una variant molt estesa de LISP, llenguatge paradigma de la programació funcional. La utilització d'un llenguatge tan senzill ens permet reflexionar sobre quins són els elements essencials dels llenguatges de programació i la seva semàntica. Swift és un modern llenguatge multiparadigma creat reciéntemente per Apple amb aspiracions de suportar múltiples plataformes (dispositius mòbils, sistemes operatius o servidors) i que integra de forma coherent conceptes de programació funcional i programació orientat a objectes i introduint nous paradigmes de programació com la programació orientada a protocols. A diferència de *Scheme, Swift és un llenguatge compilat, segur i fortament tipeado.
Tractarem cinc grans blocs:
- Llenguatges de programació: Conceptes generals comuns al disseny i construcció de llenguatges de programació. Alguns continguts: història i paradigmes de llenguatges de programació, programació declarativa vs. programació procedural, tipus de dades.
- Programació funcional: Estudi en profunditat del paradigma de programació funcional. Alguns continguts: model computacional de substitució, forma especial lambda, recursió, programació funcional en Scheme, abstracció, estructures de dades recursivas com a llestes i arbres.
- Programació imperativa: Estudi de les característiques de la programació imperativa comparada amb la programació funcional. Alguns continguts: model de computació basat en entorns, assignació de variables, estat local.
- Programació orientada a objectes: Repàs dels elements essencials del paradigma de programació orientada a objecte, posant-los en el context del que aporten al paradigma clàssic procedural. Característiques avançades de POO en un llenguatge de recent disseny com Swift. Programació orientada a protocols.
- Integració de paradigmes: Llenguatges que integren el paradigma funcional i l'imperatiu. Per què és interessant integrar-los? Avantatges de la programació funcional per a la concurrència. Swift com un exemple de llenguatge d'integració de paradigmes.
Competències de l'assignatura (verificades per ANECA en graus i màsters oficials) per al curs 2016-17
Competències específiques (CE)
- CE7 : Coneixement, disseny i utilització de manera eficient dels tipus i estructures de dades més adequades per a la resolució d'un problema.
- CE8 : Capacitat per a analitzar, dissenyar, construir i mantenir aplicacions de forma robusta, segura i eficient, triant el paradigma i els llenguatges de programació més adequats.
Resultats d'aprenentatge (Objectius formatius)
- Capacitat per a definir, avaluar i seleccionar plataformes de maquinari i programari per a desenvolupar i executar sistemes, serveis i aplicacions informàtiques, d'acord amb els coneixements adquirits segons la planificació dels ensenyaments.
- Capacitat per a concebre, desenvolupar i mantenir sistemes, serveis i aplicacions informàtiques, emprant els mètodes de l'enginyeria del programari com a instrument per a assegurar-ne la qualitat, d'acord amb els coneixements adquirits segons planificació dels ensenyaments.
- Capacitat per a concebre i desenvolupar sistemes o arquitectures informàtiques centralitzades o distribuïdes, integrant maquinari, programari i xarxes d'acord amb els coneixements adquirits segons la planificació dels ensenyaments.
- Coneixement de les matèries bàsiques i tecnologies que capaciten per a aprendre i desenvolupar nous mètodes i tecnologies, a més les que donen versatilitat per a adaptar-se a noves situacions.
Objectius específics indicats pel professorat per al curs 2016-17
Definim les següents competències específiques:
- Conèixer i diferenciar les característiques dels diferents paradigmes de programació (programació funcional, procedural i orientada a objectes) i identificar-les en llenguatges de programació concrets.
- Conèixer els elements que componen els llenguatges de programació (estructures de control, procediments, tipus de dades) i diferents implementacions d'aquests elements en diferents llenguatges.
- Diferenciar entre temps d'execució i temps de compilació en diferents àmbits: detecció d'errors o definició, creació o àmbit de vida de variables.
- Conèixer models de computació específics que expliquen la semàntica dels llenguatges de programació. En concret: model de substitució per a la programació funcional i model d'entorns per a explicar l'àmbit i els valors dels variables en la programació procedural.
- Utilitzar l'abstracció i la recursión per a dissenyar correctament procediments i estructures de dades (llestes i arbres).
- Ser capaç de dissenyar, implementar i corregir programes funcionals, en concret utilitzant el llenguatge de programació Scheme.
- Ser capaç d'implementar programes senzills en Swift, en els quals s'utilitzen les característiques multi-paradigma del llenguatge.
- Comparar el paradigma orientat a objectes amb el paradigma procedural clàssic, reconeixent els avantatges que aporta quant a abstracció, reutilització i modificació de codi.
- Conèixer els elements fonamentals de l'abstracció aplicada al disseny de llenguatges de programació. Coneixer nous paradigmes de programació, como la programació orientada a protocols.
Dades generals
Codi:
34017
Professor/a responsable:
GALLARDO LOPEZ, DOMINGO
Crèdits ECTS:
6,00
Crèdits teòrics:
1,20
Crèdits pràctics:
1,20
Càrrega no presencial:
3,60
Departaments amb docència
-
Dep.:
CIÈNCIA DE LA COMPUTACIÓ I INTEL·LIGÈNCIA ARTIFICIAL
Àrea: CIÈNCIA DE LA COMPUTACIÓ I INTEL·LIGÈNCIA ARTIFICIAL
Crèdits teòrics: 1,2
Crèdits pràctics: 1,2
Aquest departament és responsable de l'assignatura.
Aquest dep. és responsable de l'acta.
Estudis en què s'imparteix
-
DOBLE GRAU EN ENGINYERIA INFORMÀTICA I ADMININISTRACIÓ I DIRECCIÓ D'EMPRESES
Tipus d'assignatura: OBLIGATÒRIA (Curs: 2)
-
GRAU EN ENGINYERIA INFORMÀTICA
Tipus d'assignatura: OBLIGATÒRIA (Curs: 2)