Download Sílabo de Programación Cliente/Servidor
Document related concepts
Transcript
SILABO DEL CURSO FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS LENGUAJES DE PROGRAMACIÓN 1. DATOS GENERALES 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. Facultad Carrera Profesional Departamento Tipo de Curso Requisito Ciclo de estudios Duración del curso Inicio Término 1.8. Extensión Horaria 1.9. Créditos 1.10. Periodo lectivo 1.11. Docente : : : : : : : : : : : : : Ingeniería Ingeniería de Sistemas Ingeniería de Sistemas Obligatorio Análisis y Diseño de Algoritmos 5 18 semanas 17 de Marzo de 2008 19 de Julio de 2008 4 horas (02 h Teoría, 02 h Laboratorio) 3 2008-1 Ing. Iván Anselmo Sipirán Mendoza Ivan_sipi@yahoo.com David Wong Aitken dwonga@gmail.com 2. FUNDAMENTACIÓN Este curso es un curso teórico/práctico en donde el alumno conocerá la teoría fundamental de los lenguajes de programación y de esta manera cuenten con una formación sólida en el área de ciencias de la computación. Es importante notar que los tópicos a estudiar en este curso le ayudarán al alumno a tener un carácter crítico con respecto a la creación y utilización de nuevas tecnologías de computación, en especial aquellas relacionadas con el estudio de los lenguajes de programación, su análisis, diseño y construcción. El curso se centrará en el estudio de los componentes y etapas de construcción de un lenguaje de programación. Además se le presentará a los alumnos dos nuevos paradigmas de programación: la programación funcional y la programación lógica. 3. COMPETENCIA Al terminar el curso, el alumno será capaz de: • Conocer los Principios y Fundamentos de los Lenguajes de Programación, para su diseño e implementación. • Comprender los procesos de análisis léxico y análisis sintáctico de un lenguaje de programación. • Diseñar un lenguaje de programación e implementar sus componentes básicos. • Aplicar los principales Paradigmas de Programación, utilizando casos de estudio en lenguajes como C, Scheme, Lisp, Prolog. 4. OBJETIVOS ESPECÍFICOS DEL CURSO 4.1. Unidad I (a) Comprenda los principios que rigen el diseño de lenguajes de programación. (b) Conozca los diversos paradigmas de programación existentes. (c) Comprenda los roles de un analizador léxico y sintáctico. (d) Comprenda el manejo de las variables por el lenguaje de programación. (e) Conozca los diferentes tipos de datos disponibles en el diseño de lenguajes de programación. (f) Comprenda el funcionamiento del paso de parámetros en lenguajes de programación estructurados. 1 4.2. Unidad II (a) Comprenda la importancia de los lenguajes de programación funcionales. (b) Represente información en un lenguaje de programación funcional. (c) Comprenda la construcción de formas funcionales para la solución de problemas. 4.3. Unidad III (a) Comprenda la importancia de la programación lógica en la construcción de sistemas inteligentes. (b) Comprenda la representación de conocimiento empleando la lógica de primer orden. (c) Comprenda el proceso de inferencia en lenguajes lógicos. (d) Comprenda las formas de inferencia y sus aplicaciones. (e) Resuelva procesos de inferencia simples basados en el algoritmo de Resolución SLD. (f) Construya predicados lógicos para manipular Listas. 5. CONTENIDOS CONCEPTUALES 5.1 Unidad I • Principios, fundamentos y paradigmas de los Lenguajes de Programación • Análisis Léxico y Sintáctico. • Tiempo de vida y alcance de variables, tipos de datos y paso de parámetros. 5.2 Unidad II • Fundamentos, principios y características de la programación funcional. • Lenguaje de programación Lisp y dialectos: Scheme • Tipos de datos, estructuras y formas funcionales disponibles en lenguajes funcionales. • Aplicaciones de los lenguajes de programación funcionales. 5.3 Unidad III • Introducción a la Programación Lógica • Fórmulas Lógicas y Lógica de Primer Orden • Representación de conocimiento en programación lógica • Proceso de Inferencia en Programación Lógica • Encadenamiento hacia delante y encadenamiento hacia atrás. • Resolución SLD • Listas en Prolog 6. CONTENIDOS PROCEDIMENTALES Al término del curso, el alumno podrá: 6.1 Desarrollar los dos componentes iniciales de análisis de un lenguaje de programación: Analizador léxico y analizador sintáctico. 6.2 Construir programas bajo el paradigma de programación funcional. 6.3 Representar conocimiento y desarrollar programas sobre el paradigma de programación lógica. 7. CONTENIDOS ACTITUDINALES 7.1 Responsabilidad 7.2 Trabajo en Equipo 7.3 Solidaridad 8. METODOLOGÍA GENERAL DEL CURSO El curso se desarrollará en su mayor parte de forma expositiva. Además en el laboratorio, el docente dará la base para que los alumnos puedan implementar los algoritmos vistos y para que puedan desarrollar su proyecto por propia cuenta. En cuanto a la evaluación continua, estará determinada por las prácticas que desarrolle el alumno en laboratorio y un proyecto de fin de curso. El proyecto final es un software que los alumnos, reunidos en equipos de trabajo de no más de 3 personas, deberán desarrollar empleando cualquiera de los paradigmas de programación vistos en clase. Al inicio del curso, el docente dará una lista tentativa de proyecto que los alumnos escogerán, o en su defecto podrán presentar cualquier proyecto que involucre los temas del curso, previa consulta con el docente para que se determine su alcance y se pueda registrar. 2 La calificación del proyecto involucra un informe de no más de 6 páginas en formato paper acerca del proyecto y una exposición (presentación + software). La calificación final será el promedio simple de las notas del informe y la exposición. 9. PROGRAMACIÓN Unidad 1. Fundamentos de los Lenguajes de Programación. (5 semanas) 2. Paradigma de Programación Funcional. (4 semanas) 2. Paradigma de Programación Funcional(Continu ación) (1 semana) 3. Paradigma de Programación Lógica (5 semanas) Sem. 1 Actividad Principios y fundamentos de los Lenguajes de Programación Presentación de proyectos tentativos y conformación de los grupos de trabajo 2 Proceso de Compilación e Interpretación de un Lenguaje de Programación. Elaboración de un analizador léxico en el laboratorio. 3 Binding, Lifetime y Scoping Elaboración de un analizador sintáctico en el laboratorio. Evaluación T1 4 Tipos de datos. Práctica tipos de datos en el laboratorio con un caso de estudio: Lenguaje C. Evaluación T2 5 Paso de parámetros Práctica de paso de parámetros en el laboratorio con un caso de estudio: Lenguaje C. • Evaluación T2 FUENTES BIBLIOGRÁFICAS: [1] Capítulos 3,4 [2] Capítulos 2, 3, 4, 5, 6 [3] Capítulo 1, 2, 3, 7 6 • Fundamentos de la programación funcional. • Caso de estudio en el laboratorio: Programación Funcional con Lisp. 7 • EL lenguaje de programación Lisp • Práctica de laboratorio: Tipos de datos y estructuras en Lisp. 8 • Scheme como dialecto de Lisp. • Caso de estudio en el laboratorio: Lenguaje Scheme. FUENTES BIBLIOGRÁFICAS: [1] Capítulos 15 [3] Capítulo 11 EXAMEN PARCIAL 9 10 • Formas funcionales en Scheme • Práctica de Laboratorio: Formas funcionales en Scheme • Evaluación T3 FUENTES BIBLIOGRÁFICAS: [1] Capítulos 15 [3] Capítulo 11 11 • Introducción a la Programación Lógica • Caso de estudio en el laboratorio: Programación Lógica 12 • Fórmulas Lógicas • Práctica de laboratorio: Creación de fórmulas lógicas en Prolog 13 • Representación del Conocimiento • Práctica de Laboratorio: Representación del Conocimiento 14 • Proceso de Inferencia Lógico • Práctica de Laboratorio: Creación de hechos y reglas en Prolog. 15 • Listas en Prolog • Práctica de Laboratorio: Creación de predicados para manejo de listas. • Evaluación T4 16 • Listas de Listas en Prolog • Práctica de Laboratorio: Creación de Listas de Listas en Prolog • Evaluación T5 FUENTES BIBLIOGRÁFICAS: [2] Capítulo 16 [3] Capítulo 11 17 EXAMEN FINAL 18 EXAMEN SUSTITUTORIO • • • • • • • • • • • • 3 10. SISTEMA DE EVALUACIÓN DEL CURSO El cronograma de la evaluación continua del curso es el siguiente: ESPECIFICACIÓN DE TRABAJOS DEL CURSO Descripción T T1 T2 T3 T4 T5 Semana Resumen de Lectura sobre Lenguajes de Programación Promedio de las evaluaciones de las prácticas de tipos de datos y paso de parámetros Solucionar un problema planteado por el docente en el laboratorio, empleando programación funcional Solucionar un problema planteado por el docente en el laboratorio, empleando programación lógica Presentación de trabajos finales 3 4y5 10 15 16 El peso de cada T es: EVALUACIÓN T01 T02 T03 T04 T05 TOTAL PESO (%) 10 15 20 25 30 100% ESCALA VIGESIMAL 1,2 1,8 2,4 3,0 3,6 12 Los pesos ponderados de las clases de evaluación son los siguientes: EVALUACIÓN PARCIAL CONTINUA (Ts) FINAL TOTAL PESO (%) 20 60 20 100% ESCALA VIGESIMAL 4 12 4 20 11. BIBLIOGRAFÍA OBLIGATORIA # 1 CÓDIGO AUTOR FRIEDMAN, Daniel; WAND, 005.13/F83 Mitchell; HAYNES, Christopher TITULO Essentials of Programming Languages 12. BIBLIOGRAFÍA COMPLEMENTARIA # 2 3 AUTOR SEBESTA, Robert SCOTT,Michael TITULO Concepts of Programming Languages Programming Language Pragmatics 13. REFERENCIAS WEB # 4 5 6 TITULO Programming Language Research Researchers in Programming Languages and Compilers The Language Guide ENLACE http://www.cs.cmu.edu/~mleone/language-research.html http://www.cs.cmu.edu/~mleone/language-people.html http://www.engin.umd.umich.edu/CIS/course.des/cis400/ 4