CLIP Lab
The Computational logic, Languages, Implementation, and Parallelism Laboratory

clip.gif
Grupo CLIP
PROYECTOS DE FIN DE CARRERA


  1. Conexión Emacs - Ciao Prolog

    Emacs es un editor cuya versatilidad permite su utilización como entorno de desarrollo de programas adaptándolo fácilmente a cualquier lenguaje. Con vistas a su utilización para programas Ciao Prolog, este proyecto consistiría en implementar la conexión entre un proceso Emacs y otro Ciao y la comunicación entre ambos.

    Duración estimada: 6 meses.

  2. Compilador Optimizante para Prolog Estándar.

    En el grupo disponemos en este momento de analizadores de programas que infieren información muy precisa sobre los programas. El objetivo del proyecto es utilizar dicha información para mejorar la calidad del código objeto generado por el compilador. Esto permitiría obtener una velocidad de ejecución mucho mayor.

    Duración estimada: 9 meses.

  3. Repartición Automática de Tareas en Entornos Distribuidos.

    Implementación de un método que permita la repartición automática de tareas en entornos distribuidos heterogéneos. Dicho reprtidor utilizaría información sobre el coste de las tareas obtenida mediate una herramienta ya existente.

    Duración estimada: 9 meses.

  4. Librería de Seguridad para Programas Lógicos.

    Implementación de una librería de gestión de passwords, encriptación, firma electrónica, etc. Dicha implemetación de realizaría mediante un interfaz a paquetes de seguridad existentes.

    Duración estimada: 9 meses.

  5. Evaluación del rendimiento de la Programación de Orden Superior.

    Evaluación del impacto en el rendimiento del uso del orden superior. Optimización de programas de orden superior.

    Duración estimada: 9 meses.

  6. Transformación de programa para indexación multi-argumento.

    La mayoría de los sistemas Prolog indexan la selección de las cláusulas de un predicado para resolver un objetivo por el primer argumento. En este proyecto se pretende la realización de una transformación de programa que permite indexar predicados por múltiples argumentos.

    Duración estimada: 3 meses.

  7. Librería de Expresiones Regulares en Prolog.

    En ciertos casos es más sencillo utilizar expresiones regulares que gramáticas. El proyecto consiste en crear una serie de procedimientos de librería encargados de manipular expresiones regulares, posíblemente traduciéndolas a gramáticas Prolog.

    Duración estimada: 6 meses.

  8. Resolutor de Restricciones para Dominios Finitos.

    Implementación de un algoritmo de resolución de restricciones en dominios finitos. Integración en un sistema de programación lógica.

    Duración estimada: 9 meses.

  9. Reglas de Resolución de Restricciones.

    Las Constraint Handling Rules (CHR) o Reglas de Resolución de Restricciones son un lenguaje que permite la definición de un sistema de restricciones junto con los procedimientos para resolver restricciones en dicho sistema. Su implementación permite el manejo de sistemas de restricciones definidos por el propio programador (en lugar de limitarse a los que provee el lenguaje). En este proyecto se trataría de implementarlas en Ciao Prolog.

    Duración estimada: 9 meses.

  10. Generador de Interfaces Gráficos.

    Implementación de un generador de interfaces gráficos, a partir uno de los interfaces de dominio público existentes en este momento (vtcl, etc.).

    Duración estimada: 9 meses.

  11. Interfaz CORBA para Prolog Estándar.

    Implementación de un interfaz CORBA para Prolog estándar usando partes de las implementaciones GNU de CORBA.

    Duración estimada: 9 meses.

  12. Transformación de Programas Prolog sobre Matrices.

    Implementación de un esquema de transformación de programas Prolog que manejan los argumentos de los términos mediante la utilización del builtin arg/3 en otros equivalentes que inspeccionan los mismos argumentos en una lista. Evaluación de la mejora de rendimiento de unos frente a otros.

    Duración estimada: 6 meses.

  13. Expansiones de código Prolog

    El lenguaje Ciao Prolog tiene la característica de permitir realizar transformaciones del código de los programas durante la compilación de los mismos de forma simple, sin más que definir dicha expansión en forma de gramática. Se trata en este proyecto de realizar la transformación inversa: a partir de la gramática y el código ya transformado, obtener el código original del programa. El principio es similar al del desensamblado de código.

    Duración estimada: 6 meses.

  14. Ejecución de Prolog con suspensión de objetivos.

    La regla de control de Prolog consiste en la ejecución de los objetivos de un resolvente de izquierda a derecha. Sin embargo, se puede extender de manera que algunos predicados tienen condiciones de suspensión, de forma que los objetivos de dichos predicados no se ejecutan hasta que las condiciones se satisfagan, quedando suspendidos hasta ese momento. Se trata de extender la maquinaria de ejecución de Ciao Prolog para implementar esta forma de ejecución.

    Duración estimada: 9 meses.

  15. ``Perfilador'' de la ejecución paralela de programas Prolog.

    Implementación de un programa que lea trazas de ejecución paralela de un programa Prolog y obtenga a partir de ellas un resumen de las características de dicha ejecución, tales como: tiempo y recursos consumidos por cada predicado del programa, número de fallos ocurridos, cantidad de paralelismo en la ejecución, etc.

    Duración estimada: 9 meses.

  16. Depurador visual de la ejecución de Prolog paralelo.

    Implementación de una herramienta de depuración de programas Prolog paralela consistente en visualizar la creación de procesos paralelos durante la misma ejecución del programa.

    Duración estimada: 9 meses.

  17. Aplicaciones de Ciao Distribuido.

    Programas que explotan el procesamiento distribuido, por ejemplo: juegos, bases de datos, sistemas multiagente, etc.

    Duración estimada: depende de la aplicación..

  18. Desarrollo de Aplicaciones WWW utilizando la librería PiLLoW.

    Duración estimada: depende de la aplicación.

  19. Representación de grafos en ventanas.

    Diseño e implementación en Prolog de algoritmos que permitan dibujar grafos en ventanas gráficas de la forma más visualmente clara para el usuario.

    Duración estimada: 9 meses.