Guía docente de Lógica y Programación (Especialidad Ingeniería Software) (29611BA)
Grado
Rama
Módulo
Materia
Curso
Semestre
Créditos
Tipo
Profesorado
Teórico
Práctico
Tutorías
Francisco Miguel García Olmedo
Ver email- Primer semestre
- Martes de 17:30 a 20:30 (Fac. Ciencias - Desp.02)
- Viernes de 18:30 a 21:30 (Fac. Ciencias - Desp.02)
- Segundo semestre
- Martes de 17:30 a 20:30 (Fac. Ciencias - Desp.02)
- Viernes de 18:30 a 21:30 (Fac. Ciencias - Desp.02)
Prerrequisitos y/o Recomendaciones
No es necesario que los alumnos tengan aprobadas asignaturas, materias o módulos previos como requisito indispensable para cursar este módulo. No obstante se recomienda la superación de los contenidos y adquisición de competencias de las materias de formación básica y de rama.
Breve descripción de contenidos (Según memoria de verificación del Grado)
- Programación lógica con PROLOG: aritmética, recursividad y predicados metalógicos.
- Lambda cálculo.
- Lógica combinatoria.
- Lógica y programación funcional.
Competencias
General competences
- CG09. 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.
Competencias Transversales
- CT03. Capacidad para el uso y aplicación de las TIC en el ámbito académico y profesional.
Resultados de aprendizaje (Objetivos)
- Conocer el paradigma declarativo de la programación en general y de la programación lógica en particular, como alternativa a otros tipos de programación.
- Conocer los orígenes y la base teórica de la programación lógica. Conocer los aspectos más destacados del lenguaje de programación PROLOG y saber usarlo para la resolución computacional de problemas.
- Conocer y comprender los conceptos de lambda calculus, los diversos tipos de reducción y su operativa para calcular resultados de funciones.
- Conocer y comprender los conceptos de lógica combinatoria y su relación con el lambda calculus, como base teórica de la Programación Funcional.
- Conocer el paradigma de la programación funcional como alternativa a otros tipos de programación, y sus diferencias, ventajas e inconvenientes con otros paradigmas.
- Ser capaz de comprender las técnicas más importantes que distinguen a los lenguajes funcionales, identificando la sintaxis y los aspectos básicos de programación en un lenguaje funcional concreto.
- Ser capaz de desarrollar programas en un lenguaje funcional concreto que resuelvan una variedad de problemas tipo.
- Ser capaz de resolver distintos problemas tipo por medio de diferentes paradigmas de programacioón: funcional, lógico, procedural, usando un intérprete único, y saber comparar las diferentes aproximaciones.
- Ser capaz de desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software.
Programa de contenidos Teóricos y Prácticos
Teórico
- Lógica de Primer Orden: Sintaxis y Semántica.
- Formas Normales. Unificación y Resolución. Fundamentos de la implementación de Prolog.
- Notación y la teoría básica: la teoría lambda.
- Reducción: nociones de reducción, el teorema de Church-Rosser, reglas delta, residuos, formas normales.
- Lógica Combinatoria: lógica combinatoria, lógica combinatoria y lambda-calculus. Algoritmo de abstracción. Supercombinadores.
- Computabilidad: puntos fijos, sistemas numéricos, lambda-expresabilidad.
Práctico
- Introducción a Prolog: instalación y funcionamiento básicos.
- Manejo de la sintaxis. Ejemplos de programas paradigmáticos. Manejo de las estructuras de datos primitivos: árboles, listas, conjuntos. Recursos de control y uso del corte. Modificación de la base de conocimiento.
- Introducción a Haskell: instalación y funcionamiento básicos.
- Manejo de tipos, constructores, operadores y expresiones primitivas. Clases. Evaluación perezosa.
Bibliografía
Bibliografía fundamental
- Barendregt, H.P. The Lambda Calculus. Its Syntax and Semantics. North-Holland, 1984.
- Clocksin, W.F.; Mellish, C.S. Programming in Prolog, 5th Edition. Springer Verlag.
- Chin-Liang Chang; Chart-Tung Lee, R. Symbolic Logic and Mechanical Theorem Proving. Academic Press, 1973.
- Delahaye, J.P. Formal Methods in Artificial Intelligence. Willey, 1987.
- Hindley, J.R.; Seldin, J.P. Lambda-Calculus and Combinators. And Introduction. Cambridge University Press, 2008.
- Hankin, C.; An Introduction to Lambda Calculi for Computer Scientists. Kings College Publications (28 febrero 2004).
Bibliografía complementaria
- Ruiz, B.C., Gutiérrez, F. y otros. Razonando con Haskell. Thomson, 2004.
- Bird, R. Introducción a la Programación Funcional con Haskell. Prentice Hall, 2000.
- Hortalá T.; Martí, N. y otros. Lógica Matemática para Informáticos. Ejercicios Resueltos. Prentice Hall Pearson, 2008.
- Lipovaca, M. Learn you a Haskell for Great Good! A beginner’s Guide. No Starch Press, 2011.
- Mendelson, E. Introduction to Mathematical Logic, Chapman and Hall, 1997.
- Sterling L.; Shapiro, E. The Art of Prolog: Advanced Programming Techniques. MIT Press, 1986.
Enlaces recomendados
- Página oficial de Haskell
- Aprende Haskell por el Bien de Todos
- Learn You a Haskell for Great Good
- Real Wordl Haskell
- Tutorial de Prolog de J.R. Fisher prolog :- tutorial
- Learn prolog now
- IHaskell
- Calysto prolog, un núcleo de Prolog para jupyter
- Natural language toolkit nltk
Metodología docente
- MD01. Lección Magistral (Clases Teóricas-Expositivas)
- MD02. Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo).
- MD03. Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías).
- MD04. Actividades no presenciales Individuales.
- MD05. Actividades no presenciales Grupales.
- MD06. Tutorías Académicas.
Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)
Evaluación Ordinaria
Todo lo relativo a la evaluación se regirá por la Normativa de Evaluación y Calificación de los Estudiantes vigente en la Universidad de Granada, que puede consultarse en Secretaría General. Preferentemente, la evaluación se ajustará al sistema de evaluación continua del aprendizaje del estudiante siguiendo el artículo 7 de la anterior normativa.
El criterio de evaluación se especifica a continuación:
- Un 50 % de la evaluación se basará en las prácticas entregadas y defendidas por los alumnos dentro de los plazos que se fijarán a lo largo del curso.
- Un 30 % de la evaluación se basará en la elaboración y presentación ante el profesor y el resto de estudiantes de un trabajo sobre un tema elegido por el estudiante.
- Un 20 % de la nota vendrá dada por la prueba teórico-práctica que se realizará una vez finalizado el curso, la cual podría ser individual o en grupos.
Dadas las condiciones específicas de la asignatura, su docencia y las características del material evaluable, todas y cada una de las pruebas de evaluación serán en línea a través de los medios proporcionados por la plataforma oficial docente PRADO y salas de G-Meet creadas al efecto, las cuales serán suficientemente publicitadas.
El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D
1125/2003, de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones
universitarias de carácter oficial y validez en el territorio nacional.
Evaluación Extraordinaria
En las convocatorias extraordinarias la evaluación consistirá en un examen general; éste podrá incluir cuantas pruebas sean necesarias para acreditar que el estudiante ha adquirido la totalidad de las competencias descritas en la Guía Docente de la asignatura.
Evaluación única final
Según la normativa vigente, la evaluación única final, entendiendo por tal la que se realiza en un solo acto académico, podrá incluir cuantas pruebas sean necesarias para acreditar que el estudiante ha adquirido la totalidad de las competencias descritas en la Guía Docente de la asignatura.
Información adicional
Régimen de asistencia
- La asistencia a las clases teóricas no será obligatoria, aunque la participación activa en clase y la entrega de ejercicios planteados por el profesor será tenida en cuenta dentro del sistema de evaluación continua de la asignatura.
- La asistencia a las clases prácticas no será obligatoria, exceptuando las sesiones en las que se programen pruebas de evaluación. En cualquier caso, la asistencia y participación activa en clase será tenida en cuenta dentro del sistema de evaluación continua de la asignatura.