G4011445 - Programación Declarativa (Programación) - Curso 2013/2014
Información
- Créditos ECTS
- Créditos ECTS: 4.50
- Total: 4.5
- Horas ECTS
- Clase Expositiva: 18.00
- Clase Interactiva Laboratorio: 19.00
- Horas de Titorías: 1.00
- Total: 38.0
Outros Datos
- Tipo: Materia Ordinaria Grao RD 1393/2007
- Departamentos: Electrónica e Computación
- Áreas: Ciencia da Computación e Intelixencia Artificial
- Centro: Escola Técnica Superior de Enxeñaría
- Convocatoria: 1º Semestre de Titulacións de Grao/Máster
- Docencia e Matrícula: null
Profesores
Horarios
Programa
Existen programas da materia para os seguintes idiomas:
CastelánGalegoObxectivos da materiaA materia de programación declarativa consta de dous grandes bloques temáticos, a programación funcional e a programación lóxica. Esta materia introduce ó alumno de informática nuns paradigmas de programación novedosos dentro da súa formación e proporciona unhas habilidades moi distintas ás desenroladas no contexto dos paradigmas máis convencionais de programación procedural/orientada a obxetos. Sin duda existen numerosos problemas cuxa solución é moito máis sinxela a través de programas descritos en programación lógica ou funcional. Na actualidade, está empezando a usarse cada vez máis as linguaxes lóxicos e funcionais para aplicacións e proxectos a gran escala, y é posibel que nun futuro non moi lonxano estas linguaxes sexan preferidas por unha maioría dos programadores.
Non é difícil encontrar entornos empresariais onde as linguaxes declarativas utilizanse para resolver problemas. Por exemplo, hoxe en día podemos encontrar código escrito en programación lóxica e funcional en entornos tan dispares como aplicacións de bases de datos de comercio electrónico, ferramentas de xestión financieiras, software de predicción económica, sistemas de control de semáforos, ferramentas de parseado, aplicacións de planificación (existen por exemplo exitosas aplicacións en planificación para a asignación de persoal de liñas aéreas a vós comerciais escritas en Haskell), desenrolo de intérpretes de comandos e de linguaxes de guións (compoñentes que aparecen en multitud de aplicacións empresariais propietarias de gran tamaño), aplicacións de intelixencia artificial, sistemas de procesamento de linguaxe natural, etc
Os obxectivos principais desta asignatura os podemos enumerar como:
-Coñecer os principais puntos fortes e debilidades dos paradigmas de programación funcional e lóxico.
-Deseñar, codificar, probar e depurar programas funcionais e lóxicos
-Coñecer os principais ámbitos de aplicación de estos paradigmas como ferramentas alternativas e complementarias de programación.
-Dar unha visión ó alumno duns paradigmas de programación distintos ós que coñece, que implican unha forma de resolver problemas distinta e supoñen un complemento ideal á súa formación como enxeñeiro técnico.
ContidosPROGRAMACIÓN FUNCIONAL:
Conceptos fundamentais. Linguaxes funcionais, intérpretes, expresións, funcións, tipos.
Funcións e números. Operadores, prioridades, asociación, currificación, iteración, composición.
Estructuras de dados características. Listas, cadeas, caracteres, tuplas, árbores.
Aplicacións da programación funcional.
PROGRAMACIÓN LÓXICA:
Cálculos con relaciones, regras y hechos, consultas.
Introducción a Prolog: términos, interacción, consultas de existencia, feitos e regras universais, negación, unificación, aritmética.
Listas, términos como dados
Técnicas de programación: propoñe e verifica, listas de diferencias, etc.
Control: Unificación e sustitucións, regras e metas, árbores de búsqueda
Cortes: aplicacións en programación, negación como fracaso
Aplicacións da programación lóxica
Bibliografía básica e complementariaBibliografía básica
------------------
R. Bird: Introducción a la programación funcional con Haskell, Prentice Hall, 2000.
L. Sterling, E. Shapiro. The art of PROLOG. MIT press, 1994.
Bibliografía complementaria
---------------------------
R. Peña Mari: La programación funcional en Haskell, Univ. Complutense de Madrid, 1995.
Sethi, R.: Lenguajes de programación: conceptos y constructores, Addison-Wesley, 1992
M. P. Jones: Una introducción a Gofer, Univ. de Yale, 1991
C. J. Hogger: Introduction to logic programming. Academic press, 1984.
Bird & Wadler: Introduction to Functional Programming, Prentice-Hall International, 1988.
CompetenciasGenerales:
CG3. Capacidad para diseñar, desarrollar, evaluar y asegurar la accesibilidad,
ergonomía, usabilidad y seguridad de los sistemas, servicios y aplicaciones
informáticas, así como de la información que gestionan.
CG4. Capacidad para definir, evaluar y seleccionar plataformas hardware y
software para el desarrollo y la ejecución de sistemas, servicios y
aplicaciones informáticas
CG8. Conocimiento de las materias básicas y tecnologías, que capaciten para el
aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las
que les doten de una gran versatilidad para adaptarse a nuevas
situaciones.
CG9. Capacidad para resolver problemas con iniciativa, toma de decisiones,
autonomía y creatividad. Capacidad para saber comunicar y transmitir los
conocimientos, habilidades y destrezas de la profesión de Ingeniero
Técnico en Informática.
Instrumentales: Capacidad de análisis y síntesis. Comunicación oral y escrita en gallego,
castellano e inglés. Resolución de
problemas.
Personales: Trabajo en equipo. Habilidades en las relaciones interpersonales. Razonamiento
crítico.
Sistémicas: Creatividad.
FB3. Capacidad para comprender y dominar los conceptos básicos de
matemática discreta, lógica, algorítmica y complejidad computacional, y su
aplicación para la resolución de problemas propios de la ingeniería.
FB4. Conocimientos básicos el uso y programación de los ordenadores, sistemas
operativos, bases de datos y programas informáticos con aplicación en
ingeniería.
RI1. Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y
sistemas informáticos, asegurando su fiabilidad, seguridad y calidad,
conforme a principios éticos y a la legislación y normativa vigente.
RI6. Conocimiento y aplicación de los procedimientos algorítmicos básicos de
las tecnologías informáticas para diseñar soluciones a problemas,
analizando la idoneidad y complejidad de los algoritmos propuestos.
RI7. Conocimiento, diseño y utilización de forma eficiente de los tipos y
estructuras de datos más adecuados a la resolución de un problema.
RI8. Capacidad para analizar, diseñar, construir y mantener aplicaciones de
forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes
de programación más adecuados.
RI15. Conocimiento y aplicación de los principios fundamentales y técnicas
básicas de los sistemas inteligentes y su aplicación práctica.
Competencias asociadas al módulo de Programación:
- Desarrollar programas con un buen estilo de programación, con la
documentación necesaria y los comentarios adecuados.
- Utilizar herramientas de edición, compilación, y ejecución para desarrollar
programas. Capacidad para aplicar estrategias de depuración, prueba y
corrección de programas.
- Conocer diferentes paradigmas de programación y saber elegir el más
apropiado a cada situación.
- Conocimiento de los diferentes paradigmas de programación.
- Exposición oral del trabajo realizado.
Metodoloxía da ensinanza O programa de docencia expositiva baséase en clases de pizarra, nas que se inclúen as explicacións dos temas e seminarios de problemas.
O programa de docencia interactiva organízase de forma regular en sesións semanais de prácticas en laboratorio de ordenadores.
En cada sesión aplícanse na práctica da forma mais inmediata posible os temas explicados nas clases teóricas.
As prácticas estarán centradas no desenvolvemento de programas funcionais e lóxicos utilizando Haskell e Prolog.
O programa de titorías
basearase en seminarios de resolución de problemas relacionados cos
distintos
aspectos do temario e tamén en probas a realizar polos estudantes.
Utilizarase de modo constante o Campus Virtual como ferramenta de apoio a docencia expositiva e interactiva
Sistema de evaluaciónA asignatura ten unha parte teórica e unha parte práctica.
A parte práctica avaliarase ao longo do curso mediante unha avaliación continua na que o profesor realizará un seguimiento do alumno.
Propoñerase a realización dunha serie de programas funcionais e lóxicos que o alumno deberá entregar para a súa avaliación por parte do profesor.
Ademais, poderanse propoñer actividades adicionais avaliables como debates ou presentacións de traballos.
A parte teórica avaliarase mediante un exame escrito que se efectuará á finalización do cuatrimestre.
Na nota final da asignatura, a parte teórica e a parte práctica terán igual valor.
A parte práctica constará de actividades obrigatorias e actividades optativas. As obrigatorias permitirán un máximo de 8 puntos (sobre os 10 da
nota de prácticas). Os outros 2 puntos poderánse alcanzar con actividades optativas.
A parte práctica ** non será posible superala na oportunidade extraordinaria de xullo **. É dicir, quen non
supere a avaliación continua das prácticas ao longo do cuatrimestre, poderá acudir ao exame teórico da oportunidade de xullo pero non poderá superar a materia nesta oportunidade extraordinaria.
Na oportunidade extraordinaria haberá un exame teórico que permitirá poder aprobar aos que só teñen pendente a parte teórica da materia.
Condicións para o "Presentado": Quen se presente ao exame final ou entregue ou participe en 2 actividades de prácticas non poderá ter un "Non presentado" como nota final.
Os estudantes repetidores teñen exactamente o mesmo sistema de avaliación que os estudantes de nova matrícula. Non se conservan notas de ningunha das partes entre convocatorias (dun ano para outro).
Tempo de estudo e traballo persoalClases de pizarra: 18 h presenciais 27 h traballo autonomo do alumno
Clases de prácticas: 19 h presenciais 28.5 h traballo autonomo do alumno
Tutorias e Actividades de avaliacion: 8 h presenciais 12 h traballo autonomo do alumno
Total horas presenciais: 45h
Total horas traballo autonomo: 67,5h
Recomendacións para o estudo da materiaRecomendase realizar a totalidade dos exercicios dos boletíns de problemas e de prácticas, tanto os que se resolvan nas propias sesións de problemas e de prácticas, como os que queden propostos. Recomendase igualmente utilizalas tutorías para a resolución de dudas sobre calquer aspecto da materia.