Ministerio de Educación, Ciencia y Tecnología
Universidad Nacional de San Luis
FACULTAD DE CS. FISICO MAT. Y NAT.

ANEXO II

PROGRAMA DEL CURSO: ANALISIS COMPARATIVO DE LENGUAJES

DEPARTAMENTO DE:   INFORMATICA
AREA: Automatas y LenguajesAÑO: 2001 (Id: 1069)
Estado: En tramite de Aprobación

 

I - OFERTA ACADÉMICA

CARRERAS PARA LAS QUE SE OFRECE EL MISMO CURSO

PLAN DE ESTUDIOS
ORD. Nº

CRÉDITO HORARIO

   

SEM.

TOTAL

LIC. EN CIENCIAS DE LA COMPUTACION11/988120
PROFESORADO EN CIENCIAS DE LA COMPUTACION11/988120

II - EQUIPO DOCENTE

Funciones

Apellido y Nombre

Total hs en
este curso

Cargo y Dedic.

Carácter

Responsable

KAVKA, CARLOS8  hs.PROFESOR ADJUNTO EXC.Efectivo
Co-ResponsableERRECALDE, MARCELO LUIS8  hs.PROFESOR ADJUNTO EXC.Interino
Jefe Trab. Prác.ROGGERO, PATRICIA BEATRIZ8  hs.JEFE DE TRABAJOS PRAC. EXC.Efectivo
Auxiliar de 1ºDNL 8  hs.AYUDANTE DE 1RA. SEMI. Interino

DNL: Docente no listado

III - CARACTERÍSTICAS DEL CURSO

CREDITO HORARIO SEMANAL
MODALIDAD
REGIMEN

Teórico/

Práctico

Teóricas

Prácticas de

Aula

Práct. de lab/ camp/

Resid/ PIP, etc.

2c
0 Hs.
3 Hs.
5 Hs.
0 Hs.
Asignatura
Otro: 
Duración: 14 semanas
Período del 13/08/01 al 17/11/01

IV.- FUNDAMENTACION

Este curso trata sobre los aspectos principales del diseño e
implementación de los lenguajes de programación. También se
incluye la teoría y los modelos formales subyacentes que forman
la base para las decisiones tomadas en la creación de este tipo
de lenguajes.

En este sentido, el curso complementa los contenidos introducidos
en Programación II, donde el énfasis fue puesto en los aspectos
de programación utilizando lenguajes representativos de algunos
de los principales paradigmas de programación.

Ahora la descripción de los lenguajes se realiza por medio de
la arquitectura de hardware y software subyacente que se requiere
para la ejecución de programas escritos en estos lenguajes.

Los modelos formales que dan origen a los principales paradigmas
de programación también son analizados con una visión más general.

Los contenidos del curso se corresponden con las unidades de
conocimiento recomendadas por la ACM/IEEE Computer Society Joint
Curriculum Task Force en 1991, para el área de lenguajes de
programación.

En el convencimiento de que los aspectos básicos del diseño de
compiladores deberían formar parte del conocimiento general de
cualquier buen programador, este curso muestra de que manera son
compiladas las distintas construcciones de los lenguajes.

Los aspectos abordados, relacionados a la teoría formal de
Lenguajes y parsing servirán además como introducción a tópicos
más avanzados a desarrollarse en cursos de la carrera mayor como
Autómatas y Lenguajes y Compiladores.


V.- OBJETIVOS

Al finalizar el curso los alumnos serán capaces de:

Evaluar en forma crítica distintos lenguajes de programación
existentes y futuros.

Responder a cuestiones tales como las motivaciones de la existencia
de tantos lenguajes de programación, cómo y porqué fueron
desarrollados, en que se asemejan y difieren.

Realizar un curso avanzado sobre el estudio del diseño y
construcción de compiladores.

Reconocer los paradigmas claves usados en el desarrollo de
lenguajes de programación modernos, sus bases teóricas,
aplicativas y de implementación.

Entender la implementación de distintos lenguajes con suficiente
detalle como para reconocer la relación entre un programa fuente
y su comportamiento en ejecución.

Extender sus conocimientos sobre los tópicos anteriores con
bibliografía adecuada y mínima supervisión.

 


VI. - CONTENIDOS

UNIDAD 1:
Razones del estudio de lenguajes de programación. Historia de los
lenguajes de programación. Características de un buen lenguaje.
Estándards. Efectos de los ambientes sobre los lenguajes. Ambientes
Batch, interactivos, embebidos, de programació y marcos de trabajos
de ambientes.

UNIDAD 2
La estructura y operación de una computadora. Computadora de
hardware, de firmware y simulada por software. Traductores.
Computadoras virtuales y ligaduras. Tiempos de ligadura. Paradigmas
de lenguajes.

UNIDAD 3
Sintaxis de los lenguajes de programación. Criterios sintácticos
generales. Elementos sintácticos de un lenguaje. Estructura
programa-subprograma general. Etapas en la traducción. Modelos de
traducción formales. Gramáticas BNF. Autómatas finitos. Expresiones
regulares. Autómatas Pushdown. Algoritmos de Parsing eficientes.
Modelos semánticos: gramaticales, imperativos, aplicativos,
axiomáticos y de especificación. Gramáticas de atributos.

UNIDAD 4
Propiedades de tipos y objetos. Tipos de datos. Especificación e
implementación de tipos de datos elementales. Declaraciones.
Chequeo de tipos. Conversión de tipos. Asignación e inicialización.
Tipos de datos numéricos. Enumeraciones. Booleanos. Caracteres.
Internacionalización. Tipos de datos estructurados. Especificación
e implementación. Vectores y arreglos. Registros. Cadenas de
caracteres. Punteros. Conjuntos. Archivos.

UNIDAD 5
Tipos de datos abstractos. Evolución del concepto de tipo de datos.
Ocultamiento de la información. Encapsulamiento mediante
subprogramas. Definiciones de tipo. Equivalencia por nombre y
estructural. Administración de memoria. Administración de memoria
estática. Administración de memoria basada en Stack. Heap con
elementos de tamaño fijo y de tamaño variable.

UNIDAD 6
Control de secuencia explícito e implícito. Secuenciamiento en
expresiones aritméticas. Representación de árbol. Representación
en tiempo de ejecución. Control de secuencia entre sentencias.
Sentencias estructuradas.

UNIDAD 7
Control de subprogramas. Llamada-retorno simple. Subprogramas
recursivos. Variaciones en control de subprograma. Excepciones.
Corutinas. Subprogramas planificados. Comandos en guardia. Tareas.
Sincronización. Control de datos. Ambientes de referenciación.
Alcance estático y dinámico. Estructura de bloques. Datos
compartidos en subprogramas. Parámetros. Pasaje de parámetros.
Ambientes comunes explícitos. Alcance dinámico. Alcance estático.
Desplegado.

UNIDAD 8
Tipos de datos abstractos genéricos. Programación Orientada a
Objetos: Herencia,Polimorfismo y ligadura dinámica. Subclases y
subtipos. Herencia simple y múltiple. Aspectos de diseño en
Smalltalk, C++ y Java.

UNIDAD 9
Programación Lógica. Prolog. Elementos básicos: hechos, consultas
y reglas. Variables. Variables anónimas. Unificación. Reglas
recursivas. Proceso de backtracking. Listas. Functores. Predicados
fail y cut.


VII. - PLAN DE TRABAJOS PRÁCTICOS

Práctico 1: Diseño de Lenguajes

Práctico 2: Algebra de programas para sistemas FP.

Práctico 3: Lenguajes - Aspectos Sintácticos.

Práctico 4 (A): Tipos de Datos.

Práctico 4 (B): Tipos de Datos.

Práctico 5: Tipos de Datos Abstractos - Administración de Memoria.

Práctico 6: Control de Secuencia.

Práctico 7: Control de Secuencia y Datos en Subprogramas.


VIII - RÉGIMEN DE APROBACIÓN

Para regularizar la materia, los alumnos deberán aprobar 1 (un)
parcial que incluye todos los prácticos, con al menos el 70%
correcto. Este parcial tendrá 2 (dos) recuperaciones.

Para promocionar la materia, los alumnos deberán aprobar 1 (un)
parcial que incluye todos los prácticos y todos los contenidos
teóricos, con al menos el 80% correcto. Este parcial tendrá 2 (dos)
recuperaciones.

La materia se podrá rendir como libre, con un exámen que incluye
todos los contenidos teóricos y prácticos.



IX.a - BIBLIOGRAFÍA BÁSICA

\"Programming Languages - Design and Implementation\". Pratt, Terrence
y Zelkowitz, Marvin. Tercera edición. Prentice Hall, 1999.

\"Concepts of Programming Languages\". Sebesta, Robert. Cuarta
Edición. Addison-Wesley, 1999.

\"Programming Languages - A Grand Tour\". Editor: Horowitz, Ellis.
Tercera Edición. Computer Science Press, 1987.

\"El lenguaje de Programación C\". Kernighan, Brian y Ritchie,
Dennies. Prentice Hall, 1991.

Apuntes de la materia de los lenguajes C, C++ y Lisp.

\"Pascal. Manual del usuario e informe\". Wirth, Nicklaus.



IX b - BIBLIOGRAFÍA COMPLEMENTARIA

\"Prolog, programming for artificial intelligence\". Bratko,
Ivan. Addison-Wesley. Tercera Edición, 2001.

\"Smalltalk-80. The Language and its implementation\". Goldberg,
Adele y Robson, David. Addison-Wesley, 1985.



COMPLEMENTO DE DIVULGACION


OBJETIVOS DEL CURSO

El curso tiene como objetivo intrducir al alumno a la problemática
del diseño e implementación de lenguajes, incluyendo fundamentos
teóricos y modelos formales. El estudio se realiza teniendo en
cuenta todos los paradigmas actuales de programación, realizando
un estudio comparativo de las técnicas de implementación de cada
uno de ellos.

 

 

PROGRAMA SINTETICO


Historia de los lenguajes de programación. Evolución de los
paradigmas de programación. Computadoras virtuales. Sistemas de
traducción. Modelos sintácticos: gramáticas, expresiones regulares,
autómatas, autómatas pushdown. Algoritmos de parsing. Modelos
semánticos: gramaticales, imperativos, aplicativos, axiomáticos y
de especificación, gramáticas de atributos. Características
esenciales de los lenguajes de programación y su implementación:
tipos de datos y su representación, control de secuencia y datos.
Programación orientada a objetos. Programación lógica. Prolog.


 


IMPREVISTOS