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: Competencias genricas

Conocer los principios lgicos y Competencias instrumentales


funcionales de la programacin para
identificarlos y aplicarlos en la Capacidad de anlisis y sntesis.
resolucin de problemas a travs del Capacidad de organizar y planificar.
diseo de agentes inteligentes. 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 Observaciones


Participantes
elaboracin o revisin (cambios y justificacin)
Instituto Tecnolgico de Representantes de los Reunin Nacional de Diseo
Saltillo, del 5 al 9 de Institutos Tecnolgicos e Innovacin Curricular para
octubre de 2009 de: San Luis Potos, el Desarrollo de
Celaya, Pinotepa, Competencias Profesionales
Superior de Libre, de la Carrera de Ingeniera
Tapachula. en Sistemas
Computacionales.
Instituto Tecnolgico de Representante de la Anlisis, enriquecimiento y
San Luis Potos, del 12 Academias de ISC de elaboracin del programa de
de octubre de 2009 al los Institutos estudio propuesto en la
19 de febrero de 2010 Tecnolgicos de San Reunin Nacional de Diseo
Luis Potos, Celaya, e Innovacin Curricular para
Pinotepa, Superior de el Desarrollo de
Libre, Tapachula, Competencias Profesionales
Toluca. de la Carrera de Ingeniera
en Sistemas
Computacionales.
Instituto Tecnolgico Representantes de los Reunin Nacional de
Superior de Poza Rica Institutos Tecnolgicos Consolidacin Curricular de
Fecha del 22 al 26 de participantes en el la carrera de Ingeniera en
febrero de 2010 diseo de la carrera de Sistemas Computacionales.
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


1 Conceptos Fundamentales. 1.1. Estilos de programacin.
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 Evaluacin perezosa. 3.1. La estrategia de evaluacin perezosa.


3.2. Tcnicas de programacin funcional
perezosa.

4 Fundamentos de la 4.1. Repaso de la lgica de primer orden.


programacin lgica. 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.
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
Actividades de Aprendizaje
desarrollar
Visualizar los diversos estilos de la
Identificar los paradigmas y programacin.
lenguajes de programacin
Identificar los conceptos bsicos de la
representativa.
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
Actividades de Aprendizaje
desarrollar
Identificar los conceptos bsicos de la
programacin funcional.
Conocer los principales puntos
Describir las caractersticas de la
fuertes y debilidades del paradigma
de programacin funcional programacin funcional.
Reconocer la estructura y elementos de la
Identificar los elementos de la programacin funcional.
programacin funcional. Investigar; al menos, un lenguaje de
programacin representativa diferente al
Aplicar la programacin funcional establecido para la materia.
en la resolucin de problemas
Realizar mapa conceptual de los lenguajes
reales.
de la programacin funcional vistos en la
Disear herramientas alternativas y 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
Actividades de Aprendizaje
desarrollar
Identificar los conceptos bsicos de la
Conocer la evaluacin perezosa. evaluacin perezosa.
Describir las tcnicas de la programacin
Identificar la evaluacin perezosa
como una de las funciones de la funcional perezosa.
programacin representativa. Investigar, al menos, una tcnica de
programacin funcional perezosa vista en
Aplicar la evaluacin perezosa en clase.
la resolucin de problemas. Realizar mapa conceptual de la evaluacin
perezosa
Disear programacin con
Aplicar una tcnica de la programacin
modularidad.
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
Actividades de Aprendizaje
desarrollar
Identificar los conceptos bsicos de la
programacin lgica.
Conocer las ventajas y desventajas
Describir las clausulas de Horn y
del paradigma de programacin
lgica. resolucin SLD, para identificar reglas de
inferencia lgica y emplearlas en la
Identificar los elementos de la representacin del conocimiento.
programacin lgica. Reconocer los elementos de la semntica
de la programacin lgica para interpretar
Aplicar la programacin lgica en la el conocimiento y aplicarlo en su
resolucin de problemas reales.
representacin.
Disear sistemas expertos con Investigar, al menos, un lenguaje de
programacin lgica. 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 Funcional. Universidad de Utrecht,


Departamento de Informtica. 1995.

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
Programacin Funcional. Clase 4 En lnea en:
http://funcional.fciencias.unam.mx/pdf/class4.pdf
2. Programacin Funcional. En lnea en:
http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional
3. Programacin Lgica. En lnea en:
http://es.wikipedia.org/wiki/Programacin_lgica
4. Programacin lgica. En lnea en:
www.cs.cinvestav.mx/PaginaAntigua/SC/publica/chapa/intro_lm/node42.html
5. Programacin lgica. En lnea en:
http://expo.itchihuahua.edu.mx/view.php?f=prog_46
6. 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
7. 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.

También podría gustarte