Grado en Ingeniería de Sistemas de Telecomunicación

Fórmate para trabajar como Ingeniero de Telecomunicación y desarrollarás tu carrera en un sector estratégico y en constante crecimiento

Lenguajes de programación

Descripción: 

Los lenguajes de programación se pueden estudiar desde tres perspectivas diferentes: como el programador, como el diseñador y como desarrollador. En esta asignatura se estudian desde el punto de vista del desarrollador del lenguaje. Implementar un lenguaje significa “escribir” un compilador o intérprete. En la asignatura se estudian las técnicas relacionadas con la compilación, así como las características que conforman los diferentes lenguajes de programación.

Tipo asignatura
Optativa
Semestre
Segundo
Créditos
6.00

Profesores Titulares

Conocimientos previos: 

Diseño y programación orientados a objetos

Programacion avanzada y estructura de datos

Sistemas digitales y microprocesadores

Objetivos: 

Se conocen los fundamentos básicos para la definición formal de lenguajes de programación. Se conocen las técnicas para la implementación de lenguajes de programación.

Contenidos: 

  • Módulo: Lenguajes de programación
    1. Historia. Estadístiques
    2. Clasificación.
      1. Paradigmas. Esencia. Ejemplos.
      2. Niveles. Definición. Ejemplos
      3. Compilados/Interpretados. Definición. Ejemplos
    3. Características/Atributos de un buen lenguaje
    4. Componentes de un LP
    5. Puntos de vista/Roles. Programador, Diseñador, Implementador
    6. Casos de estudio
  • Módulo: Lenguajes formales
    1. Lenguajes. Gramáticas. Maquinas.
    2. Clasificación de Chomsky. Lenguajes regulares, libres de contexto, sensitivos al contexto y sin restricciones.
    3. Gramáticas. Derivación. Árbol sintáctico. Lenguaje generado
    4. Lenguajes regulares. Expresiones regulares. Gramáticas regulares
    5. Autómatas de estados finitos. Deterministas y no deterministas. Implementación. Aplicaciones
    6. Lenguajes libres de contexto. Gramáticas libres de contexto.
    7. Autómatas de pila. Deterministas y no deterministas. Implementación. Aplicaciones
    8. Semántica. Gramática de atributos. Implementación. Aplicaciones
  • Módulo: Compiladores e intérpretes
    1. Compiladores e intérpretes. Estructura de un compilador. Estructura de un intérprete
    2. Un compilador en el proceso de ejecución. Un intérprete en el proceso de ejecución
    3. Análisis lexicográfico
    4. Análisis sintáctico
    5. Análisis semántico. Traducción dirigida por sintaxis
    6. Generación de código

Metodología: 

Las clases de la asignatura de lenguajes de programación quieren mostrar los conocimientos básicos de los lenguajes de programación en su concepción y diseño. De igual forma, des de la asignatura se busca reforzar el pensamiento crítico del alumno introduciéndolo al entorno de investigación en lenguajes de programación. Es una asignatura donde se combinan las clases magistrales y las discusiones/debates en clase sobre los distintos temas propuestos en el temario, con prácticas grupales para asentar los conocimientos teóricos adquiridos así como la autonomía del alumno y sus capacidades de trabajo en grupo. El profesor propondrá temas (o artículos a leer) para que el alumno pueda prepararlos y debatirlos en clase con exposiciones orales.

Evaluación: 

La asignatura tiene la duración de un semestre y consta de dos partes diferenciadas: la parte de conocimientos y la práctica de la asignatura. La evaluación de los conocimientos y de la práctica será independiente. Para aprobar la asignatura será necesario aprobar de forma independiente los conocimientos y la práctica.

Criterios evaluación: 

Se avaluará:
- La correcta comprensión y aplicación de los conceptos teóricos fundamentales vistos en clase
- La capacidad de analizar y definir las características de un lenguaje de programación
- Saber diseñar e implementar un compilador moderno con sus módulos/fases correspondientes
- La capacidad de razonar decisiones de diseño de software 
- Elaborar documentación técnica de calidad y consistente con el proyecto implementado

Bibliografía básica: 

Aho, Alfred. Compilers: Principles, Techniques, and Tools (2006)

Material complementario: 

Mozota, María Antonia. Teoria de la compilació: Anàlisi Lèxic i Sintàctic. Guia d’estudi. Creative Commons Licence Deed (2009)
Mozota, María Antonia. Teoria de la compilació: L’Anàlisi Semàntica i la Generació del codi. Guia d’estudi. Creative Commons Licence Deed (2009)
Larus, James R.. Assemblers, Linkers, and the SPIM Simulator. Appendix A
Pratt, Terrence W. and Zelkowitz, Marvin V. Programming Languages: Design and Implementation (Fourth edition). Prentice-Hall. 2001.
MacIntyre, Peter B. PHP: the good parts. O'Reilly (2010)
Flanagan, David and Matsumoto, Yukihiro. The ruby programming language. O'Reilly (2008)
Phoenix, Tom Schwartz, Randal L. and Foy, Brian D. Learning Perl. O'Reilly (2008)
Lutz, Mark. Learning Python. O'Reilly (2009)
Lutz, Mark. Programming Python. O'Reilly (2010)