| Denominación de la asignatura | Procesadores de Lenguajes | 
      
        | Curso al que pertenece 
 | Grado en Ingeniería Informática
 | 
      
        | Créditos ECTS 
 | 6 | 
      
        | Curso y cuatrimestre en el que se imparte
 
 | Segundo cuatrimestre | 
      
        | Carácter de la asignatura | Optativa | 
    
    Presentación
  Esta asignatura  se centra en el estudio del desarrollo y construcción de procesadores de  lenguajes y compiladores. Se presentarán los conceptos fundamentales para  entender la importancia de los procesadores de lenguajes fuera del entorno de  compilación. Para ello se estudiarán diferentes tipos de analizadores  sintácticos. Apoyándose en estos analizadores se explicará la traducción  dirigida por la sintaxis para permitir el cambio de representación. Para ello, la asignatura se estructura en 12 temas que pueden organizarse en los siguientes bloques: 
  
    - Introducción.
- Proceso de análisis: análisis léxico, sintáctico y semántico.
- Proceso de síntesis: generación de código intermedio y final.
  
Competencias      
  A continuación se enumeran las competencias que adquirirás al cursar esta asignatura:
      Competencias básicas
      
        - CB1: Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
- CB2: Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
- CB3: Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
- CB4: Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
- CB5: Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
Competencias generales
      
        - CG8: Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.
- CG9: Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
Competencias específicas
      
        - CC02: Capacidad para conocer los fundamentos teóricos de los lenguajes de programación y las técnicas de procesamiento léxico, sintáctico y semántico asociadas, y saber aplicarlas para la creación, diseño y procesamiento de lenguajes.
Competencias transversales
      
        - CT1: Capacidad de innovación y flexibilidad en entornos nuevos de aprendizaje como es la enseñanza on-line.
- CT2: Conocer, y utilizar con habilidad, los mecanismos básicos de uso de comunicación bidireccional entre profesores y alumnos, foros, chats, etc.
- CT3: Utilizar las herramientas para presentar, producir y comprender la información que les permita transformarla en conocimiento.
 
 
  
   Contenidos
   Tema 1. Minería  de texto
     Minería de texto con R
     Identificar términos frecuentes
     Histograma de frecuencias 
     Nube de palabras
   Tema 2. Procesamiento  del lenguaje natural
     Palabras características de un  documento
     Obtener un corpus
     El índice TF-IDF
Cálculo de índice TF-IDF con R
     Visualización de las palabras  características 
Tema 3. Introducción al proceso de compilación
     Compilación e interpretación
     Entorno de ejecución de un compilador
     Proceso de análisis
     Proceso de síntesis
   
     Tema 4. Analizador léxico I
     Conceptos previos
     Implementación del analizador léxico
     Acciones semánticas
   
     
     Tema 5. Analizador léxico II
     Recuperación de errores
     Cuestiones de implementación
   
     Tema 6. Análisis sintáctico 
     Introducción
     Conceptos previos
     Analizadores descendentes
     Analizadores ascendentes
   Tema 7. Análisis sintáctico descendente
Introducción
Analizador LL(1)
   Tema 8. Análisis sintáctico ascendente I
     Introducción
     Analizador LR(0)
     Ejemplo de analizador
   Tema 9. Análisis sintáctico ascendente II
     Analizador SLR
     
     Analizador LR (1)
     Analizador LR (k)
     
     Analizador LALR
   Tema 10. Análisis semántico I
     Introducción
     Traducción dirigida por la sintaxis
     Tabla de símbolos
   Tema 11. Análisis semántico II
     Introducción
     Comprobación de tipos
   Tema 12.  Generación de código y  entorno de ejecución
     Introducción
     Aspectos  de diseño
     Entorno  de ejecución
     Organización  de la memoria   
     Asignación  de memoria 
     Tema 13. Generación de código intermedio
       Introducción
       Representaciones intermedias
       Ejemplos de traducciones.
     
 
   
  
  
  
  Metodología
   
Las actividades formativas de la asignatura  se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las  diferentes capacidades, necesidades e intereses de los alumnos.
  Las actividades formativas de esta asignatura son  las siguientes:
  
    - Trabajos y Lecturas. Se trata de actividades de diferentes tipos: reflexión,  análisis de casos, prácticas,  etc. Además de análisis de textos  relacionados con diferentes temas de la asignatura. 
- Participación en eventos. Son eventos programados todas las semanas del cuatrimestre: sesiones presenciales  virtuales, foros de debate, test.
- Laboratorios. Actividad práctica que se realiza en tiempo real e interactuando con otros alumnos. En el laboratorio los estudiantes tendrán que desarrollar los ejercicios propuestos en un entorno de simulación online. Los estudiantes contarán en todo momento con el apoyo de un tutor de laboratorio, que ayudará al 
      alumno a desarrollar su actividad. El tutor de laboratorio podrá asignar grupos de alumnos para que, de forma 
      colaborativa, alcancen los resultados solicitados. Este tipo de actividad posee un peso considerable en la 
      evaluación continua del alumno, por lo que, a pesar de no ser obligatoria su realización, se recomienda firmemente la participación en los mismos.
En la programación semanal puedes consultar cuáles son las actividades concretas que tienes que realizar en esta asignatura.
  
  Estas  actividades formativas prácticas se completan,  por supuesto, con estas otras:
  
    -  Estudio personal
-  Tutorías. Las tutorías se pueden articular a través de diversas  herramientas y medios. Durante el desarrollo de la asignatura, el profesor  programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las  denominadas “sesiones de consultas”. Como complemento de estas sesiones se  dispone también del foro “Pregúntale al  profesor de la asignatura” a través del cual se articulan algunas preguntas de  alumnos y las correspondientes respuestas en  el que se tratan aspectos generales de la asignatura. Por la propia naturaleza  de los medios de comunicación empleados, no existen horarios a los que deba  ajustarse el alumno. 
-  Examen final presencial
Las horas de dedicación a cada actividad se detallan en la siguiente tabla: 
   
     
       | ACTIVIDADES FORMATIVAS  | HORAS | % PRESENCIAL | 
     
       | Sesiones presenciales virtuales | 15 | 100% | 
     
       | Lecciones magistrales | 6 | 0 | 
     
       | Estudio del material básico | 50 | 0 | 
     
       | Lectura del material complementario | 25 | 0 | 
     
       | Trabajos, casos prácticos, test | 17 | 0 | 
     
       | Prácticas de laboratorios virtuales | 12 | 16,7% | 
     
       | Tutorías | 16 | 30% | 
     
       | Trabajo colaborativo | 7 | 0 | 
     
       | Realización de examen final presencial | 2 | 100% | 
     
       | Total | 150 |  | 
   
 
  
  Puedes personalizar  tu plan de trabajo seleccionando aquel tipo de actividad formativa que se  ajuste mejor a tu perfil. El profesor-tutor te ayudará y aconsejará en el proceso de elaboración de tu plan de trabajo. Y  siempre estará disponible para orientarte durante el curso.
 
   
  
  
  Recomendaciones técnicas
   
Para la correcta participación de los alumnos en las diferentes actividades propuestas en la asignatura se recomienda disponer de un ordenador con las siguientes especificaciones mínimas recomendadas:
  
    - 4 GB de RAM
- Conexión a Internet superior a 6 Mbit/s 
- Cámara web 
- Micrófono
- Altavoces o auriculares
- Sistema operativo Windows o Mac OS (algunas actividades pueden presentar dificultades sobre Linux. En esta circunstancia se recomienda consultar con el profesor de la asignatura)
- Acceso de administrador al sistema (es necesario la instalación de programas, emuladores, compiladores…) 
- Navegador web Netscape, Chrome, Safari o Firefox actualizado (versiones no actualizadas pueden presentar problemas funcionales y/o de seguridad)
 
   
  
  
   
 
  
  Bibliografía
  Bibliografía básica  
  La bibliografía básica es imprescindible para el estudio de la asignatura.  Cuando se indica que no está disponible en el aula virtual,  tendrás  que obtenerla por otros medios: librería UNIR, biblioteca…  
  
    -  Jiménez, J. A. (2009). Compiladores  y procesadores de lenguajes. Servicio de publicaciones de la Universidad de  Cádiz. 
 Disponible en la Biblioteca Virtual de UNIR.
 
-  Aho, Alfred V. (2008). Compiladores: principios, técnicas y  herramientas, (2ª ed.). Pearson Educación, México.
 Disponible en el aula  virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.
Bibliografía complementaria 
     Hack, S. Wilhelm, R. y Seidl, H. (2018). Compiler Design: Code Generation and Machine-Level Optimization. Nueva York: Springer.
     Watson, D. (2017). A Practical Approach to Compiler Construction (Undergraduate Topics in Computer Science). Nueva York: Springer.
   
     
 
    
  
  
  
  
 
 
 
  Evaluación y calificación
El sistema de calificación se basa en la siguiente escala numérica:
  
    | 0 - 4, 9 | Suspenso | (SS) | 
  
    | 5,0 - 6,9 | Aprobado | (AP) | 
  
    | 7,0 - 8,9 | Notable | (NT) | 
  
    | 9,0 - 10  | Sobresaliente | (SB) | 
La calificación se compone de  dos partes principales:
 
El examen se realiza al final del  cuatrimestre y es de carácter PRESENCIAL y OBLIGATORIO. Supone el 60% de la calificación final  y para que la nota  obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.
La evaluación continua supone el 40% de la calificación final. Este  40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas  a cabo durante el cuatrimestre.
Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado en la programación semanal. En ella se detalla la calificación máxima de cada actividad o evento concreto puntuables. 
 Para aprobar la asignatura será necesario aprobar cada una de las partes.
El sistema de evaluación de la asignatura es el siguiente:
  
    
      | SISTEMA DE EVALUACIÓN  | PONDERACIÓN MIN.  | PONDERACIÓN MÁX.  | 
    
      | Prueba de evaluación final presencial | 60% | 60% | 
    
      | Evaluación de prácticas de laboratorios virtuales | 0% | 40% | 
    
      | Resolución de trabajos, proyectos y casos | 0% | 40% | 
    
      | Participación en foros y otros medios participativos | 0% | 40% | 
  
 
   
   
  
  
  Profesorado
  Francisco Javier Almeida Martínez
  Formación: Doctor en Informática. Ingeniero Superior en Informática. Ingeniero Técnico en Informática de Sistemas. Máster en Tecnologías de la Información y Sistemas Informáticos. Máster profesional en Java y Oracle (MPJ).
  Experiencia: Personal docente e investigador en la Universidad Rey Juan Carlos. En la Escuela Superior de Informática. Actualmente Ingeniero de desarrollo en medios de pago y profesor responsable de la especialidad de tecnología en el máster de secundaria en UNIR.
  Líneas de investigación: Generación de visualizaciones educativas, interacción persona – ordenador, informática educativa, usabilidad, diseño de sistemas.
  
  
  
   
 
  
  Orientaciones para el estudio
 
Obviamente, al tratarse de formación on-line puedes organizar tu tiempo de estudio como desees,  siempre y cuando vayas cumpliendo las fechas de entrega de actividades,  trabajos y exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos: 
  - Desde el Campus virtual podrás acceder al aula virtual de cada asignatura  en la que estés matriculado y, además, al aula virtual del Grado. Aquí  podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del  aula virtual y sobre  cómo se organiza una asignatura en la UNIR y también podrás organizar tu plan de trabajo personal con tu  profesor-tutor.
- Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada  semana. 
- Ya sabes qué trabajo tienes que hacer durante la  semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico y práctico del tema  correspondiente a esa semana. 
- Comienza con la lectura de las Ideas clave del tema. Este resumen te ayudará a hacerte una idea  del contenido más importante del tema y de cuáles son los aspectos  fundamentales en los que te tendrás que fijar al estudiar el material básico.  Lee siempre el primer apartado, ¿Cómo  estudiar este tema?, porque allí te especificamos qué material tienes que  estudiar. Consulta, además, las secciones del tema que contienen material complementario (Lo +  recomendado y + Información).
- Dedica tiempo al trabajo práctico (sección  Actividades y Test). En la programación semanal te detallamos cuáles son  las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas. 
- Te recomendamos que participes  en los eventos del curso (sesiones presenciales virtuales, foros de  debate…). Para conocer la fecha concreta de celebración de los eventos debes  consultar las herramientas de  comunicación del aula vitual. Tu profesor y tu profesor-tutor te informarán  de las novedades de la asignatura.
En el aula  virtual del Grado encontrarás siempre disponible la documentación donde te  explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones:  Ideas clave, Lo + recomendado, + Información, Actividades y Test.
  
    | Ten en  cuenta estos consejos… 
  Sea cual sea tu plan de estudio, accede periódicamente al  aula virtual, ya que de esta forma estarás al día de las novedades del  curso y en contacto con tu profesor y con tu profesor tutor.Recuerda que no estás solo: consulta todas tus dudas  con tu profesor-tutor utilizando el correo electrónico. Si asistes a las  sesiones presenciales virtuales también podrás preguntar al profesor sobre el  contenido del tema. Además, siempre puedes consultar tus dudas sobre el temario  en los foros que encontrarás en cada asignatura (Pregúntale al profesor). ¡Participa! Siempre  que te sea posible accede a los foros de debate y asiste a las sesiones  presenciales virtuales. El intercambio de opiniones, materiales e ideas nos  enriquece a todos.Y ¡recuerda!, estás estudiando con metodología on line: tu esfuerzo  y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes  todo para el último día!   |