PROGRAMA DE CURSO. Horas de Trabajo Personal ,5 5,5

Documentos relacionados
PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes. Personal

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes. Personal Resultados de Aprendizaje

PROGRAMA DE CURSO. Código Nombre CC5111 PROGRAMACIÓN AVANZADA EN SCALA Nombre en Inglés ADVANCED PROGRAMMING IN SCALA SCT

PROGRAMA DE CURSO. Metodologías de Diseño y Programación. Nombre en Inglés. Design and Programming Methodologies.

PROGRAMA DE CURSO. Horas de Trabajo Personal Horas de Cátedra

Universidad Tecnológica Nacional Facultad Regional San Francisco. Tecnicatura Superior en Programación PROGRAMACIÓN II

Lenguajes de Programación Programación funcional

ESCUELA SUPERIOR POLITECNICA DEL LITORAL

CAP - Conceptos Avanzados de Programación

CAP - Conceptos Avanzados de Programación

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

Algoritmos y programas. Algoritmos y Estructuras de Datos I

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA ELECTRÓNICA SÍLABO PLAN DE ESTUDIOS 2000

Algoritmos y Programación III

Compiladores e Intérpretes

PROGRAMA DE CURSO. Código Nombre MODELAMIENTO Y OPTIMIZACIÓN Nombre en Inglés MODELING AND OPTIMIZATION SCT

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA

Tipo de Datos Abstractos y Programación Orientada a Objetos

Proyecto: Programación Declarativa: Lenguaje Prolog

Programa del curso IC Taller de programación. Escuela de Computación. Carrera de Ingeniería de Computación, Plan 410.

UNIVERSIDAD AUTÓNOMA DE CHIAPAS FACULTAD DE INGENIERÍA CAMPUS I PROYECTO TERMINAL

ROGRAMA DE CURSO Código Nombre EL4102. Arquitectura de Computadores Nombre en Inglés Computer Organization SCT

PROGRAMA DE CURSO. Personal Resultados de Aprendizaje

SYLLABUS de la Asignatura. Programación INF1201

Introducción a OOP. Programación Orientada a Objeto

Lenguajes de Programación II

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Unidad Académica Responsable: Departamento de Informática y Ciencias de la Computación CARRERA a las que se imparte: Ingeniería Civil Informática

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Metodología de la Investigación

Introducción al Lenguaje "C++"

PROGRAMA DE CURSO. Personal

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

EI MT1008 Programación II

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

INGENIERÍA EN COMPUTACIÓN. INGENIERÍA EN COMPUTACIÓN División Departamento Licenciatura

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST-REQUISITO:

Programa del curso IC Lenguajes de programación. Escuela de Computación. Carrera de Ingeniería de Computación, Plan 410.

Facultad de Ciencias

PROGRAMA DE CURSO. Código Nombre CI4301 Análisis de Sistemas de Transporte Nombre en Inglés System analysis of Transport SCT ,0 2,0 (Taller) 5,0

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

PROGRAMA INSTRUCCIONAL

PROGRAMA DE CURSO. Horas de Trabajo Personal ,0 2,0 5,0. Horas de Cátedra

Universidad Nacional Autónoma de México Facultad de Ciencias Lenguajes de Programación Práctica 2

Lenguajes de Cuarta Generación

Programación bajo UML

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)

Tipos de datos algebraicos

PROGRAMA DE CURSO. Código Nombre CI3201 Análisis de Estructuras Isostáticas Nombre en Inglés Analysis of Structures Isostáticas SCT ,0 2,0 5,0

PLANIFICACIÓN PROGRAMACION II

NOMBRE DE LA ASIGNATURA

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Fundamentos de Programación

PROGRAMA DE CURSO. Horas de Trabajo Personal Horas de Cátedra. Básica. Resultados de Aprendizaje

PROGRAMA DE CURSO. Horas de Trabajo Personal ,0 2,0 5,0. Horas de Cátedra

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

PROGRAMA DE CURSO. Código Nombre MA2601 Ecuaciones Diferenciales Ordinarias. Nombre en Inglés Ordinary Differential Equations SCT ,0 2,0 5,0

Modelo de Orientación a Aspectos

PROGRAMA DE CURSO. Código Nombre MA2001 Cálculo en Varias Variables. Nombre en Inglés Multivariable calculus SCT ,0 2,0 5,0

Ingeniería del Software GUÍA DOCENTE Curso

UNIVERSIDAD DE GUADALAJARA

Programación Orientada a Objetos

Programación I Recursividad.

Tema 4.- Recursión e iteración

Contenido del curso Fundamentos de Lenguajes de Programación

Técnicas y Lenguajes de Programación. Bases de Datos.Técnicas de Computación.ANSI C.

Fundamentos de Programación. Código: Créditos ECTS: 6. Titulación Tipo Curso Semestre Empresa y Tecnología FB 1 2.

Arquitectura y Sistemas de Operativos

FACULTAD DE INGENIERÍA INGENIERÍA EN COMPUTACIÓN UNIDAD DE APRENDIZAJE: ANÁLISIS DE LOS LENGUAJES DE PROGRAMACIÓN.

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

PROGRAMA ANALÍTICO DE ASIGNATURA

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

PROGRAMA DE CURSO. Personal

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

Universidad Tecnológica Nacional - Facultad Regional Córdoba - Departamento de Sistemas

DATOS DE IDENTIFICACIÓN DEL CURSO Ciencias Computacionales Estructuras y algoritmos

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

Evaluación de los aprendizajes Elabora un cuadro comparativo con las principales características del lenguaje de programación Java.

Universidad Salesiana de Bolivia

Lenguajes Formales PLANIFICACIONES Actualización: 1ºC/2017 Planificaciones Lenguajes Formales Docente responsable: KUHN MONICA 1 de 8

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

Torruco, Rubén Jerónimo Yedra Fecha de elaboración: Mayo / 2010 Fecha de última actualización: F1011 Programación orientada a objetos 1/10

División Académica de Informática y Sistemas División Académica Multidisciplinaria de los Ríos Ingeniería en Informática Administrativa

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación

Tema 3 Concepto y Especificación de Tipos Abstractos de Datos

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

PROGRAMA DE CURSO. Código Nombre MANEJO DE NEGOCIOS INTERNACIONALES Nombre en Inglés International Business Management Unidades

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

Dra. Jessica Andrea Carballido

Introducción a la programación

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

Entendiendo expresiones lambda en C# con Mono

PROGRAMA DE CURSO. Código Nombre MA3402 Estadística Nombre en Inglés Statistics SCT Requisitos. DIM Resultados de Aprendizaje

Tema 6: Estructuras de datos recursivas

Transcripción:

Código Nombre CC4101 Lenguajes de Programación Nombre en Inglés Programming Languages SCT PROGRAMA DE CURSO Unidades Docentes Horas de Cátedra Horas Docencia Auxiliar Horas de Trabajo Personal 6 10 3 1,5 5,5 Requisitos Carácter del Curso CC3102 Teoría de la Computación Obligatorio para Licenciatura en Computación. Resultados de Aprendizaje Al término del curso, el alumno demuestra que maneja los lenguajes de programación, sus aplicaciones, semántica, e implementación. Reconoce la definición de varios lenguajes a través de su intérprete, estudiando paso a paso distintos mecanismos, como funciones, recursión, estado, y finalmente objetos. Además, identifica mecanismos para extender lenguajes existentes, en particular macros. Como la gran mayoría del trabajo de definición de lenguajes se hace en Scheme, el alumno maneja este lenguaje, y programación funcional en general. Además, el curso entrega elementos precisos de comparación y descripción de varios lenguajes, algunos ampliamente usados y otros emergentes, como C, Java, Lisp, bash, Haskell, ML, JavaScript, Scala, Self, y Smalltalk. Como la casi totalidad del material bibliográfico es en Inglés, los alumnos profundizan su manejo del Inglés técnico escrito. Metodología Docente Clases expositivas del profesor de cátedra. De manera de relacionar lo conceptual con lo concreto, el profesor combina explicación teórica en la pizarra con demostración en vivo de la implementación de los conceptos vistos, a través de la proyección con data show de la programación de varios lenguajes. Clases auxiliares dedicadas a repasar puntos delicados vistos en clase, explicar ejemplos más extensos, resolver ejercicios propuestos, y preparación pre y post controles. Además, se usa un enfoque de aprendizaje basado en problemas y proyectos para enseñar varios conceptos complementarios, como sistemas de tipos y compilación, los cuales se exploran a través de las tareas Evaluación General Se realizan dos controles para evaluar si se han cumplido los objetivos. El primero evalúa las unidades 1-4, y el segundo las unidades 5-9. El examen evalúa todas las unidades, en particular la parte de la 9 que no llega a evaluarse completamente en el segundo control. Tanto los controles como el examen se enfocan en evaluar que el alumno haya comprendido los conceptos como sus implicancias concretas. La Nota de Control se calcula de la siguiente manera: Promedio ponderado del examen (50%) y del promedio de los controles (50%) Se realizan tres tareas a lo largo del curso. La Nota Final es el promedio de la Nota de Control (50%) y de la Nota de Tareas (50%).

Metodología Docente Evaluación General Las tareas consisten generalmente en implementar lenguajes con mecanismos varios, vistos o no en clase. Las tareas buscan fundamentalmente que el alumno comprenda como definir un lenguaje, y como/cuando aplicar los mecanismos ofrecidos por este. Las tareas son individuales y se promedian a partes iguales para formar la nota de tareas. Controles y tareas se aprueban por separado y deben ser iguales o superiores a 4.0. UNIDADES TEMATICAS 1 Elementos Básicos de Programación Funcional 2 - Definición inductiva de datos - Abstracción de datos - Definición de funciones - Manejo de listas y otras estructuras. - Uso de funciones de orden superior y primera clase. - Reactualice la metodología de programación basada en abstracción de datos, y el procesamiento de datos por funciones recursivas. - Comprenda el uso práctico de funciones de orden superior y de primera clase. Conexión con: C, Java [6] [2] Cap 1-2 [3] [4] 2 Substitución y Funciones de Primer Orden 2 - Interpretar un lenguaje de cálculo aritmético. - Introducción de identificadores en el lenguaje. - Substitución: definición del significado de los identificadores. - Substitución perezosa o temprana. - Funciones simples (primer orden). - Comprenda la estructura básica de un intérprete. - Comprenda el significado de identificadores a través de substitución. Implementa un lenguaje con funciones simples. [1] Cap 1-4

3 Funciones de Primera Clase y Alcance 1.5 - Introducción de ambientes para diferir substitución. - Control del alcance de las variables. - Alcance estático vs. dinámico. - Funciones de primera clase. - Funciones anónimas. Closures vs. punteros de función. - Reconozca la noción de alcance de los identificadores. - Comprenda la diferencia entre alcance estático y dinámico, y en que casos sirven. Comprenda como proveer funciones de primera clase preservando alcance estático. Conexión con: Common Lisp, bash, TeX, excepciones, Java, C. [1] Cap 5-6 [2] Cap 3.1-3.5 4 Regímenes de Evaluación 2 - Evaluación perezosa. - Introducción al lenguaje Haskell. - Manejo de estructuras infinitas. - Implementar evaluación perezosa. - Transparencia referencial y razonamiento ecuacional. - Maneje distintas estrategias de evaluación. Comprenda en que casos evaluación perezosa es útil. Reconozca la importancia del razonamiento ecuacional. Conexión con: Haskell, ML, bash. [1] Cap 7-8 5 Recursión 1 - Funciones recursivas de primera clase. - Ambiente recursivo y punto fijo. - Recursión e iteración: recursión por la cola y optimizaciones. - Definición puramente funcional de la recursión. - Comprenda la noción de recursividad, tanto en términos formales como prácticos. - Comprenda la noción de recursión por la cola. Conexión con: Scheme vs. Java [1] Cap 9-10 [2] Cap 3.6

6 Representación Procedural y Meta-interpretación 1 - Usar funciones en vez de estructura de datos: abstracción procedural. - Aplicación a ambientes y definición del intérprete. - Interprete sintáctico, interprete meta. - Extender un lenguaje por absorción de primitivas. - Reconozca la relación entre abstracción de datos y abstracción procedural. - Comprenda distintas estrategias para definir o extender un lenguaje. [1] Cap 11 7 Estado y Mutación 2.5 - Mutación y orden de evaluación. - Estructuras de dato mutables. - Variables y asignación. - Extensión del modelo con el almacén (store). - Patrón de hilamiento en el intérprete. - Estrategias de paso de parámetros. - Recolección de basura. - Entienda cuando manejar estado es necesario, y porque es preferible evitarlo. - Reconozca diferentes formas de mutación, y diferentes semánticas para pasar parámetros. Entender los principios básicos de la gestión de memoria. Conexión con: C, Java [1] Cap 12-14 [2] Cap 3.7-3.9 [1] Cap 20 8 Extensión Sintáctica de Lenguajes 1 - Motivación: lenguajes específicos y lenguajes extensibles. - Introducción a macros. - Macros higiénicas, ejemplos. - Comprenda la ventaja de proveer las buenas abstracciones a los programadores. - Entienda los sistemas de macros higiénicas para extender lenguajes. [1] Cap 35-37

9 Objetos 2 - Abstracción procedural y objetos. - Objeto como unidad de encapsulación - Interfaz de un objeto - Recursión y self - Delegación y prototipos - Clases y herencia - Opciones de diseño para OOP - Comprenda en profundidad la conexión entre abstracción procedural y objetos. Entiende la esencia de la orientación a objetos y sus múltiples facetas. - Implementa un sistema de objetos usando macros. Conexión con: Java, JavaScript, Scala, Self, Smalltalk [5] [2] Cap 5 Bibliografía [1] S. Krishnamurthi. Programming Languages: Application and Interpretation. Online. 2007. http://www.cs.brown.edu/~sk/publications/books/proglangs/ [2] D. Friedman, M. Wand, C. Haynes. Essentials of Programming Languages, 2nd edition. MIT Press. 2001. [3] D. Friedman, M. Felleisen, G. Sussman. The Little Schemer, 4th edition. MIT Press. 1995. [4] D. Sitaram. Teach Yourself Scheme in Finum Days. Online. 2004. http://www.ccs.neu.edu/home/dorai/t-y-scheme/ [5] É. Tanter. Object Oriented Programming Languages: Application and Interpretation. Online. http://users.dcc.uchile.cl/~etanter/ooplai/ [6] É. Tanter. PrePLAI: Scheme y Programación Funcional. Online. http://users.dcc.uchile.cl/~etanter/preplai/ Vigencia desde: Otoño 2016 Elaborado por: Éric Tanter