Está en la página 1de 12

1.

- DATOS DE LA ASIGNATURA Nombre de la asignatura: Programacin Lgica y Funcional Carrera: Ingeniera en Sistemas Computacionales Clave de la asignatura: SCC-1019 (Crditos) SATCA1 2 2 4 2.- PRESENTACIN Caracterizacin de la asignatura. La asignatura de Programacin Lgica y Funcional aporta al perfil del Ingeniero en Sistemas Computacionales la capacidad de desarrollar habilidades para la generacin de soluciones automatizadas basadas en lenguajes de inteligencia artificial, considerando el entorno y la aplicacin de diversas tcnicas, herramientas y conocimientos. Los programas para computadora actualmente son fundamentales en muchas reas del ser humano, debido a que se usan para resolver diversos problemas en la ciencia, la industria y los negocios. Para cubrir estas necesidades, se han desarrollado lenguajes de programacin dentro de la inteligencia artificial. El Ingeniero en Sistemas Computacionales contribuir, aplicando estos conocimientos para la solucin de problemas a travs de la programacin lgica y funcional, con una conciencia tica y de respeto al medio ambiente. Programacin Lgica y Funcional, es una asignatura que requiere tener conocimientos esenciales acerca de los lenguajes lgicos y funcionales de la inteligencia artificial, incluyendo la metodologa y los aspectos relativos a la codificacin, con el fin de ampliar el conocimiento de tecnologas alternativas para el desarrollo de sistemas automatizados y la implemetacin de agentes inteligentes. Intencin didctica. Estimular el pensamiento creativo. Trabajar con metodologas participativas y de reflexin colectiva. Propiciar la solucin de problemas concretos. Aprovechar los conocimientos que el estudiante adquiri en asignaturas anteriores. Propiciar en el estudiante la construccin e interiorizacin del conocimiento de los principios lgicos y funcionales de la programacin para el diseo de agentes inteligentes.
1

Sistema de asignacin y transferencia de crditos acadmicos

Se denomina inteligencia artificial a la rama de la ciencia informtica dedicada al desarrollo de agentes racionales no vivos (agentes inteligentes). Es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura fsica producen acciones o resultados que maximizan una medida de rendimiento determinada, basndose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura. La inteligencia artificial incluye varios campos de desarrollo tales como: la robtica, usada principalmente en el campo industrial; comprensin de lenguajes y traduccin; visin en mquinas que distinguen formas y que se usan en lneas de ensamblaje; reconocimiento de palabras y aprendizaje de mquinas; sistemas computacionales expertos. Los sistemas expertos, que reproducen el comportamiento humano en un estrecho mbito del conocimiento; son programas tan variados como los que diagnostican infecciones en la sangre e indican un tratamiento, los que interpretan datos sismolgicos en exploracin geolgica y los que configuran complejos equipos de alta tecnologa. La IA es un conjunto de mtodos y filosofa, y por lo tanto no est atada a un lenguaje en particular. Los problemas de IA requieren que los programas manipulen conocimiento en lugar de nmeros. Para lo anterior, se desarrollaron nuevos lenguajes para atacar estos problemas, como lo son: de programacin simblica y de programacin lgica. El temario est organizado en cuatro unidades y con una estructura lgica. En la primera unidad se inicia con un acercamiento a los conceptos fundamentales de la programacin, con la idea de que el estudiante desarrolle una visin de conjunto de los lenguajes de alto nivel y sirva como marco de referencia a la metodologa de los lenguajes de inteligencia artificial, como lo son la programacin lgica y funcional, por lo que es recomendable una previa seleccin de materiales y lecturas de apoyo por parte del docente. La unidad dos integra la programacin funcional, haciendo nfasis, al uso de nuevas metodologas para que la actividad del estudiante vaya ms all de la intuicin y reflexin. Proporciona nuevas habilidades, distintas a las desarrolladas en los paradigmas convencionales de la programacin. Son lenguajes de propsito general, procedural, basado en aritmtica y manipulacin de smbolos, utilizan datos de entrada y funciones especficas. La programacin; en trminos de relaciones entre smbolos, se denomina programacin simblica. Dado que el conocimiento consiste en smbolos y asociaciones entre ellos, estos lenguajes son convenientes en aplicaciones de inteligencia artificial. Esta unidad permite que el estudiante conozca las ventajas y puntos dbiles de la programacin funcional; disee, codifique, pruebe y depure programas funcionales; identifique los principales

mbitos de aplicacin de esta programacin, para que las utilice como herramientas alternativas y complementarias en la solucin de problemas a travs de la primer caracterstica esencial de estos lenguajes, que es la funcin de orden superior; es decir, funciones que tienen como argumento a otras funciones (dicho de otra forma, programas que tienen como argumentos otros programas). La unidad tres est dirigida a la segunda caracterstica esencial de los lenguajes funcionales, que es la evaluacin perezosa, en la cual slo se realiza un clculo cuando otro clculo posterior lo necesita, lo que permite la definicin de estructuras infinitas de datos, as como de funciones y tipos de datos no estrictos. Este modo de evaluar expresiones tiene una serie de ventajas tcnicas importantes, entre ellas, se evitan clculos innecesarios. La evaluacin perezosa consiste en utilizar paso por nombre y recordar los valores de los argumentos ya calculados para evitar recalcularlos. Tambin se denomina estrategia de pasos de parmetros por necesidad. La ltima unidad, esta dirigida a la programacin lgica, enfocada a la utilizacin de metodologas, que permiten la relacin de datos; y que proporcione al estudiante nuevas habilidades para establecer, si un dato es conocido o se deriva de una base de conocimientos; distintas a las desarrolladas en los paradigmas convencionales de la programacin. La unidad permite que el alumno conozca las ventajas de la programacin lgica; disee, codifique y pruebe programas lgicos; identifique los principales mbitos de aplicacin de la programacin lgica como herramienta alternativa y complementaria de la programacin, para tener una visin de los nuevos paradigmas de la programacin diferentes a los que conoce, lo cual implica, una forma de resolver problemas de distinta manera y ser un complemento ideal a su formacin como ingeniero en sistemas computacionales. Para las unidades dos y tres, se realizarn prcticas en los lenguajes simblicos y lgicos, implementando algoritmos de juegos para aplicar los conceptos aprendidos en cada tema. Se recomienda el desarrollo de un sistema experto bsico para cada unidad, en la presentacin de cada sistema es conveniente que el estudiante viva la aplicacin del mismo en el aula, con sus exigencias y responda con profesionalismo y responsabilidad.

3.- COMPETENCIAS A DESARROLLAR Competencias especficas: Conocer los principios lgicos y funcionales de la programacin para identificarlos y aplicarlos en la resolucin de problemas a travs del diseo de agentes inteligentes. Competencias genricas Competencias instrumentales Capacidad de anlisis y sntesis. Capacidad de organizar y planificar. Conocimientos bsicos de la carrera Comunicacin oral y escrita. Manejo de todos los recursos que proporciona la computadora. Habilidad para buscar y analizar informacin proveniente de fuentes diversas. Solucin de problemas. Toma de decisiones.

Competencias interpersonales Capacidad crtica y autocrtica. Trabajo en equipo. Habilidades interpersonales.

Competencias sistmicas Capacidad de aplicar los conocimientos en la prctica. Habilidades de investigacin. Capacidad de aprender. Capacidad de generar nuevas ideas (creatividad). Habilidad para trabajar en forma autnoma. Bsqueda del logro.

4.- HISTORIA DEL PROGRAMA Lugar y fecha de elaboracin o revisin Instituto Tecnolgico de Saltillo, del 5 al 9 de octubre de 2009 Participantes Representantes de los Institutos Tecnolgicos de: San Luis Potos, Celaya, Pinotepa, Superior de Libre, Tapachula. Representante de la Academias de ISC de los Institutos Tecnolgicos de San Luis Potos, Celaya, Pinotepa, Superior de Libre, Tapachula, Toluca. Observaciones (cambios y justificacin) Reunin Nacional de Diseo e Innovacin Curricular para el Desarrollo de Competencias Profesionales de la Carrera de Ingeniera en Sistemas Computacionales. Anlisis, enriquecimiento y elaboracin del programa de estudio propuesto en la Reunin Nacional de Diseo e Innovacin Curricular para el Desarrollo de Competencias Profesionales de la Carrera de Ingeniera en Sistemas Computacionales. Reunin Nacional de Consolidacin Curricular de la carrera de Ingeniera en Sistemas Computacionales.

Instituto Tecnolgico de San Luis Potos, del 12 de octubre de 2009 al 19 de febrero de 2010

Instituto Tecnolgico Superior de Poza Rica Fecha del 22 al 26 de febrero de 2010

Representantes de los Institutos Tecnolgicos participantes en el diseo de la carrera de Ingeniera en Sistemas Computacionales: Institutos Tecnolgicos de San Luis Potos, Celaya, Pinotepa, Superior de Libre, Tapachula, Toluca.

5.- OBJETIVO GENERAL DEL CURSO Conocer los principios lgicos y funcionales de la programacin para identificarlos y aplicarlos en la resolucin de problemas a travs del diseo de agentes inteligentes.

6.- COMPETENCIAS PREVIAS Conocimiento y aplicacin de programacin orientada a objetos para resolver situaciones reales.

7.- TEMARIO Unidad Temas Subtemas Conceptos Fundamentales. 1.1. Estilos de programacin. 1 1.2. Evaluacin de expresiones. 1.3. Definicin de funciones. 1.4. Disciplina de tipos. 1.5. Tipos de datos. 2 Programacin Funcional. 2.1. El tipo de datos. 2.2. Funciones. 2.3. Intervalos. 2.4. Operadores. 2.5. Aplicaciones de las listas. 2.6. rboles. 3.1. La estrategia de evaluacin perezosa. 3.2. Tcnicas de programacin funcional perezosa. 4.1. Repaso de la lgica de primer orden. 4.2. Unificacin y resolucin. 4.3. Clusulas de Horn. Resolucin SLD. 4.4. Programacin lgica con clusulas de Horn. 4.5. Semntica de los programas lgicos. 4.6. Representacin clausada del conocimiento. 4.7. Consulta de una base de clusulas 4.8. Espacios de bsqueda. 4.9. Programacin lgica con nmeros, listas y rboles. 4.10. Control de bsqueda en programas lgicos 4.11. Manipulacin de trminos. Predicados metalgicos.

Evaluacin perezosa.

Fundamentos de la programacin lgica.

8.- SUGERENCIAS DIDCTICAS Que la materia sea eminentemente prctica y participativa, combinando elementos de aprendizaje con dinmicas de grupo, ejercicios de reflexin individual y grupal que faciliten el desarrollo de competencias. Se busca potenciar las cualidades creativas del estudiante, estimulando permanentemente el dilogo de saberes, la reflexin y la accin. Este enfoque plantea que el conocimiento no se adquiere simplemente, ni se recibe, ni es una copia de la realidad, sino que es una construccin de la persona a partir de la percepcin e interpretacin de la realidad. Usar un portal de Internet para apoyo didctico de la materia, el cual cuente por lo menos con un foro, preguntas frecuentes, material de apoyo y correo electrnico. Utilizar herramientas de docencia no presencial, como soporte de los contenidos tericos y prcticos, incorporando documentacin adicional, guiones de prcticas y herramientas de apoyo. Trabajar en grupos pequeos, para sintetizar y construir el conocimiento necesario para resolver problemas relacionados con situaciones reales. Solicitar al estudiante propuestas de problemas a resolver y que sean significativas para l. Propiciar que el estudiante experimente con diferentes programas encontrados en revistas, Internet y libros de la especialidad, que lo lleven a descubrir nuevos conocimientos. Elaborar de manera conjunta con el estudiante una gua de ejercicios para actividades extra clase. Plantear problemas reales para que ellos diseen soluciones utilizando los conceptos de la IA. Desarrollo de un proyecto con aplicacin real basado en lenguaje lgico. En la solucin de problemas, motivar que seleccione la metodologa que permita que la aplicacin sea pertinente y viable. Propiciar en el estudiante, el desarrollo de actividades intelectuales de induccin-deduccin y anlisis-sntesis, las cuales lo encaminan hacia la investigacin, la aplicacin de conocimientos y la solucin de problemas. Llevar a cabo actividades prcticas que promuevan el desarrollo de habilidades para la experimentacin, tales como: observacin, identificacin, manejo y control de variables, datos relevantes, planteamiento de hiptesis y trabajo en equipo. Desarrollar actividades de aprendizaje que propicien la aplicacin de los conceptos, modelos y metodologas aprendidas en el desarrollo de la asignatura a travs de diferentes tcnicas, como pueden ser: mapas conceptuales o mentales. Propiciar el uso adecuado de conceptos y de terminologa cientfico tecnolgica.

Proponer problemas que permitan al estudiante integrar y relacionar los contenidos de esta asignatura con otras, para su anlisis y solucin. Observar y analizar fenmenos y problemticas propias del campo ocupacional. Se recomienda utilizar en programacin funcional, Lisp y para programacin lgica, Prolog.

9.- SUGERENCIAS DE EVALUACIN La evaluacin de la asignatura ser continua y cotidiana, por lo que se debe considerar el desempeo en cada una de las actividades de aprendizaje, haciendo especial nfasis en: Evaluacin continua. Ponderacin de tareas. Participacin y desempeo en el aula y el laboratorio, a travs de dinmicas grupales, trabajo individual o en equipo. Dar seguimiento al desempeo en el desarrollo del programa (dominio de los conceptos, capacidad de la aplicacin de los conocimientos en problemas reales, transferencia del conocimiento). Desarrollo de un proyecto final basado en programacin lgica y que integre adems todas las unidades de aprendizaje. Cumplimiento de los objetivos y desempeo en las prcticas de cada tema. Informacin obtenida durante las investigaciones solicitadas en documentos escritos. Exmenes escritos para comprobar el manejo de aspectos tericos y declarativos.

10.- UNIDADES DE APRENDIZAJE Unidad 1: Conceptos Fundamentales Competencia especfica a desarrollar Identificar los lenguajes de representativa. paradigmas y programacin Actividades de Aprendizaje Visualizar los diversos estilos de la programacin. Identificar los conceptos bsicos de la programacin representativa. Reconocer las caractersticas de la programacin representativa. Investigar, al menos, un lenguaje de programacin representativa. Realizar mapa conceptual de los paradigmas y lenguajes de la programacin representativa.

Unidad 2: Programacin funcional Competencia especfica a desarrollar Actividades de Aprendizaje Conocer los principales puntos fuertes y debilidades del paradigma de programacin funcional Identificar los elementos de la programacin funcional. Aplicar la programacin funcional en la resolucin de problemas reales. Disear herramientas alternativas y Identificar los conceptos bsicos de la programacin funcional. Describir las caractersticas de la programacin funcional. Reconocer la estructura y elementos de la programacin funcional. Investigar; al menos, un lenguaje de programacin representativa diferente al establecido para la materia. Realizar mapa conceptual de los lenguajes de la programacin funcional vistos en la materia.

complementarias de programacin.

Aplicar los conceptos de la programacin funcional para resolver un problema real, diseando un programa sencillo.

Unidad 3: Evaluacin perezosa Competencia especfica a desarrollar Conocer la evaluacin perezosa. Identificar la evaluacin perezosa como una de las funciones de la programacin representativa. Aplicar la evaluacin perezosa en la resolucin de problemas. Disear programacin modularidad. con Actividades de Aprendizaje Identificar los conceptos bsicos de la evaluacin perezosa. Describir las tcnicas de la programacin funcional perezosa. Investigar, al menos, una tcnica de programacin funcional perezosa vista en clase. Realizar mapa conceptual de la evaluacin perezosa Aplicar una tcnica de la programacin funcional perezosa, para resolver un problema real a travs de la modularidad en una situacin sencilla.

Unidad 4: Fundamentos de la programacin lgica Competencia especfica a desarrollar Actividades de Aprendizaje Conocer las ventajas y desventajas del paradigma de programacin lgica. Identificar los elementos de la programacin lgica. Aplicar la programacin lgica en la resolucin de problemas reales. Disear sistemas expertos programacin lgica. con Identificar los conceptos bsicos de la programacin lgica. Describir las clausulas de Horn y resolucin SLD, para identificar reglas de inferencia lgica y emplearlas en la representacin del conocimiento. Reconocer los elementos de la semntica de la programacin lgica para interpretar el conocimiento y aplicarlo en su representacin. Investigar, al menos, un lenguaje de programacin lgica diferente al establecido para la materia. Realizar mapa conceptual de la

programacin lgica. Aplicar la programacin lgica para resolver un problema real, diseando un sistema experto basado en el control de bsqueda lgica.

11.- FUENTES DE INFORMACIN 1. NILSSON, N. J. Inteligencia Artificial. Una nueva sntesis. Mc Graw Hill. 2001. 2. POOLE, D., Mackworth, A. y Goebel, R. Computational Intelligence (A Logical Approach). Oxford University Press. 1998. 3. BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley. 1990. 4. MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997. 5. FLACH, P. Simply Logical (Intelligent Reasoning by Example). John Wiley. 1994. 6. BIRD, Richard. Introduccin a la Programacin Funcional con Haskell. Segunda Ed. Prentice Hall. 2000. 7. FOKKER, Jeroen. Programacin Departamento de Informtica. 1995. Funcional. Universidad de Utrecht,

8. JULIAN, P., Alpuente, M. Programacin Lgica. Teora y Prctica. Pearson Prentice Hall. 2007. 9. HOGGER, C. Essentials of Logic Programming. Clarendon Press, Oxford. 1990. 10. BRATKO. Prolog Programming for Artificial Intelligence. Segunda Edicin). Addison Wesley. 1991. 11. STERLING & Shapiro. The art de Prolog. MIT. 1994. 12. LUCAS, P. y Gaag, L.v.d. Principles of Expert Systems. (AddisonWesley. 1991. Fuentes electrnicas: 1. Programacin Funcional. Clase 1. En lnea en: http://funcional.fciencias.unam.mx/pdf/class1.pdf Programacin Funcional. Clase 2 En lnea en: http://funcional.fciencias.unam.mx/pdf/class2.pdf Programacin Funcional. Clase 3 En lnea en: http://funcional.fciencias.unam.mx/pdf/class3.pdf

2. 3. 4. 5. 6.

7.

Programacin Funcional. Clase 4 En lnea en: http://funcional.fciencias.unam.mx/pdf/class4.pdf Programacin Funcional. En lnea en: http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional Programacin Lgica. En lnea en: http://es.wikipedia.org/wiki/Programacin_lgica Programacin lgica. En lnea en: www.cs.cinvestav.mx/PaginaAntigua/SC/publica/chapa/intro_lm/node42.html Programacin lgica. En lnea en: http://expo.itchihuahua.edu.mx/view.php?f=prog_46 Anlisis lgico 2008-2, nota de clase 8. Fundamentos de programacin lgica I. Resolucin binaria. En lnea en: http://abulafia.fciencias.unam.mx/~favio/cursos/al82/notas/al82n8.pdf Sistema Experto. En lnea en: http://es.wikipedia.org/wiki/Sistema_experto

12.- PRCTICAS PROPUESTAS Elaboracin de mapas conceptuales y/o mentales de los temas vistos. Elaboracin de glosario por unidad de conceptos clave de cada tema. Desarrollo de programas funcionales con un grado creciente de complejidad, utilizando herramientas de programacin funcional, que den solucin a problemas reales. Disear y construir una base de conocimiento a travs de programacin funcional. Desarrollo de programas lgicos con un grado creciente de complejidad, utilizando herramientas de programacin lgica, que den solucin a problemas reales. A partir de una situacin real, disear y construir una base de conocimiento a travs de herramientas de sistemas expertos basado en programacin lgica. Construir un sistema experto a partir de la base de conocimiento creada en programacin lgica.