UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERIAS DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN DEPARTAMENTO DE CIENCIAS COMPUTACIONALES DATOS GENERALES CLAVE DE MATERIA : CC307 PRERREQUISITO : CC208 NOMBRE DE LA MATERIA : PROGRAMACIÓN LÓGICA Y FUNCIONAL TIPO : TEORÍA ÁREA DE FORMACIÓN : ESPECIALIZANTE SELECTIVA DEPTO. DE ASCRIPCIÓN : CIENCIAS COMPUTACIONALES ACADEMIA : TÉCNICAS MODERNAS DE PROGRAMACIÓN CARGA HORARIA GLOBAL : 80 HORAS CARGA HORARIA SEMANAL : 4 HORAS VALOR EN CRÉDITOS : 11 CRÉDITOS OBJETIVO GENERAL : INTRODUCIR LOS CONCEPTOS PRÁCTICOS Y TEÓRICOS FUNDAMENTALES DE LA PROGRAMACIÓN LÓGICA Y LA PROGRAMACIÓN FUNCIONAL, INCLUYENDO TANTO EL PUNTO DE VISTA METODOLÓGICO COMO LOS ASPECTOS RELATIVOS A LA CODIFICACIÓN EN LENGUAJES ESPECÍFICOS, CON EL FIN DE QUE EL ALUMNO AMPLIÉ SU VISÓN CON EL CONOCIMIENTO DE TECNOLOGÍAS ALTERNATIVAS PARA EL DESARROLLO DE SISTEMAS. FECHA DE ACTUALIZACION : JULIO-2004 CALENDARIO DE APLICACIÓN : 2006A OBJETIVO ESPECÍFICO EN CADA MÓDULO DEL CONTENIDO TEMÁTICO PRINCIPAL : PROGRAMACIÓN LÓGICA Y FUNCIONAL 1 UNIVERSIDAD DE GUADALAJARA DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN DEPARTAMENTO DE CIENCIAS COMPUTACIONALES PROGRAMACIÓN LÓGICA Y FUNCIONAL CONTENIDO TEMÁTICO PRINCIPAL Módulo 1. Programación Lógica [40 horas] Objetivo: El alumno conocerá y empleará los conceptos elementales y superiores del paradigma de la Programación Lógica para el desarrollo de aplicaciones 1.1 Unificación y Retroceso 1.2 Bases de Datos en prolog 1.3 Inducción Matemática y algoritmos sobre listas 1.4 1.5 1.6 1.7 1.8 1.3.1 Algoritmos básicos sobre listas. 1.3.2 Algoritmos de ordenación. Algoritmos sobre árboles y grafos 1.4.1 Árboles binarios/balanceados. 1.4.2 Representación de grafos como BD. 1.4.3 Recorridos en árboles y grafos. 1.4.4 Algoritmos de Kruskal/Djiskstra/Primm y similares... Introducción a IA. 1.5.1 Representación de problemas como un grafo. 1.5.2 El problema del agente viajero. 1.5.3 Heurísticas [Hill climbing, Best-first, etc.] Uso de operadores en Prolog. 1.6.1 Solución simbólica de ecuaciones algebraicas. Árboles SLD. Sistemas expertos. [4 horas] [3 horas] [8 horas] [8 horas] [8 horas] [3 horas] [3 horas] [3 horas] Recomendaciones: Realizar sesiones explicativas (breves) para reafirmar los conceptos de listas, árboles binarios, árboles balanceados, grafos, grafos bipartitos y algoritmos heurísticos. Módulo 2. Programación Funcional [40 horas] Objetivo: El alumno identificará y ejemplificará a través de ejercicios prácticos y/o ilustraciones el poder de explotar el paradigma de la Programación Funcional 1.1 Calculo Lambda. 1.2 Funciones básicas de LISP. 1.3 Algoritmos sobre listas. 1.3.1 Algoritmos básicos sobre listas. 1.3.2 Algoritmos de ordenación. 1.4 Algoritmos sobre árboles y grafos 1.4.1 Árboles binarios/balanceados y recorridos. 1.4.2 Algoritmos clásicos de grafos Kruskal/Prim/etc. 1.5 Introducción a IA. 1.5.1 Revisar los mismos algoritmos vistos en la Parte I. 1.5.2 Problema del agente viajero, heurísticas, etc. 1.6 Estructuras y POO [CLOS] en LISP. PROGRAMACIÓN LÓGICA Y FUNCIONAL [2 horas] [8 horas] [8 horas] [8 horas] [6 horas] [8 horas] 2 Recomendaciones: Realizar sesiones explicativas (breves) para establecer las diferencias entre Scheme y Common Lisp, el recolector de basura de lisp, el proceso de recursión en lisp y las funciones de primera clase. METODOLOGÍA DEL CURSO - Sesiones teóricas - Prácticas de laboratorio EVALUACIÓN 50% Exámenes Teóricos 15% Proyectos Prácticos 15% Exposición 15% Tareas 5% Asistencia BIBLIOGRAFÍA BÁSICA "Logic, Programming and Prolog" Ulf Nilsson and Jan Maluszynski Segunda Edición, Noviembre 2000. Ed. Addison Wesley “Lisp” Henry, Patrick; Horn Tercera Edicion Ed. McGraw Hill BIBLIOGRAFÍA COMPLEMENTARIA "Artificial Intelligence: A Modern Approach" Russell, Stuart; Norvig, Peter Segunda Edición, Diciembre 2002. Ed. Pearson. “Sistemas Expertos” Principios y Programación Giarratano Riley Tercera edición, 2001 Ed. Thomson Editores “The AutoCADET's Guide to Visual LISP” Bill Kramer, Bil Kramer Diciembre, 2001 Ed. CMP Books “Adventure in Prolog” Febrero 1997 Ed. Amzi Prolog MATERIAL DE APOYO ACADÉMICO - Pintarrón Plumones para pintarrón Computadora Cañón de proyección Compilador para un lenguaje funcional Compilador para un lenguaje lógico PROGRAMACIÓN LÓGICA Y FUNCIONAL 3 - Copias COMPETENCIAS QUE SE PUEDEN ADQUIRIR - El estudiante al concluir el curso tendrá, adicionalmente a los contenidos recibidos en clase, un visión más amplia acerca del tratamiento de información y conocimiento, y la posibilidad para aplicar mecanismos alternativos, como el tratamiento de problemas complejos, el aprendizaje y los mecanismos heurísticos; a diferencia de los clásicos que se estudian la mayor parte del tiempo durante su formación en el área de sistemas. - El estudiante comprenderá cuales son las ventajas significativas de programar en ambos lenguajes (lógico y funcional) y discernir sobre cual seria la mejor opción para implementar un sistema experto, la representación del conocimiento, el aprendizaje, la experiencia, etc. - El estudiante fomentara su sentido de percepción para solucionar problemas en forma lógica o en forma funcional. APLICACIÓN PROFESIONAL - Las personas que cursan la materia de Inteligencia Artificial y llegan a involucrarse con la misma a este nivel (licenciatura) tendrán una mayor tendencia hacia el estudio de postgrados y, por supuesto, la investigación científica que ello implica. CRITERIOS DE ACREDITACION - El estudiante debe dominar y conocer los diferentes conceptos que se analizan en el curso. El estudiante debe demostrar capacidad para poner en práctica los conceptos del curso a un nivel que sea congruente con la preparación que el estudiante ha recibido. Debe observarse calidad y buen desempeño en las prácticas y los proyectos que se soliciten al estudiante. PROGRAMACIÓN LÓGICA Y FUNCIONAL 4