Referencias Bibliográficas: [Brookshear and Brylow, 2019b]
Temas
- Programas que toman (otros) programas como entrada, como intérpretes, compiladores, verificadores de tipos, generadores de documentación
- Componentes de un lenguaje:
- Definiciones de alfabetos, delimitadores, oraciones, sintaxis y semántica
- Sintaxis vs semántica
- Programa como un conjunto de oraciones significativas no ambiguas
- Abstracciones básicas de programación: constantes, variables, declaraciones (incluyendo declaraciones anidadas), comando, expresión, asignación, selección, iteración definida e indefinida, iteradores, función, procedimiento, módulos, manejo de excepciones
- Tipos de variables: estáticas, locales, no locales (nonlocal), globales; necesidad y problemas con variables no locales y globales.
- Reglas de ámbito (scope): estático vs dinámico; visibilidad de variables; efectos secundarios (side-effects).
- Entorno (environment) vs almacén (store) y sus propiedades
- Abstracción de datos y de control
- Mecanismos para intercambio de información entre unidades de programa como procedimientos, funciones y módulos: variables no locales, variables globales, paso de parámetros, importación-exportación entre módulos
- Representación de instrucciones de bajo nivel como instrucciones de máquina virtual, lenguaje ensamblador y representación binaria
Aprendizaje esperado (Learning Outcomes)
- Ilustrar el ámbito de variables y visibilidad usando programas simples [Aplicar]
- Ilustrar diferentes tipos de paso de parámetros usando un lenguaje de programación pseudo simple [Aplicar]
- Explicar el efecto secundario usando variables globales y no locales y cómo corregir tales programas [Explicar]
- Explicar cómo los programas que procesan otros programas tratan a los otros programas como sus datos de entrada [Explicar]
- Describir una gramática y un árbol de sintaxis abstracta para un lenguaje pequeño [Describir]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM