Créditos ECTS Créditos ECTS: 4.5
Horas ECTS Criterios/Memorias Trabajo del Alumno/a ECTS: 73 Horas de Tutorías: 0.5 Clase Expositiva: 16 Clase Interactiva: 23 Total: 112.5
Lenguas de uso Castellano, Gallego
Tipo: Materia Ordinaria Grado RD 1393/2007 - 822/2021
Departamentos: Electrónica y Computación
Áreas: Arquitectura y Tecnología de Ordenadores, Ciencia de la Computación e Inteligencia Artificial
Centro Escuela Técnica Superior de Ingeniería
Convocatoria: Segundo semestre
Docencia: Con docencia
Matrícula: Matriculable
El objetivo de esta asignatura es introducir los conceptos, etapas y elementos fundamentales de la compilación de los lenguajes imperativos. Estos conocimientos han de servir para: 1) Mejorar la comprensión de los compiladores (eficiencia, límites del lenguaje, etc.) y de los lenguajes de programación. 2) Realizar una implementación práctica de analizadores sencillos y eficientes.
Contenidos teóricos
1. Introducción a la compilación.
2. Análisis léxico.
3. Análisis sintáctico.
4. Análisis semántico.
5. Generación y optimización de código.
Contenidos prácticos
Se diseñarán e implementarán aplicaciones de análisis y generación de código correspondientes a las distintas fases de la compilación abordadas en la teoría.
BIBLIOGRAFÍA BÁSICA
A.V. Aho, R. Sethi, J.D. Ullman. Compiladores. Principios, técnicas y herramientas. 1ª Edición. Addison Wesley Longman, 1990. ISBN: 9684443331
BIBLIOGRAFÍA COMPLEMENTARIA
A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman. Compiladores. Principios, técnicas y herramientas. 2ª Edición. Pearson Educación, 2008. ISBN: 8588639246
D. Grune, H. E. Bal, C.J.H. Jacobs, K.Langendoen. Diseño de Compiladores Modernos. McGraw-Hill/Interamericana de España, S.A.U, 2007. ISBN: 8448156560
J. Levine. lex & yacc. O’Reilly, 1992. ASIN: B009THDEBC
M. Alfonseca, M. de la Cruz, A. Ortega, E. Pulido. Compiladores e Intérpretes: teoría y práctica. Pearson Educación, 2006. ISBN: 8483226928
D. Galles. Modern Compiler Design. Scott/Jones Inc. 2005. ASIN: B01JXQI90O
K.D. Cooper, L. Torczon. Engineering a compiler. Morgan Kaufmann, 2004. ISBN: 012088478X
J.E. Hopcroft, R. Motwani, J.D. Ullman. Introdución a la teoría de autómatas, lenguajes y educación. Pearson Educación, 2007. ISBN: 8478290885
Con carácter general contribuir a conseguir las competencias recogidas en la memoria del título de Grado en Ingeniería Informática de la USC (CG1, CG4, CG5, CG6, CG8, CG9, TR1, TR2, TR3, FB3, FB4, FB5, RI1, RI5, RI6, RI7, RI9, RI10, TI2). En particular, conocer las técnicas de implementación de traductores de lenguajes de programación.
Con carácter específico, la materia debe permitir conseguir las siguientes competencias:
1. Capacidad para diseñar e implementar un analizador léxico y sintáctico.
2. Capacidad para diseñar e implementar la solución más adecuada para un problema de traducción.
3. Capacidad para usar herramientas generadoras de analizadores léxicos y sintácticos en diferentes lenguajes de programación.
4. Capacidad para entender los principales problemas de la gereración de código máquina y su influencia en el rendimiento.
Clases expositivas: los contenidos teóricos de la materia se explicarán en el aula, haciendo uso de una pizarra y de materiales audiovisuales, y se apoyarán en la realización de ejercicios y en el análisis de casos prácticos. Se realizará un trabajo orientado a desarrollar las competencias CG4, CG8, CG9 (mediante una discusión crítica sobre los problemas propuestos que justifique el consiguiente desarrollo de la ciencia y la tecnología y justifique así la toma de decisiones); TR1 y TR2 (en la capacidad de análisis y síntesis, así como en la toma de decisiones a partir de los problemas propuestos, y en el razonamiento crítico y compromiso ético); FB3, FB4, FB5 (en el tipo de contenidos que recoge el programa de la materia); RI1, RI5, RI6, RI9, RI10, TI2 (como capacidades atribuibles a una materia que desarrolla los tópicos de "Compiladores e Intérpretes").
Clases interactivas: durante las clases expositivas se expondrá un conjunto de problemas cuya resolución se llevará a cabo en el laboratorio de informática, con la ayuda de una computadora. Se realizará en este contexto un trabajo orientado a desarrollar las competencias CG1 (en tanto que los trabajos se proponen como proyectos que involucran las fases de análisis, diseño, planificación, documentación e implementación); CG5 y CG6 (en tanto que involucramos decisiones de ingeniería del software e integración de tecnologías); CG8, CG9 y TR3 (en particular en lo que atañe al estímulo a la iniciativa, la creatividad, y a la toma de decisiones autónoma); RI7 (en la utilización de aquellas estructuras de datos y algoritmos más adecuados para los problemas propuestos), y otras competencias RI y TI que resultan de trasladar a la práctica los conceptos discutidos en las clases expositivas.
OPORTUNIDAD ORDINARIA
La evaluación de la materia se realizará mediante un examen escrito que supondrá el 50% de la nota final. Para aprobar la materia se requiere aprobar este examen. La evaluación de esta parte de la materia comprende las competencias CG8, CG9, TR1, TR2, FB3, FB4, FB5, RI6, RI9, RI10.
Será también un requisito imprescindible para la superación de la materia tanto la asistencia como la evaluación positiva de todas las prácticas propuestas, que supondrán el 50% de la nota final. El control de la asistencia a las actividades de prácticas se realizará mediante control de firmas. Esta evaluación se realizará de manera continua en el laboratorio. De no superar las prácticas el alumno deberá presentarse a un examen práctico. La evaluación comprende las competencias CG1, CG4, CG8, CG9, TR1, TR2, TR3, FB3, FB4, FB5, RI1, RI5, RI6, RI7, RI9, RI10 y TI2.
La condición de "NO PRESENTADO" en la evaluación de la materia se define por la ausencia del alumno en el examen escrito.
OPORTUNIDAD DE RECUPERACIÓN
La evaluación de la materia se realizará mediante un examen escrito (50% de la nota final) y la evaluación positiva de las prácticas realizadas en la oportunidad ordinaria (50% de la nota final). Es obligatorio haber superado la evaluación de las prácticas durante el cuatrimestre en el que están programadas. La condición de "NO PRESENTADO" en la evaluación de la materia se define por la ausencia del alumno en el examen escrito.
EVALUACIÓN DE LOS REPETIDORES
Será la misma que la de los no repetidores salvo que se podrán mantener las calificaciones de la parte práctica.
Para los casos de realización fraudulenta de ejercicios o pruebas será de aplicación lo recogido en la Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones.
- Estudio autónomo: 28 horas
- Escritura de ejercicios, conclusiones u otros trabajos: 10 horas
- Programación y otros trabajos en ordenador: 25 horas
- Preparación de trabajos, proyectos, exámenes: 7.5 horas
Se recomienda llevar el estudio teórico y la realización de prácticas y problemas al día. Igualmente, consideramos importante hacer un buen aprovechamiento de las tutorías para la resolución más inmediata de las dudas.
Esta materia se imparte en castellano. Para cursar esta materia se recomienda haber superado las de Programación I, Programación II, Fundamentos de Computadores, Arquitectura de Computadores e Teoría de Autómatas e Linguaxes Formais.
Paulo Felix Lamas
Coordinador/a- Departamento
- Electrónica y Computación
- Área
- Ciencia de la Computación e Inteligencia Artificial
- Teléfono
- 881816422
- Correo electrónico
- paulo.felix [at] usc.es
- Categoría
- Profesor/a: Titular de Universidad
Francisco Fernández Rivera
- Departamento
- Electrónica y Computación
- Área
- Arquitectura y Tecnología de Ordenadores
- Teléfono
- 881816470
- Correo electrónico
- ff.rivera [at] usc.es
- Categoría
- Profesor/a: Catedrático/a de Universidad
Martes | |||
---|---|---|---|
18:00-20:00 | Grupo /CLIL_01 | Castellano | IA.01 |
Miércoles | |||
09:00-10:00 | Grupo /CLE_01 | Castellano | IA.S1 |
12:00-14:00 | Grupo /CLIL_04 | Castellano | IA.03 |
Jueves | |||
09:00-10:00 | Grupo /CLE_01 | Castellano | IA.S1 |
10.01.2025 10:00-14:00 | Grupo /CLE_01 | Aula trabajo |
10.01.2025 10:00-14:00 | Grupo /CLIL_01 | Aula trabajo |
10.01.2025 10:00-14:00 | Grupo /CLIL_02 | Aula trabajo |
10.01.2025 10:00-14:00 | Grupo /CLIL_03 | Aula trabajo |
10.01.2025 10:00-14:00 | Grupo /CLIL_04 | Aula trabajo |
28.05.2025 16:00-20:00 | Grupo /CLE_01 | Aula A2 |
28.05.2025 16:00-20:00 | Grupo /CLIL_01 | Aula A2 |
28.05.2025 16:00-20:00 | Grupo /CLIL_02 | Aula A2 |
28.05.2025 16:00-20:00 | Grupo /CLIL_03 | Aula A2 |
28.05.2025 16:00-20:00 | Grupo /CLIL_04 | Aula A2 |
02.07.2025 10:00-14:00 | Grupo /CLIL_01 | Aula A2 |
02.07.2025 10:00-14:00 | Grupo /CLIL_02 | Aula A2 |
02.07.2025 10:00-14:00 | Grupo /CLIL_03 | Aula A2 |
02.07.2025 10:00-14:00 | Grupo /CLIL_04 | Aula A2 |
02.07.2025 10:00-14:00 | Grupo /CLE_01 | Aula A2 |