Sintaxis y Semántica de los Lenguajes

Ciencias de la Computación

ISI-205 • Nivel 2

Créditos

4

Horas Estimadas

38h

Temas

11

Correlativas

Temario

1

Gramáticas y lenguajes formales

Definición formal, derivaciones, árboles, ambigüedad

3h 20min

2

Jerarquía de Chomsky

Regulares, libres de contexto, sensibles, enumerables

3h 0min

3

Autómatas finitos

AFD, AFN, minimización, equivalencia, Pumping

4h 0min

4

Expresiones regulares

Sintaxis, equivalencia AFN, aplicación (grep, lex)

3h 0min

5

Gramáticas independientes del contexto

Formas normales, simplificación, parsing

3h 20min

6

Autómatas push-down

AP determinista y no determinista, parsing LL/LR

4h 0min

7

Análisis sintáctico

Descendente recursivo, LL(1), shift-reduce, LR(0)

4h 20min

8

Máquinas de Turing

Definición, variantes, decidibilidad

3h 20min

9

Semántica de lenguajes

Estática, tipado, ámbito, operacional

3h 0min

10

Análisis semántico

Tabla de símbolos, verificación de tipos

3h 0min

11

Proceso de compilación

Fases: léxico, sintáctico, semántico, optimización

3h 20min

Metodología

Teoría

Clase teórica sobre paradigmas de programación, semántica, tipos de datos y comparación de lenguajes.

Práctica

Laboratorio de programación en múltiples paradigmas: imperativo, orientado a objetos, funcional, lógico.

Actividades

  • Implementación en Haskell (funcional)
  • Implementación en Prolog (lógico)
  • Implementación en Python/Java (OOP)
  • Comparación de paradigmas
  • Trabajos Prácticos de programación

Evaluación

Regularidad

Aprobar como mínimo 2 parciales con nota >= 4. Asistencia regular obligatoria (80% mínimo).

Promoción

Examen final escrito y práctico de programación en múltiples paradigmas.

Recuperatorio

Recuperatorio en el primer semestre del año siguiente.

Objetivos de Aprendizaje

  • Comparar y contrastar paradigmas de programación.
  • Implementar soluciones usando programación funcional.
  • Implementar soluciones usando programación lógica.
  • Comprender los fundamentos teóricos de los lenguajes de programación.

Competencias

  • Programar en al menos tres paradigmas distintos.
  • Analizar ventajas y desventajas de cada paradigma.
  • Implementar algoritmos funcionales y lógicos.
  • Comparar lenguajes de programación según sus características.

Ejercicios Tipo Parcial

Programación funcional

3/5

Implementar en Haskell una función que filtre números pares y los multiplique por 2.

Solución: f = map (*2) . filter even

Programación lógica

3/5

Escribir en Prolog un programa que determine si un número es primo.

Solución: primo(N) :- N>1, forall(between(2,N-1,I), N mod I == 0).

Preguntar al Tutor

Resolvé dudas sobre esta materia

Practicar

Ejercicios adaptativos por tema

Crear Flashcards

Repetición espaciada para memorizar

Cargando materiales...