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

Competencias instrumentales

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.

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.

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

Representante de la
Academias de ISC de
los
Institutos
Tecnolgicos de San
Luis Potos, Celaya,
Pinotepa, Superior de
Libre,
Tapachula,
Toluca.

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.

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.

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.

Evaluacin perezosa.

3.1. La estrategia de evaluacin perezosa.


3.2. Tcnicas de programacin funcional
perezosa.

Fundamentos de la
programacin lgica.

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.

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

Actividades de Aprendizaje

Identificar
los
lenguajes
de
representativa.

paradigmas
y
programacin

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

Actividades de Aprendizaje

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

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.

También podría gustarte