Competències i objectius
Context de l'assignatura per al curs 2013-14
La asignatura se formula a partir de la premisa de que los estudiantes conocen con cierta profundidad algunos lenguajes de programación, principalmente imperativos y orientados a objetos. Su objetivo principal es que los estudiantes consigan una mayor perspectiva y puedan razonar en general sobre los lenguajes de programación. ¿Qué elementos son comunes a los lenguajes de programación? ¿Qué características tienen? ¿Cuáles son los elementos esenciales y los accesorios? ¿Qué familias o paradigmas de lenguajes podemos identificar? ¿Cómo diseñar un buen lenguaje de programación? Dominando estos contenidos será mucho más fácil aprender nuevos lenguajes de programación, identificar sus aspectos esenciales e incluso ser capaz de diseñar lenguajes específicos orientados a dominios concretos.
En el curso utilizaremos los lenguajes de programación Scheme y Scala. Scheme es una variante muy extendida de LISP, lenguaje paradigma de la programación funcional. La utilización de un lenguaje tan sencillo nos permite reflexionar sobre cuáles son los elementos esenciales de los lenguajes de programación y su semántica. Scala es un lenguaje moderno que se ejecuta en la plataforma Java y que se está reconocido como uno de los más importantes lenguajes multi-paradigma, integrando de forma coherente conceptos de programación funcional y programación orientado a objetos.
Trataremos cinco grandes bloques:
- Lenguajes de programación: Conceptos generales comunes al diseño y construcción de lenguajes de programación. Algunos contenidos: historia y paradigmas de lenguajes de programación, programación declarativa vs. programación procedural, tipos de datos.
- Programación funcional: Estudio en profundidad del paradigma de programación funcional. Algunos contenidos: modelo computacional de sustitución, forma especial lambda, recursión, programacion funcional en Scheme, abstracción, estructuras de datos recursivas como listas y árboles.
- Programación imperativa: Estudio de las características de la programación imperativa comparada con la programación funcional. Algunos contenidos: modelo de computación basado en entornos, asignación de variables, estado local.
- Programación orientada a objetos: Repaso de los elementos esenciales del paradigma de programación orientada a objeto, poniéndolos en el contexto de lo que aportan al paradigma clásico procedural. Características avanzadas de POO en un lenguaje de reciente diseño como Scala.
- Integración de paradigmas: Lenguajes que integran el paradigma funcional y el imperativo. ¿Por qué es interesante integrarlos? Ventajas de la programación funcional para la concurrencia. Scala como un ejemplo de lenguaje de integración de paradigmas.
Competències de l'assignatura (verificades per ANECA en graus i màsters oficials) per al curs 2013-14
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 2013-14
- Conocer y diferenciar las características de los distintos paradigmas de programación (programación funcional, procedural y orientada a objetos) e identificarlas en lenguajes de programación concretos.
- Conocer los elementos que componen los lenguajes de programación (estructuras de control, procedimientos, tipos de datos) y distintas implementaciones de estos elementos en distintos lenguajes.
- Diferenciar entre tiempo de ejecución y tiempo de compilación en distintos ámbitos: detección de errores o definición, creación o ámbito de vida de variables.
- Conocer modelos de computación específicos que expliquen la semántica de los lenguajes de programación. En concreto: modelo de sustitución para la programación funcional y modelo de entornos para explicar el ámbito y los valores de los variables en la programación procedural.
- Utilizar la abstracción y la recursión para diseñar correctamente procedimientos y estructuras de datos (listas y árboles).
- Ser capaz de diseñar, implementar y corregir programas funcionales, en concreto utilizando el lenguaje de programación Scheme.
- Ser capaz de implementar programas sencillos en Scala, en los que se utilicen las características multi-paradigma del lenguaje.
- Comparar el paradigma orientado a objetos con el paradigma procedural clásico, reconociendo las ventajas que aporta en cuanto a abstracción, reutilización y modificación de código.
- Conocer los elementos fundamentales de la abstracción aplicada al diseño de lenguajes de programación. Ser capaz de diseñar un sencillo lenguaje orientado a un dominio restringido (DSL).
- Conocer los principios básicos del paradigma de programación lógica.
Dades generals
Codi:
34017
Professor/a responsable:
Pomares Puig, Cristina
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.:
CIENCIA DE LA COMPUTACIO I INT. ARTIF.
Àrea: CIENCIA DE LA COMPUTACIO, INTEL·LIGENCIA ARTIFICIA
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
-
GRAU EN ENGINYERIA INFORMÀTICA
Tipus d'assignatura: OBLIGATÒRIA (Curs: 2)