template-browser-not-supported

Máster Universitario en Ingeniería Web (En Extinción)

Estudia

Atrás Atrás

Diseño de Lenguajes de Programación

Código asignatura
MINGEWEB-C-003
Curso
Cualquiera
Temporalidad
Segundo Semestre
Carácter
Complementos de Formación
Créditos
6
Pertenece al itinerario Bilingüe
Actividades
  • Tutorías Grupales (2 Horas)
  • Prácticas de Laboratorio (28 Horas)
  • Clases Expositivas (21 Horas)
  • Prácticas de Aula/Semina (7 Horas)
Guía docente

En la Ingeniería del Software los lenguajes de programación son una herramienta necesaria para el desarrollo de aplicaciones informáticas, por lo que el análisis y comprensión de su implementación es necesario para diseñar, construir y mantener aplicaciones eligiendo los lenguajes de programación más adecuados. El conocer las características de un lenguaje y de su implementación nos permite valorar características como su adaptabilidad, robustez, rendimiento, fiabilidad y seguridad para tomar decisiones relativas a qué lenguaje utilizar para resolver (parte de) un problema. Adicionalmente, la construcción de un procesador de lenguaje constituye un modo real de poner en comunión otras materias propias de la Ingeniería en Informática tales como los lenguajes formales, gramáticas y autómatas, arquitectura y diseño software, programación, sistemas operativos, estructura de computadores y desarrollo dirigido por modelos.

La presente asignatura se centra en el diseño e implementación de lenguajes de programación. El alumno deberá ser capaz de diseñar y construir un procesador de lenguaje, identificando y diseñando todas las características de un lenguaje a implementar.

La materia en la que se enmarca esta asignatura dentro del Grado en Ingeniería Informática del Software es Programación. El alumno tendrá que diseñar e implementar un lenguaje de programación, utilizando los procedimientos y técnicas adecuados.

Los requisitos para cursar esta asignatura son:

  • Experiencia en el desarrollo de programas siguiendo el paradigma orientado a objetos, utilizando el lenguaje de programación Java
  • Tener destreza en el diseño orientado a objetos
  • Experiencia en la utilización e identificación de los patrones orientados a objetos clásicos
  • Conocer las bases de la arquitectura software
  • Conocer la teoría básica de lenguajes formales, gramáticas y autómatas
  • Experiencia en la programación en lenguaje ensamblador
  • Conocimientos de estructura y arquitectura de computadores

Expresando los requisitos como asignaturas del grado en Ingeniería Informática del Software, el alumno deberá haber cursado y superado las siguientes asignaturas del mismo:

  • Tecnología y Paradigmas de la Programación
  • Autómatas y Matemáticas Discretas
  • Diseño del Software
  • Estructura de Datos
  • Arquitectura de Computadores

Competencias específicas de la titulación:

  • (Com.1) Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente.
  • (Com.7) Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema.
  • (Com.8) Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
  • (ISW.1) Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software.
  • (ISW.4) Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
  • (ISW.6) Capacidad para diseñar soluciones apropiadas en uno o más dominios de aplicación utilizando métodos de la ingeniería del software que integren aspectos éticos, sociales, legales y económicos.

Competencias generales:

  • (CG-1) Competencia para el diseño de soluciones a problemas humanos
  • (CG-3) Capacidad de abstracción
  • (CG-5) Competencia para el análisis, selección y utilización de herramientas informáticas básicas y de apoyo
  • (CG-17) Competencia para una actitud positiva ante las futuras nuevas tecnologías y situaciones
  • (CG-28) Motivación por la calidad

Resultados de Aprendizaje

El alumno deberá ser capaz de obtener los siguientes resultados de aprendizaje propios del Grado en Ingeniería del Software:

  • RA.P-3. Analizar, diseñar, desarrollar, seleccionar, evaluar y mantener aplicaciones y sistemas informáticos, asegurando su fiabilidad y calidad aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software, eligiendo el paradigma y los lenguajes de programación más adecuados, considerando las limitaciones derivadas del coste, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones. [Com.1] [Com.8] [ISW.1] [ISW.4] [ISW.6] [CG-1] [CG-3]
  • RA.P-4. Conocer y aplicar procedimientos algorítmicos básicos, tipos y estructuras de datos más adecuados a la resolución de un problema, analizando la idoneidad y complejidad de los mismos. [Com.7] [CG-3]
  • RA.P-6. Capacidad de dar solución a problemas de integración en función de las estrategias, estándares y tecnologías disponibles. [CG-1]
  • RA.P-8. Conocer las nuevas tecnologías empleadas por los lenguajes de programación, análisis de su tendencia y capacidad de juicio para el análisis de nuevas tecnologías y paradigmas [CG-17]

1.    Conceptos básicos del diseño de lenguajes de programación

  • Definiciones básicas
  • Tipos de procesadores de lenguajes
  • Distintos usos del diseño de lenguajes de programación
  • Arquitectura de los procesadores de lenguajes
  • Fases del procesamiento de lenguajes
  • Front-end y back-end

2.    Análisis léxico

  • Objetivos del análisis léxico
  • Expresiones regulares y gramáticas libres de contexto
  • Implementación de analizadores sintácticos con ANTLR

3.    Análisis sintáctico

  • Objetivos del análisis sintáctico
  • Derivaciones y árboles sintácticos
  • Gramáticas ambiguas
  • Estrategias de análisis sintáctico
  • El generador de analizares sintácticos ANTLR
  • Árboles de sintaxis abstracta

4.    Análisis semántico

  • Introducción
  • Objetivos del análisis semántico
  • Gramáticas atribuidas
  • Evaluación de gramáticas atribuidas
  • Fase de identificación (resolución de símbolos)
  • Comprobación de tipos

5.    Lenguajes y representaciones intermedias

  • Introducción
  • Representaciones intermedias de alto nivel
  • Representaciones intermedias de medio nivel
  • Representaciones intermedias de bajo nivel

6.    Generación de código

  • Introducción
  • Entorno de ejecución
  • Técnicas básicas de generación de código
  • Generación de código de estructuras de datos
  • Generación de código de sentencias de control de flujo
     

Las actividades y metodología a utilizar son:

  • Clases expositivas dialogadas en las que se exponen los elementos propios del diseño de lenguajes de programación descrito. El objetivo de estas clases es crear la base para que puedan, posteriormente, resolver los casos prácticos que se le planteen (competencias Com.1, Com.7, ISW.1, ISW.4, CG.3, CG-5, CG-17).
  • Prácticas de aula y de laboratorio se plantearán problemas reales en los que se analizarán cómo los conceptos aprendidos son aplicados en el diseño y construcción de lenguajes de programación (competencias Com.8, ISW.6, CG.1).
  • Como trabajo autónomo, el alumno deberá realizar las actividades descritas por el profesor. Estas actividades siguen la metodología basada en un proyecto: las actividades son incrementales para obtener, finalmente, un único producto (proyecto); la implementación de un procesador de lenguaje (competencias CG-28).
  • Como trabajo autónomo, el alumno deberá ser capaz de leer y practicar con el material referenciado por el profesor (competencias CG-17).

La siguiente tabla desglosa por temas y horas las actividades anteriormente descritas:

TRABAJO PRESENCIAL

TRABAJO NO

PRESENCIAL

Temas

Horas totales

Clase Expositiva

Prácticas de aula /Seminarios/ Talleres

Prácticas de laboratorio

Tutorías grupales

Sesiones de Evaluación

Total

Trabajo grupo

Trabajo autónomo

Total

Tema 1

10

2

2

4

6

6

Tema 2

15

3

1

2

1

8

9

Tema 3

40

5

2

8

1

16

1

23

24

Tema 4

32

5

2

6

13

1

18

19

Tema 5

13

2

1

2

5

8

8

Tema 6

40

4

1

8

1

2

16

1

23

24

Total

150

21

7

28

2

2

60

4

86

90

Lo siguiente es un resumen de horas en función del método utilizado:

MODALIDADES

Horas

%

Totales

Presencial

Clases Expositivas

21

14%

60

Práctica de aula / Seminarios / Talleres

7

4,7%

Prácticas de laboratorio / campo / aula de informática / aula de idiomas

28

18,7%

Prácticas clínicas hospitalarias

Tutorías grupales

2

1,3%

Prácticas Externas

Sesiones de evaluación

2

1,3%

No presencial

Trabajo en Grupo

4

2,67%

90

Trabajo Individual

86

57,33%

Total

150

100%

150

De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir actividades de docencia no presencial. En dicho caso, se informará al estudiantado de los cambios efectuados.

La asignatura tendrá una evaluación de la parte más teórica y conceptual, en la que se evaluará el grado de adquisición de conceptos, abstracciones y habilidades propios de las competencias Com.1, Com.8, ISW.4, GG-1, CG-3, CG-5, CG-17, CG-28.

En la evaluación práctica se utilizará un ordenador por alumno, evaluando las siguientes competencias: Com.7, Com.8, ISW.1, ISW.4, ISW.6, CG-1, CG-3, CG-5, CG-28. La práctica consistirá en del desarrollo de un procesador de lenguaje en las prácticas de laboratorio, cuya evaluación consistirá en la ampliación o modificación del trabajo realizado por el alumno de forma individual en las clases anteriores y de una forma autónoma.

Dependiendo de la convocatoria, la evaluación se realizará de forma distinta:

Convocatoria Ordinaria

Esta convocatoria posee evaluación continua. Para aprobar en esta convocatoria, se requiere un porcentaje de asistencia superior o igual al 90% de las prácticas.

La nota se compone de la calificación de un control parcial, un examen de teoría y un examen práctico. En el sexto laboratorio se realizará un control de la práctica del alumno, calificándolo como apto o no apto (en caso de impartir menos de 13 laboratorios, el control podría celebrarse en el quinto laboratorio). En el examen práctico se tendrá que diseñar y/o implementar una extensión y/o modificación de la práctica desarrollada en el laboratorio por el alumno.

Para aprobar es necesario tener:

  • La calificación de apto en el control parcial de prácticas.
  • 5 puntos sobre 10 en el examen de teoría.
  • 5 puntos sobre 10 en el examen de prácticas.

En caso de cumplir las condiciones anteriores, la nota final se calculará como el 60% del examen final de teoría y el 40% para del final práctico.

En caso de no superarse alguna de las condiciones requeridas para aprobar y haberse presentado a pruebas de evaluación ponderadas por al menos el 50% del peso total, la nota final será de Suspenso. En dicho caso, si además la nota numérica resultante fuese superior a 4 puntos, la nota numérica final de la evaluación será de 4 puntos.

Convocatorias Extraordinaria, Adelantada y de Finalización de Estudios

La evaluación se trata de un único examen teórico-práctico. La nota final se calculará como el 60% de las preguntas de teoría y el 40% de la parte práctica. La parte práctica consistirá en diseñar y/o implementar una extensión y/o modificación de la práctica desarrollada durante el curso por el alumno.

Para aprobar es necesario tener:

  • 5 puntos sobre 10 en las preguntas de teoría.
  • 5 puntos sobre 10 en la parte práctica.

En caso de no superarse alguna de las condiciones requeridas para aprobar, la nota final será de Suspenso. En dicho caso, si además la nota numérica resultante fuese superior a 4 puntos, la nota numérica final de la evaluación será de 4 puntos.

Modelo de Evaluación Diferenciado

Para aquellos alumnos a los que se les conceda el sistema de evaluación diferenciada, no deberán satisfacer el porcentaje de asistencia del 90% para la convocatoria ordinaria. El resto del sistema de evaluación se aplicará exactamente igual, incluyendo el control parcial de prácticas de la convocatoria ordinaria.

De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir métodos de evaluación no presencial en cualquier convocatoria. En dicho caso, se informará al estudiantado de los cambios efectuados.

El material de la asignatura, la descripción de las actividades, referencias adicionales y método de carga de las actividades a realizar por el alumno, será incluido en el campus virtual de la Universidad de Oviedo.

La bibliografía adicional más relevante es:

  • Compilers: Principles, Techniques, and Tools (2nd Edition). Alfred V. Aho, Monica S. Lam. Addison Wesley, 2006.
  • The Definitive ANTLR 4 Reference (2nd Edition). Terence Parr. Pragmatic Bookshelf, 2013
  • Programming Language Processors in Java: Compilers and Interpreters. David A. Watt y Deryck F. Brown. ISBN 0-13-025786-9. Prentice Hall. Pearson Education. 2000.
  • Construcción de Compiladores. Principios y Práctica. Kenneth C. Louden. ISBN 970-686-299-4. Editorial Thomson. 2004.
  • Análisis Semántico en Procesadores de Lenguaje. Francisco Ortín, J.M. Cueva, M.C. Luego, A.A. Juan, J.E. Labra, R. Izquierdo. ISBN: 84-688-6208-8. Sevitec. 2004.