Competències i objectius

 

Context de l'assignatura per al curs 2021-22

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ó? Quines característiques tenen? Quins són els elements essencials i els accessoris? Què 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-ne els 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ó Racket i Swift. Racket es construeix sobre Scheme, 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 que introdueix nous paradigmes de programació com la programació orientada a protocols. A diferència de Racket, Swift és un llenguatge compilat, segur i fortament tipat.

En l'assignatura tractarem quatre grans aspectes:

  • 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, comparant-lo amb el paradigma imperatiu tradicional. Alguns continguts: model computacional de substitució, forma especial lambda, recursió, programacio funcional en Racket i Swift, abstracció, estructures de dades recursives com llistes i arbres.
  • 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)

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 2021-22

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 els llenguatges de programació Racket i Swift.
  • 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