Principios de Lenguajes de Programación


Semestre:

Fecha de elaboración:

Agosto de 2013

Fecha de revisión:

Febrero de 2014

Elaborado por:

Lorena Díaz González

Ciclo de formación:

Básico

Área curricular:

Ciencias de la Disciplina

Tipo de unidad:

Teórica

Carácter de unidad:

Obligatoria

Clave:

PL01FB050010

Créditos:

10

Semestre:

Horas Teoría:

5

Horas Práctica:

0

Programas académicos en los que se imparte:

Licenciatura en Ciencias Áreas terminales en Matemáticas, Física, Bioquímica y Biología Molecular, y Ciencias Computacionales y Computación Científica

Prerrequisitos:

Conceptualiza el paradigma de programación estructurada o imperativa. Implementa algoritmos utilizando un lenguaje de programación de alto nivel (como Python) y de medio nivel (como C).

Antecedentes Recomendadas:

Ninguna

Consecuentes Recomendadas:

  • Compiladores
  • Programación Orientada a Objetos y Eventos

Presentación de la unidad de aprendizaje:

Durante la unidad de aprendizaje se definirán los principios de lenguajes de programación y se establecerán las diferencias entre los paradigmas de programación estructural, funcional, lógica y orientada a objetos.


Propósito de la unidad de aprendizaje:

Implementar algoritmos y comprender los conceptos teóricos de los lenguajes de programación, tales como analizador léxico, sintáctico y semántico; funcionamiento de variables y constantes, datos y tipos de datos, expresiones y sentencias, manejo de excepciones y procedimientos, y tipos de datos abstractos y módulos.


Competencias profesionales:

Distinguir diferentes tipos de lenguajes de programación a partir de sus orígenes conceptuales. Reconocer las ventajas y desventajas de los diferentes tipos de lenguajes de programación, con la finalidad de buscar la solución a un problema en particular. Comprender los conceptos modernos de las nuevas generaciones de lenguajes de programación tales como clases, métodos, objetos, herencia, polimorfismo, paquetes genéricos, manejo de excepciones, entre otros. Generalizar los principios y orígenes de la programación funcional y lógica. Identificar los problemas en los cuales es conveniente aplicar la concurrencia y programación paralela.

Contribución al perfil de egreso:

Para el cumplimiento del perfil, se desarrolla la capacidad para identificar, plantear y resolver problemas.


Secuencia temática:

  1. I Conceptos generales e historia.
    1. Panorama histórico.
    2. Criterios para el diseño de lenguajes.
  2. II Sintaxis y semántica de los lenguajes de programación.
    1. 2.1 Descripción sintáctica de los lenguajes de programación. Gramáticas independientes de contexto y BNF.
    2. 2.2 Diagramas y grafos sintácticos. Técnicas y herramientas para análisis sintáctico.
    3. 2.3 Semántica formal.
  3. III Variables y constantes.
    1. 3.1 Atributos: nombre dirección, alias, tipo valor. Espacio y alcance. Concepto de ligadura.
    2. 3.2 Análisis de tipo. Compatibilidad de tipos. Alcance y vida de las variables. Ambiente de referencia. Inicialización de variables.
  4. IV Datos y tipos de datos.
    1. 4.1 Tipos de datos primitivos y compuestos. Tipos de datos definidos por el usuario. Apuntadores y manejo de memoria dinámico.
    2. 4.2 Conversión y equivalencia de tipos. Polimorfismo explícito.
  5. V Expresiones y sentencias.
    1. 5.1 Expresiones aritméticas, relacionales y lógicas.
    2. 5.2 Sobrecarga de operadores.
    3. 5.3 La controversia GOTO.
    4. 5.4 Manejo de excepciones.
  6. VI Procedimientos.
    1. 6.1 Semántica de procedimiento.
    2. 6.2 Mecanismos de paso de parámetros, por valor, por copia, por referencia, etc. Sobrecarga de nombres.
  7. VII Tipos de datos abstractos.
    1. 7.1 Especificación algebraica de tipos de datos abstractos.
    2. 7.2 Mecanismos de tipos de datos abstractos: paquetes en Java y Namespaces C++. Paquetes en Ada. Módulos en ML.
  8. VIII Programación orientada a objetos.
    1. 8.1 Conceptos fundamentales, clases, métodos, objetos. Herencia, polimorfismo.
    2. 8.2 Características de lenguajes representativos del paradigma: Smalltalk, C++, Java, Ada95.
    3. 8.3 Manejo de memoria dinámico y recolección de basura.
  9. IX Programación funcional.
    1. 9.1 Programación funcional en un lenguaje imperativo.
    2. 9.2 Recursión.
    3. 9.3 Lenguajes funcionales.
  10. X Programación lógica.
    1. 10.1 Fundamentos y origen.
    2. 10.2 Prolog: sintaxis y semántica principal.
  11. XI Programación paralela.
    1. 11.1 Introducción al procesamiento paralelo.
    2. 11.2 Lenguajes de programación que soporten la computación paralela: C, C++, Fotran, Java.
    3. 11.3 Introducción a GPUs y CUDA.

Criterios de Evaluación:

  • Exámenes parciales: 40%
  • Examen final: 30%
  • Participación en clase: 10%
  • Búsqueda de información: 10%
  • Otra (especifique): Tareas: 10%


Bibliografía básica:

  • Louden, K. 2011. Programming languages: principles and practice. 3a edición. Ed. Cengage Learning.
  • Sebesta, R. 1998. Concepts of programming language. Ed. Addison-Wesley.

Bibliografía complementaria:

  • Horowitz, E. 1984. Fundamentals of programming languages. Ed. Computer Science Press.
  • Sethi, S. 1989. Programming languages: concepts and constructs. Ed. Adisson Wesley.