Download SÍLABO DEL CURSO DE COMPILADORES Y LENGUAJES DE

Document related concepts
Transcript
SÍLABO DEL CURSO DE COMPILADORES Y LENGUAJES DE PROGRAMACIÓN
I. INFORMACIÓN GENERAL
1.1 Facultad
Ingeniería
1.2 Carrera Profesional
Ingeniería en Sistemas Computacionales
1.3 Departamento
1.4 Requisito
II.
1.5 Periodo Lectivo
Algebra Lineal y Numérica
Análisis y Diseño de Algoritmos
2014-1
1.6 Ciclo de Estudios
VIII
1.7 Inicio – Término
24 de marzo de 2014 – 19 de julio del 2014
1.8 Extensión Horario
08 HOTAS TOTALES (04 HC - 04 HNP)
1.9 Créditos
4
SUMILLA
Esta asignatura es de naturaleza teórica y práctica para los estudiantes del VIII ciclo de la carrera de
Ingeniería de Sistemas Computacionales. El curso tiene dos propósitos distintos pero relacionados entre
sí. En primer lugar, se explora la teoría de lenguajes y en segundo lugar, se muestra cómo aplicar esta
teoría a la construcción de compiladores. Los temas principales del curso son: los paradigmas de los
lenguajes de programación, la teoría de lenguajes y el proceso de compilación, describiendo los
componentes de un compilador: análisis léxico, análisis sintáctico, análisis semántico, generación de
código intermedio y código objeto. Los estudiantes realizarán un proyecto de aplicación, utilizando como
lenguaje de programación C/C++ y los generadores de código FLEX y BISON.
III.
LOGRO DEL CURSO
Al terminar el ciclo, el estudiante construye un analizador léxico-sintáctico; utilizando el lenguaje de
programación C/C++ y los generadores de código FLEX y BISON, los principios de la teoría de lenguajes
y la teoría de compiladores; sustentando su funcionamiento y construcción.
IV.
UNIDADES DE APRENDIZAJE
Nombre de Unidad I: Lenguajes de Programación y Teoría de Lenguajes
Logro de Unidad: Al terminar la unidad, el estudiante elabora ejemplos de gramáticas que se usan en los
lenguajes de programación, a partir de la clasificación de gramáticas propuesta por Chomsky, presentando
un listado de al menos 5 ejemplos.
Sem
Saberes
Básicos
HISTORIA DE
LOS
LENGUAJES
DE
PROGRAMACI
ÓN.
1
2
BREVE
REVISIÓN DE
LOS
PARADIGMAS
DE
PROGRAMACI
ÓN: Lenguajes
procedurales,
Lenguajes
orientados
a
objetos,
Lenguajes
funcionales,
Lenguajes
declarativos y
no algorítmicos,
Lenguajes
de
scripts.
LENGUAJES Y
GRAMÁTICAS
3
Alfabeto,
cadena,
gramática,
derivación,
derivación más
a la izquierda,
derivación más
a la derecha,
sentencia,
lenguaje,
clausura,
clausura
Contenidos
Actividades de Aprendizaje
Horas
Horas No
Presenciales
Presenciales
Participa en la
presentación
y
socialización
acerca del sílabo
del curso.
Realiza un resumen
sobre
la
lectura
“Historia
de
los
Lenguajes
de
Programación”.
Participa de la
explicación
del
docente y elabora
un
mapa
conceptual sobre
los lenguajes de
programación.
Elabora una línea de
tiempo
sobre
la
lectura
de
la
Evolución de los
Lenguajes
de
Programación.
Elabora
un
cuadro
comparativo
de
los lenguajes de
programación.
Participa de la
introducción
al
tema
sobre
paradigmas
de
los lenguajes de
programación.
Revisa en forma
grupal
información
acerca de los
paradigmas de la
programación.
Elabora un listado
de las ventajas y
desventajas
de
los
paradigmas
de programación.
Estudia
los
elementos
básicos de los
lenguajes
y
gramáticas
con
ayuda
del
docente.
Identifica
derivaciones
utilizando
ejemplos
gramáticas.
Aplica
las
de
Recursos
Sílabo, PPT,
Lecturas
Criterios de
evaluación
Elabora
organizadores
de
información acerca
de los lenguajes de
programación
identificando
los
aspectos
más
relevantes del tema.
Realiza
un
comentario de la
lectura “Paradigmas
de los Lenguajes de
Programación”.
Averigua y elabora
una
matriz
con
nombres
de
lenguajes
de
programación y los
clasifica según los
paradigmas
estudiados.
PPT, Libros,
Lecturas
Propone un listado
de
ventajas
y
desventajas de los
paradigmas
de
programación
incluyendo
las
características más
importantes.
PPT,
Lista
de
ejercicios,
Libros
Presenta un informe
de
ejercicios
resueltos
sobre
lenguajes
y
gramáticas,
detallando paso a
paso lo aprendido
en clase.
Investiga sobre los
paradigmas
de
programación
no
abordados en clase.
Investiga acerca de
la diferencia entre
clausura y clausura
positiva.
Desarrolla ejercicios
sobre lenguajes y
gramáticas.
operaciones
clausura
ejercicios
gramáticas.
positiva.
Jerarquía
gramáticas
según
Chomsky.
Lenguajes,
Gramáticas
Autómatas.
4
de
y
EXPRESIONES
REGULARES
Expresión
regular
Definición
regular
de
en
de
Identifica
las
gramáticas
de
acuerdo
a
la
Jerarquía según
Chomsky.
Elabora ejemplos
de
gramáticas
según la jerarquía
estudiada.
Define
gramáticas
por cada jerarquía
estudiada.
Desarrolla ejercicios
sobre
expresiones
regulares
PPT,
Lista
de
ejercicios,
Libros
Desarrolla ejercicios
sobre gramáticas y
expresiones
regulares, aplicando
las clasificaciones
estudiadas.
Desarrolla
ejercicios sobre
expresiones
regulares.
Evaluación: (T1): PRACTICA CALIFICADA ESCRITA + Promedio de las Actividades Presenciales y
No Presenciales
Nombre de Unidad II: El compilador: Análisis léxico
Logro de Unidad: Al terminar la unidad, el estudiante construye analizadores léxicos; usando C/C++ y
FLEX, la teoría de lenguajes; presentando la implementación del analizador léxico que reconoce un
programa fuente con precisión.
Contenidos
Sem
Actividades de Aprendizaje
Saberes
Criterios de
ana
Recursos
Horas
Horas No
Básicos
evaluación
Presenciales
Presenciales
Identifica
los
PROGRAMACI
procesos
de
ÓN
DE traducción de los
SISTEMAS
intérpretes,
PROCESADOR compiladores
y
ES
DE ensambladores,
LENGUAJES
diferenciándolos
Investiga y hace un
entre sí.
resumen sobre los
Elabora un gráfico
Intérpretes,
conceptos
básicos
que
muestre
la
Traductores:
Estudia y expone del compilador.
simulación
del
compiladores y sobre
los
proceso
de
PPT,
ensambladores. conceptos
Elabora una matriz
compilación de un
5
Separata,
básicos
del de semejanzas y
fragmento
fuente,
Libros
EL
compilador.
diferencia entre los
demostrando
COMPILADOR
traductores:
creatividad
y
Identifica
la intérpretes,
coherencia con lo
El Compilador
estructura interna compiladores
y
estudiado.
Estructura
de y externa del ensambladores.
compilador.
un compilador
Proceso
de
Compilación
AUTÓMATAS
FINITOS
6
Autómatas
Finitos:
tipos
(AFND, AFD)
Simula el proceso
de compilación de
un
fragmento
fuente.
Estudia
la
definición de los
autómatas y su
clasificación.
Diseña
autómatas
finitos a partir de
gramáticas
regulares.
Identifica a los
autómatas finitos
Desarrolla ejercicios
sobre
autómatas
PPT,
Lista
de
ejercicios,
Libros
Soluciona
correctamente
ejercicios
sobre
autómatas finitos y
expresiones
regulares.
Conversión de
una ER a un
AFND
y diferencia
AFD
de
AFND.
Conversión de
un AFND a un
AFD
Diseña autómatas
finitos a partir de
gramáticas
regulares.
ANÁLISIS
LÉXICO
Análisis léxico
7
Tokens,
lexemas,
patrones
Implementación
del analizador
léxico de un
lenguaje
de
programación.
8
Parte aplicativa
los
los
Desarrolla
ejercicios sobre
autómatas finitos
y
expresiones
regulares
utilizando
algoritmos.
Estudia
e
identifica
los
elementos
del
analizador léxico
y sus funciones
en la compilación.
Desarrolla
ejercicios sobre
análisis léxico.
finitos y expresiones
regulares.
Desarrolla ejercicios
sobre análisis léxico.
Desarrolla
e
implementa
Analizador Léxico.
PPT,
Lista
de
ejercicios,
Libros
Implementa
Analizador Léxico
que reconoce un
programa
fuente
con precisión.
PPT,
Lista
de
ejercicios,
Libros
Implementa
Analizador Léxico
que reconoce un
programa
fuente
con precisión.
Formula proyecto
sobre
Análisis
Léxico.
Formula proyecto
sobre
Análisis
Léxico.
Desarrolla
e
implementa
Analizador Léxico.
EVALUACIÓN PARCIAL
Nombre de Unidad III: El Compilador: Análisis Sintáctico
Logro de Unidad: Al terminar la unidad, el estudiante construye analizadores sintácticos usando C/C++ y
BISON; a partir de la técnica de análisis sintáctico ascendente; presentando la implementación del
analizador sintáctico con orden y precisión.
Contenidos
Sem
Actividades de Aprendizaje
Saberes
Criterios de
ana
Recursos
Horas
Horas No
Básicos
evaluación
Presenciales
Presenciales
ANÁLISIS
Identifica las GLC
SINTÁCTICO
y
sus
propiedades.
Desarrolla ejercicios
Gramática
propiedades
Libres
de Estudia y aplica sobre
de
las
gramáticas
de
Contexto (GLC) definiciones
de
contexto libre.
Soluciona
ambigüedad
y
PPT,
correctamente
Arboles
de recursividad
en
Desarrolla ejercicios Lista
de ejercicios
sobre
derivación.
GLC.
9
sobre
análisis ejercicios,
GCL
y
análisis
sintáctico.
Libros,
sintáctico.
Notación BNF.
Elimina
la
Proyecto
recursividad por
Ambigüedad.
Investiga
sobre
la izquierda con
Recursividad.
implementación de
ayuda
de
Proyecto
sobre
Eliminación de algoritmos.
Análisis Sintáctico.
la recursividad
Desarrolla
por la izquierda
ejercicios sobre
Factorización
por la izquierda.
PROYECTO:
Construcción de
un
analizador
léxico-sintáctico
Analizador
predictivo
recursivo
10
no
Esquema
General.
Algoritmo.
Construcción de
Tabla
de
Análisis.
Analizadores
Ascendentes.
Analizadores
LR.
11,
12
Construcción de
un
analizador
SLR(0): Items.
Gramática
aumentada.
Conjuntos
CLAUSURA y
GOTO.
Colección
Canónica.
Construcción de
tablas
de
análisis.
análisis sintáctico
utilizando árboles
sintácticos.
Formula proyecto
sobre Analizador
sintáctico
Identifica
algoritmo para el
desarrollo
de
análisis
predictivo.
Desarrolla
ejercicios sobre
análisis predictivo
no recursivo
Presenta
resumen
acerca
del
Analizador
predictivo.
Desarrolla ejercicios
sobre
análisis
predictivo
no
recursivo
PPT,
Lista
de
ejercicios,
Libros
Soluciona
correctamente los
ejercicios
propuestos
sobre
análisis predictivo
no recursivo.
PPT,
Lista
de
ejercicios,
Libros
Presenta el listado
de
solución
de
ejercicios
sobre
análisis
sintáctico
LR
mostrando
propiedades
del
análisis y precisión
en su desarrollo.
Participa en la
explicación de los
analizadores
ascendentes.
Identifica
los
analizadores LR y
desarrolla
ejercicios sobre
análisis sintáctico
LR.
Desarrolla
ejercicios sobre
CLAUSURA
y
GOTO.
Investiga y presenta
resumen
sobre
Gramática
aumentada.
Desarrolla ejercicios
sobre
análisis
sintáctico LR.
Construye tablas
de análisis sobre
gramáticas.
Evaluación: (T2): PRACTICA CALIFICADA ESCRITA+ Promedio de las Actividades Presenciales y
No Presenciales
Nombre de Unidad IV: El compilador: Análisis Semántico, Tabla de Símbolos y Síntesis
Logro de Unidad: Al terminar la unidad, el estudiante construye un comprobador de tipos para un
lenguaje de programación; a partir de una gramática de libre contexto; presentando el desarrollo del
comprobador de tipos con orden y precisión
Contenidos
Sem
Actividades de Aprendizaje
Saberes
Criterios de
ana
Recursos
Horas
Horas No
Básicos
evaluación
Presenciales
Presenciales
Estudia en grupos
ANALISIS
material
sobre
SEMANTICO.
Análisis
Presenta
resumen
semántico.
sobre
las
Comprobación
Presenta la solución
especificaciones
de
estática.
PPT,
del
listado
de
Desarrolla
un
comprobador
Lista
de ejercicios
sobre
13
sencillo.
Sistemas
de ejercicios
ejercicios,
comprobación
de
comprobación de
Libros
tipos
mostrando
tipos.
tipos.
Desarrolla ejercicios
precisión.
sobre comprobación
Especificación
Participa en la de tipos.
de
un conversión
de
Comprobador
tipos.
de
sencillo.
Tipos
Conversión
tipos.
de
Generación de
Código
Intermedio.
Formas
Internas. Tipos
de
Formas
Interna
14
15
15
16
17
V.
Semántica de
Operadores de
Formas
Internas.
Estructuras
datos.
de
Semántica
operadores
aritméticos
saltos.
de
Tabla
Símbolos
de
y
GENERACIÓN
DE
CÓDIGO
OBJETO:
Introducción
Participa en la
explicación sobre
generación
de
código
intermedio.
Identifica
las
formas
internas
acerca
de
la
generación
de
código
intermedio.
Desarrolla ejercicios
sobre generación de
código intermedio
PPT,
Lista
de
ejercicios,
Libros
Presenta el listado
de
solución
de
ejercicios
sobre
generación
de
código intermedio
mostrando
precisión.
PPT,
Lista
de
ejercicios,
Libros
Presenta
el
desarrollo
de
ejercicios
sobre
generación
de
código
objeto
demostrando
criterio y precisión
en la solución.
Desarrolla
ejercicios sobre
generación
de
código
intermedio.
Estudia material
en grupo sobre
generación
de
código objeto y
elabora resumen.
Desarrolla ejercicios
sobre generación de
código objeto.
Desarrolla
ejercicios sobre
generación
de
código objeto.
Evaluación T3: PRACTICA CALIFICADA ESCRITA + Promedio de las Actividades
Presenciales y No Presenciales
EVALUACIÓN FINAL: Revisión del Proyecto Analizador Léxico-Sintáctico (En Laboratorio) +
Evaluación escrita de Sustento del Proyecto.
EVALUACIÓN SUSTITUTORIA
ESTRATEGIAS DIDÁCTICAS
 Aprendizaje basado en problemas.
 Estudio de casos.
 Aprendizaje basado en proyectos.
 Aprendizaje cooperativo.
VI.
SISTEMA DE EVALUACIÓN DEL CURSO
El cronograma de la evaluación continua del curso es el siguiente:
ESPECIFICACIÓN DE ACTIVIDADES DE EVALUACIÓN CONTINUA EN EL CURSO
T
Descripción
Semana
T1
Práctica Calificada Escrita + Promedio de las
Actividades Presenciales y No Presenciales
4
T2
Práctica Calificada Escrita + Promedio de las
Actividades Presenciales y No Presenciales
12
T3
Práctica Calificada Escrita + Promedio de las
Actividades Presenciales y No Presenciales
15
El peso de cada T es:
EVALUACIÓN
T1
T2
T3
TOTAL
PESO (%)
20
35
45
100%
ESCALA VIGESIMAL
2,4
4,2
5,4
12
Los pesos ponderados de los resultados de evaluación son los siguientes:
EVALUACIÓN
PARCIAL
CONTINUA (Ts)
FINAL
TOTAL
PESO (%)
20
60
20
100%
ESCALA VIGESIMAL
4
12
4
20
Eventos UPN – Live (dirigido a docentes y estudiantes)
EVENTO
VII.
FECHA
World Leadership Forum (México)
09 y 10 de abril
World Innovation Forum (New York)
04 y 05 de junio
World Business Forum (New York)
07 y 08 de octubre
BIBLIOGRAFÍA
1.
N°
1
Bibliografía Básica
CÓDIGO
005.453
AHO/IN
AUTOR
Aho, A.; Sethi, R.; Ullman, J
TITULO
Compilers: Principles,
Techniques, & Tools
AÑO
2008
005.453 AHO
Aho, A.; Sethi, R.; Ullman, J
2
005.453 RUIZ Ruiz Catalán, Jacinto
3
Llorca, S.; Pascual G.
4
2.
N°
CÓDIGO
1986
Construcción
de 2004
Compiladores Principios
y Práctica.
005.13 LOUD Louden, K.C
Lenguajes
de 2004
Programación: principios
y práctica
005.133
TUCK
Tucker, Allen
Lenguajes
Programación
de 1987
Cueva L, J. M
Conceptos básicos
procesadores
lenguaje
de 1998
de
Cueva L, J. M
Lenguajes, gramáticas y 2001
autómatas
Cueva L, J. M
Análisis Sintáctico
procesadores
lenguaje
Cueva L, J. M
Análisis Semántico
2004
Cueva L, J. M
Tabla de Símbolos
2006
6
7
8
9
AÑO
de 1998
en 2005
de
E-books
CÓDIGO
AUTOR
upneb.ILL071 Alfonseca, Moreno
Aho, A.; Sethi, R.; Ullman, J
2
Compiladores Teoría y
Construcción
Louden, K.C
5
N°
2010
TITULO
Fundamentos
Compiladores
3
1
Compiladores: Teoría e
implementación
AUTOR
Teufel, B. y Schmidt, S
2
3.
1996
Bibliografía Complementaria
1
4
Compiladores principios,
técnicas y herramientas
TITULO
Compiladores
intérpretes:
teoría
practica
AÑO
e 2006
y
Compilers: Principles,
Techniques, & Tools
2008
Páginas Web para consultar en Internet
N°
1
AUTOR
Bison - GNU parsergenerator
2
VIII.
TITULO
Flex: The Fast Lexical Analyzer
LINK
http://flex.sourceforge.net
/
http://www.gnu.org/softw
are/bison/
AÑO
ANEXOS
Competencias Generales UPN
Competencias
1. Liderazgo
2. Trabajo en
Equipo
3. Comunicación
Efectiva
4. Responsabilidad
Social
5. Pensamiento
Crítico
6. Aprendizaje
Autónomo
7. Capacidad para
Resolver
Problemas
8. Emprendimiento
Descripción
Inspira confianza en un grupo, lo guía hacia el logro de una
visión compartida y genera en ese proceso desarrollo personal y
social.
Trabaja en cooperación con otros de manera coordinada,
supera conflictos y utiliza sus habilidades en favor de objetivos
comunes.
Intercambia información a través de diversas formas de
expresión y asegura la comprensión mutua del mensaje.
Asegura que sus acciones producirán un impacto general
positivo en la sociedad y en la promoción y protección de los
derechos humanos.
Analiza e Interpreta, en contextos específicos, argumentos o
proposiciones. Evalúa y argumenta juicios de valor.
Busca, identifica, evalúa, extrae y utiliza eficazmente
información contenida en diferentes fuentes para satisfacer una
necesidad personal de nuevo conocimiento.
Reconoce y comprende un problema, diseña e implementa un
proceso de solución y evalúa su impacto.
Transforma ideas en oportunidades y acciones concretas de
creación de valor para la organización y sociedad.