Universidad de La Rioja

Métodos formales en programación
GUÍA DOCENTE    Curso 2022-23

Titulación:Grado en Matemáticas701G
Asignatura:Métodos formales en programación830
Materia:Informática
Módulo:Informática
Modalidad de enseñanza de la titulación:PresencialCarácter:Obligatoria
Curso:2Créditos ECTS:6,00Duración:Semestral (Segundo Semestre)
Horas presenciales:60,00Horas estimadas de trabajo autónomo:90,00
Idiomas en que se imparte la asignatura:Español
Idiomas del material de lectura o audiovisual:Inglés, Español

Departamentos responsables de la docencia

MATEMÁTICAS Y COMPUTACIÓNR111
Dirección:C/ Madre de Dios, 53Código postal:26006
Localidad:LogroñoProvincia:La Rioja
Teléfono:941299452Fax:941299460Correo electrónico:dpto.dmc@unirioja.es

Profesorado previsto

Profesor:Lamban Pardo, LaureanoResponsable de la asignatura
Teléfono:941299446Correo electrónico:lalamban@unirioja.es
Despacho:3227Edificio:CENTRO CIENTÍFICO TECNOLÓGICOTutorías:Consultar
Profesor:Inés Armas, Adrián
Teléfono:9673Correo electrónico:adrian.ines@unirioja.es
Despacho:D3232 Edificio:CENTRO CIENTÍFICO TECNOLÓGICOTutorías:Consultar
Profesor:Rubio García, Julio
Teléfono:941299448Correo electrónico:julio.rubio@unirioja.es
Despacho:3242Edificio:CENTRO CIENTÍFICO TECNOLÓGICOTutorías:Consultar

Descripción de los contenidos

- Abstracción de datos. Especificación /implementación de tipos de datos. Relación con la orientación a objetos. Aplicaciones al diseño orientado a objetos (diseño basado en responsabilidades).
- Especificación de algoritmos.
- Conceptos sobre lenguajes: sintaxis y semántica.
- Análisis de algoritmos: eficiencia y corrección.
- Aplicación a la práctica de los principios fundamentales y técnicas básicas de los sistemas inteligentes.

Requisitos previos de conocimientos y competencias para poder cursar con éxito la asignatura

Recomendados para poder superar la asignatura.

Se aconseja conocer conocimientos y competencias relacionadas con la programación, especialmente con los fundamentos básicos del paradigma orientado a objetos.
Asignaturas que proporcionan los conocimientos y competencias:

Contexto

La asignatura pertenece al módulo "Informática" y aparece en el segundo semestre del segundo curso. Dentro de dicho bloque, es la continuación natural de la asignatura "Programación Orientada a Objetos". Se presupone a los estudiantes cierta familiaridad con nociones básicas sobre programación orientada a objetos (clase, objeto, herencia, etc.) y en concreto con el lenguaje de programación Java.
Dentro del módulo "Informática", la asignatura pretende dotar a los estudiantes de las competencias necesarias para ser capaces de diseñar e implementar aplicaciones desde el paradigma orientado a objetos, viendo los elementos esenciales de la orientación a objetos como herramientas necesarias para dicho diseño. Además, el otro punto esencial de la asignatura es aportar una perspectiva formal (mayor nivel de abstracción) sobre diferentes aspectos relacionados con la programación (sintaxis, semántica, corrección y eficiencia), buscando una mejora en los hábitos del estudiante a la hora de programar, que mejore la calidad y fiabilidad de su trabajo.
Las prácticas de laboratorio de la asignatura consisten en el diseño y desarrollo en el lenguaje de programación Java de los sistemas de clases necesarios para la construcción de pequeñas aplicaciones. Se pretende que, a lo largo de la asignatura, aparezcan involucrados en las prácticas los elementos centrales de la programación orientada a objetos, vistos aquí como elementos necesarios para el diseño. También se realizan algunos ejercicios de verificación formal de pequeños programas escritos en Java.

Competencias

Competencias generales

CG6: Relacionar el conocimiento especializado de Matemáticas con el conocimiento general en el que se inserta y con las herramientas que utiliza cuando se aplica en diversas opciones profesionales, especialmente en el marco de las TIC.
CG7: Saber abstraer las propiedades estructurales de objetos de la realidad observada y de otros ámbitos, distinguiéndolas de aquellas puramente ocasionales, comprobando la aplicabilidad de las Matemáticas.
CG8: Capacitar para el aprendizaje autónomo de nuevos conocimientos y técnicas.

Competencias específicas

CE4: Encontrar soluciones algorítmicas de problemas matemáticos y de aplicación (de ámbito académico, técnico, financiero o social), sabiendo comparar distintas alternativas, según criterios de adecuación, complejidad y coste.
CE5: Saber programar algoritmos de modo correcto y eficaz, eligiendo convenientemente lenguajes y plataformas de programación.

Resultados del aprendizaje

- Aplicar los elementos característicos de la programación orientada a objetos en el diseño y la programación de aplicaciones.
- Utilizar los conceptos relacionados con la abstracción de datos para facilitar el desarrollo de aplicaciones desde un enfoque orientado a objetos.
- Comprender y aprender a establecer descripciones formales de algoritmos.
- Conocer algunos conceptos básicos sobre sintaxis y semántica de lenguajes de programación.
- Aprender a realizar pequeñas verificaciones formales de corrección de algoritmos, conocimiento enfocado a adquirir mejores hábitos de programación.
- Conocer y aplicar conceptos y herramientas relacionados con el análisis de la complejidad y la eficiencia.
- Usar con solvencia algún lenguaje que permita un enfoque orientado a objetos.
- Conocer y aplicar los principios fundamentales y técnicas básicas de los sistemas inteligentes.

Temario

  1. Introducción: Abstracción y formalismo en Programación.
  2. Especificación e implementación de tipos de datos.
  3. Tipos abstractos y orientación a objetos. Nociones sobre eficiencia.
  4. Especificación formal de algoritmos.
  5. Sintaxis y semántica de un lenguaje imperativo sencillo.
  6. Verificación formal de la corrección de algoritmos.

Bibliografía

Tipo:Título
BásicaR. Peña. "Diseño de programas: formalismo y abstracción". Prentice Hall, 1997. Absys
BásicaX. Arregi, J. Gaintzarain, P. Lucio, M. Maritxalar, J. Álvez. "Especificación, verificación y derivación formal" [Recurso electrónico]. Pearson Educación, 2015. Absys
BásicaR. D. Tennent. "Specifying software". Cambridge University Press, 2002. Absys
BásicaC. Muñoz, A. Niño, A. Vizcaíno. "Introducción a la programación con orientación a objetos". Prentice Halll, 2002 Absys
BásicaF. Gutiérrez , F. Durán, E. Pimentel. "Programación orientada a objetos con Java". Thomson, 2007. Absys
BásicaJ. Lewis, J. Chase. "Estructuras de datos con Java. Diseño de estructuras y algoritmos". Pearson Addison Wesley, 2006. Absys
BásicaM. Naftalin, P. Wadler. "Java generics and collections". O'Reilly, 2007. Absys
ComplementariaE. L. Silva Ramírez. "Verificación formal de algoritmos : ejercicios resueltos". Cádiz : Universidad de Cádiz, Servicio de Publicaciones, 2010. Absys
ComplementariaE. L. Silva Ramírez. "Corrección de algoritmos complejos : verificación formal". Cádiz : Universidad de Cádiz, Servicio de Publicaciones, 2010. Absys
ComplementariaJ. Gosling, B. Joy, G. Steele, G. Bracha. "The Java Language Specification". Addison-Wesley, 2013. Absys
ComplementariaN. Kalicharan. "Advanced topics in Java : core concepts in data structures" [Recurso electrónico]. Apress, 2014. Absys
Recursos en Internet
Aula virtual con los materiales necesarios para el seguimiento de la asignatura.
      http://campusvirtual.unirioja.es
Página oficial de Java.
      http://www.oracle.com/technetwork/java/index.html
Eclipse IDE para desarrolladores de Java.
      http://www.eclipse.org/
Krakatoa-Why. Una herramienta para verificación formal de programas Java.
      http://krakatoa.lri.fr/

Metodología

Modalidades organizativas

Clases teóricas
Clases prácticas
Estudio y trabajo autónomo individual

Métodos de enseñanza

Método expositivo - Lección magistral
Resolución de ejercicios y problemas
Aprendizaje basado en problemas

Organización

Actividades presencialesTamaño de grupoHoras
Clases prácticas de laboratorio o aula informáticaReducido28,00
Clases teóricasGrande32,00
Total de horas presenciales60,00
Trabajo autónomo del estudianteHoras
Estudio autónomo individual o en grupo30,00
Preparación de las prácticas y elaboración de cuaderno de prácticas30,00
Resolución individual de ejercicios, cuestiones u otros trabajos, actividades en biblioteca o similar30,00
Total de horas de trabajo autónomo90,00
Total de horas150,00

Evaluación

Sistemas de evaluaciónRecuperableNo Recup.
Pruebas escritas70%
Informes y memorias de prácticas 25%
Técnicas de observación 5%
Total100%

Comentarios

La evaluación continua se realizará mediante la entrega de informes y memorias de prácticas (25%) y las técnicas de observación (5%, correspondiente a la asistencia con participación y aprovechamiento a las sesiones de laboratorio). Las pruebas escritas corresponden al examen final de la asignatura.
El material didáctico (presentaciones de teoría, ejercicios, guiones de prácticas, etc.) se encontrará disponible en el aula virtual para todos los estudiantes matriculados en esta asignatura.

Criterios críticos para superar la asignatura

Para superar la asignatura será necesario obtener al menos un 4 sobre 10 en la calificación correspondiente a las pruebas escritas (examen final), y que la suma ponderada de las calificaciones de las tres partes de la evaluación sea mayor o igual que 5.
15/03/2023 10:32:21 - G 2022-23 - 701G - 830