Ciclo Académico:
Año de la Carrera: Horas de Clases Semanales Régimen de Cursado
Teoría Práctica Otrosi (1) Anual 1er.Cuatr. 2do.Cuatr. Otros (2)
4TO. 2 2 2 x
(1) Observaciones: CLASES DE CONSULTA (2) Observaciones:
Docente/s
Teoríaii Práctica
R/I Apellido y Nombres Departamento/División R/I Apellido y Nombres Departamento/División
R CASAS SANDRA CS EXACTAS Y NATURALES I REINAGA HECTOR CS EXACTAS Y NATURALES
I VIDAL GRACIELA CS EXACTAS Y NATURALES
Observaciones:
Espacios Curriculares Correlativos Precedentes
Aprobada/s Cod. Asig. Cursada/s (1) Cod. Asig.
Estructura de Datos 1656 Fundamentos de Ciencias de la Computación 1662
Laboratorio de Programación 1660 Programación Lógica y Funcional 1670
Espacios Curriculares Correlativos Subsiguientes
Aprobada/s Cod. Asig. Cursada/s Cod. Asig.
Intérpretes y Compiladores 1678
1- FUNDAMENTACIÓN
El objetivo de la asignatura es introducir los conceptos teóricos relacionados con el diseño, especificación e implementación de lenguajes de programación, y reflejar dicho conocimiento en los lenguajes más representativos de los diferentes paradigmas de programación. Se asume que el alumno esta debidamente familiarizado con la
programación procedural (imperativa – OO) y declarativa. Desde este punto de partida se presentan los
conceptos de programas traductores, simulación y máquinas virtuales. Se ilustran los mecanismos utilizados para implementar un lenguaje procedimental (datos, operaciones, binding, ámbitos de referenciamiento, memoria, pasaje de parámetros, control y subprogramas). Estos mecanismos son presentados como elecciones particulares de situaciones más generales, en las cuales se adoptan otros criterios de especificación y diseñó de lenguajes.
La importancia del estudio de los fundamentos de los Lenguajes de Programación para la formación académica, profesional y personal del estudiante de LeS queda patente en las razones que relacionan T. W. Pratt y M. V.
Zelkowitz, en Programming Languages: Design and Implementation:
• Mejorar la habilidad para desarrollar algoritmos eficaces: muchos LP incluyen características que, cuando se usan de forma apropiada, benefician al programador pero si se usan incorrectamente, pueden desperdiciar grandes cantidades de tiempo de cómputo o conducir al programador a errores lógicos que consumen mucho tiempo.
Unidad Académica Río Gallegos
Programa de:
FUNDAMENTOS DE LENGUAJES DE PROGRAMACION
Cod. EC.1675
Carrera:
LICENCIATURA EN SISTEMAS
Cod. Carr. 072• Acrecentar el propio vocabulario con construcciones útiles sobre programación: el LP sirve a la vez como una ayuda y como una restricción para el pensamiento. Las personas usan el LP para expresar pensamientos, pero también sirve para estructurar la manera en que uno piensa, en la medida en que es difícil pensar en formas que no permiten una expresión directa en palabras.
• Hacer posible una mejor elección del LP: cuando se presenta la situación, un conocimiento de diversos LP puede permitir la elección de un LP que sea precisamente el idóneo para un proyecto particular.
• Facilitar el aprendizaje de un nuevo LP: un lingüista, a través de una comprensión profunda de la estructura subyacente de los lenguajes naturales, suele poder aprender un nuevo idioma con más rapidez y facilidad que el novato esforzado que entiende poco de la estructura incluso de su lengua nativa. De manera similar, un conocimiento concienzudo de diversas construcciones de LP y técnicas de ejecución permite al programador aprender un nuevo LP con más facilidad.
• Facilitar el diseño de un nuevo LP: pocos programadores piensan alguna vez en sí mismos como diseñadores de LP; sin embargo, todo programa tiene una interfaz de usuario que es, de hecho, una forma de LP. La interfaz de usuario se compone de los comandos y formatos de datos que se suministran para que el usuario se comunique con el programa. El diseñador de la interfaz de usuario para un programa grande como un editor de texto, un sistema operativo o un paquete de gráficos debe ocuparse de muchas de las mismas cuestiones que están presentes en el diseño de un LP para usos generales. Este aspecto del diseño de programas se suele simplificar si
el programador está familiarizado con diversas construcciones y métodos de implementación de LP ordinarios.
2- OBJETIVOS GENERALES:
Conocer los mecanismos y aspectos relacionados al diseño e implementación de los lenguajes de programación referentes a datos, operaciones y control.
3- CONTENIDOS MÍNIMOS:
Introducción e historia de los lenguajes de programación. Entidades y Ligaduras. Sistema de Tipos. Niveles de Polimorfismo. Datos y Tipos de datos elementales. Variables. Tipos de Datos estructurados. Tipos de datos abstractos. Operaciones. Expresiones. Control de secuencia entre sentencias. Control de secuencia de subprogramas. Control de datos. Unidades de Programas.
4- ORGANIZACIÓN DE LOS CONTENIDOS – PROGRAMA ANALÍTICO
Unidad 1: Conceptos introductorios.
Lenguaje máquina, lenguaje humano, lenguaje de programación. Compiladores, interpretes y maquinas virtuales. Historia de los lenguajes de programación. Aspectos de evolución de los lenguajes de programación. Importancia, desafíos y objetivos de los lenguajes de alto nivel.
Unidad 2: Sintaxis y Semántica
Métodos formales para describir la sintaxis de los lenguajes de programación. Gramáticas con atributos. Métodos formales para la descripción de la semántica de los lenguajes de programación.
Unidad 3: Nombres, Ligaduras, Chequeo de Tipos y Alcance
Nombres. Variables. Concepto de ligazón. Cheque de tipos. Compatibilidad de tipos. Alcance. Alcance y duración de vida. Ambientes de referencia. Constantes con nombre. Inicialización de variables
Unidad 4: Tipos de datos
Tipos de datos primitivos. Cadenas de caracteres. Tipos de datos ordinales definidos por el usuario. Arreglos. Registros. Uniones. Conjuntos. Punteros. Casos de estudio.
Unidad 5: Expresiones y sentencias de asignación
Expresiones aritméticas. Operadores sobrecargados. Conversiones de tipos. Expresiones lógicas y relacionales. Evaluación de corto circuito. Sentencias de asignación. Asignaciones mixtas Casos de estudio.
Unidad 6: Estructuras de control a nivel de sentencias
4- ORGANIZACIÓN DE LOS CONTENIDOS – PROGRAMA ANALÍTICO
Unidad 7: Subprogramas
Generalidades. Aspectos del diseño de subprogramas. Ambiente local de referencia. Métodos de pasaje de parámetros. Parámetros que son nombres de subprogramas. Subprogramas sobrecargados. Subprogramas genéricos. Registros de Activación. Compilación separada y compilación independiente. Aspectos del diseño de funciones. Acceso al ambiente no local. Operadores sobrecargados diseñados por el usuario. Excepciones - Corutinas. Casos de estudio.
Unidad 8: Implementación de Subprogramas
Semántica general de CALL y RETURN. Implementación de subprogramas en distintos lenguajes. Reglas de alcance estáticas. Bloques. Implementación de las reglas de alcance dinámicas. Implementación de pasaje de parámetros. Casos de estudio.
Unidad 9: Tipos Abstractos de Datos
Concepto de abstracción. Encapsulación. Introducción a la abstracción de datos. Aspecto de diseño. Tipos de datos abstractos parametrizados Casos de estudio.
5- CRITERIOS DE EVALUACIÓN
La evaluación se plantea como un proceso natural por ello se planifica y diseña como una continuidad de las actividades realizadas. Cada unidad temática se evalúa por las aplicaciones desarrolladas en forma grupal y/o individual.
6- METODOLOGÍA DE TRABAJO PARA LA MODALIDAD PRESENCIAL:
A cada módulo del programa le corresponden un conjunto de aplicaciones a desarrollar. La práctica se intercala con la teoría buscando una rápida adquisición y fijación de los conceptos. El alumno puede desarrollarlos en forma grupal y/o individual. El desarrollo del código debe efectuarse en computadora.
7- ACREDITACIÓN : Alumnos Presenciales.
Regularización
Se logra aprobando mediante la presentación y aprobación de todos los casos a desarrollar y el 75% de asistencia a los teóricos y prácticos.
Aprobación Final
Los temas de examen final se asignan previamente a este, dado que deben ser preparados por el alumno. El examen final consiste en el desarrollo de un proyecto en el cual el alumno debe resolver una situación problemática mediante la aplicación de los conceptos, técnicas y herramientas de programación vistas en el curso mas otras (fuertemente relacionadas) en un problema de mediana complejidad. Durante el examen el alumno entrega un escrito y expone el trabajo realizado.
8- METODOLOGÍA DE TRABAJO PARA ALUMNOS EN EL SISTEMA DE ASISTENCIA TÉCNICA PEDAGÓGICA (SATEP)
En la página de la asignatura http://sites.google.com/site/profeprog/ se establecen los horarios de consulta del equipo de cátedra, los alumnos pueden acudir por asistencia en dichos días y horarios. También pueden comunicarse al correo electrónico: [email protected].
Unidad Académica Río Gallegos
Programa de:
FUNDAMENTOS DE LENGUAJES DE PROGRAMACION
Cod. EC.1675
Carrera:
LICENCIATURA EN SISTEMAS
Cod. Carr. 0729- ACREDITACIÓN : Alumnos No Presenciales (SATEP)
Regularización
Entrega de los trabajos prácticos resueltos.
Aprobación Final
Los temas de examen final se asignan previamente a este, dado que deben ser preparados por el alumno. El examen final consiste en la aplicación de las herramientas de programación vistas en el curso mas otras (fuertemente relacionadas) en un problema sencillo pero real. Durante el examen el alumno entrega un escrito y expone el trabajo realizado.
10- METODOLOGÍA DE TRABAJO SUGERIDA PARA EL APRENDIZAJE AUTOASISTIDO (Alumnos Libres)
En la página de la asignatura http://sites.google.com/site/profeprog/ se establecen los horarios de consulta del equipo de cátedra, los alumnos pueden acudir por asistencia en dichos días y horarios. También pueden comunicarse al correo electrónico: [email protected].
Todo el material (apunte, trabajos prácticos y software) está disponible en
https://sites.google.com/site/profeprog/fundamentoslenguajeprogramacion.
11- ACREDITACIÓN : Alumnos Libres
Aprobación Final
Entrega de los trabajos prácticos resueltos, 15 días antes del examen.
VIGENCIA AÑOS 2015 2016 2017
Refer. Apellido/s Año
Edición Título de la Obra Capítulo/ Lugar de Edición Editorial Unidad Bibliotec UA SIUNPA Otro
0-13-678012-1 Pratt T. Y Zelkowitz M. 1998 Lenguajes de Programación, diseño
e implementación. 3ra.ed.
Todos Mexico Prentice Hall UACO
0-201-51858-9 Sethi R. 1992 Lenguajes de Programación:
conceptos y constructores
Todos USA
Addison-Wesley
UACO
0-8053-7133-8 Sabesta R. 1999 Concepts of Programming Languajes.
4ra. Ed.
Todos USA
Addison-Wesley
X
Ghezzi Carlo, Jazayeri Mehdi
1998 Programming Languages Concepts John Wiley
and Sons
X 3ra edicion
COMPLEMENTARIA
Refer. Apellido/s Año
Edición Título de la Obra Capítulo/ Lugar de Edición Editorial Unidad Bibliotec UA SIUNPA Otro
Watt David, 1990 Programming Languages:
Concepts and Paradigms.
Prentice Hall.
Watt David 1991 Programming Languages: Sintaxis
and Semantic.
Prentice Hall
Mitchell, John, 2000 Foundations for Programming
Languages
The MIT Press
X
84-8322-040-7 Meyer B. 1990 Construcción de Software orientada
a Objetos. 2da. Ed.
New York Prentice Hall UACO
968-444-333-1 Aho A., Sethi R,
Ullman J.
1998 Compiladores. Principios, técnicas
y Herramientas
Todos Mexico Addison-
Wesley
X
968-880-205-0 Kerninghan B. Y
Ritchie D.
1991 El lenguaje de programación C,
2da. Ed.
Mexico Prentice Hall UACO
Sánchez Dueñas y Valverde Andreu
Compiladores e Interpretes: un enfoque pragmático
Todos España Ediciones
Unidad Académica Río Gallegos
Programa de: FUNDAMENTOS DE LENGUAJES DE PROGRAMACION Cod. EC. 1675
Carrera: LICENCIATURA EN SISTEMAS Cod. Carr. 072
VIGENCIA AÑOS 2015 2016 2017
· Recursos en Internet
Autor/es Apellido/s Autor/es Nombre/s Título Datos adicionales Disponibilidad / Dirección electrónica
Alexander Winzer, Site de SIMLESEM Technical University of
Vienna, Institute of Information Systems
VISADO
División Departamento Secretaría Académica
Fecha: Fecha: Fecha:
Pag 7
-AÑO Firma Profesor Responsable Aclaración Firma
2015
2016
2017
14- Observaciones
El presente programa se considera un documento que, a modo de "contrato pedagógico", relaciona a los protagonistas del proceso de enseñanza-aprendizaje y constituye un acuerdo entre la Universidad y el Alumno.
Los cuatrimestres tienen como mínimo una duración de 15 semanas.
i
Si el espacio curricular está implementado en una modalidad diferente de teóricos y prácticos, tildar en Otros y consignar esta característica en observaciones
ii