Guía docente de Metodología de la Programación (2961118)

Curso 2022/2023
Fecha de aprobación: 14/06/2022

Grado

Grado en Ingeniería Informática

Rama

Ingeniería y Arquitectura

Módulo

Formación Básica

Materia

Informática

Curso

1

Semestre

2

Créditos

6

Tipo

Troncal

Profesorado

Teórico

  • Francisco Javier Abad Ortega. Grupo: D
  • Silvia Acid Carrillo. Grupo: C
  • Francisco José Cortijo Bon. Grupo: B
  • Natalia Ana Díaz Rodríguez. Grupo: C
  • Juan Antonio Morente Molinera. Grupo: E
  • David Alejandro Pelta Mochcovsky. Grupo: A

Práctico

  • Silvia Acid Carrillo Grupos: 7 y 8
  • Francisco José Cortijo Bon Grupos: 4, 5 y 6
  • Juan Antonio Morente Molinera Grupos: 12, 13 y 14
  • David Alejandro Pelta Mochcovsky Grupos: 2 y 3
  • Siham Tabik Ouled Hrour Grupos: 10, 11 y 9
  • José Ramón Trillo Vílchez Grupo: 1

Tutorías

Francisco Javier Abad Ortega

Email
  • Primer semestre
    • Lunes de 09:30 a 11:30 (D 68 (Etsiccp))
    • Martes de 16:30 a 18:30 (D 68 (Etsiccp))
    • Jueves de 09:30 a 11:30 (D 68 (Etsiccp))
  • Segundo semestre
    • Martes de 17:30 a 20:30 (D20 Etsiit)
    • Jueves de 09:30 a 12:30 (D20 Etsiit)

Silvia Acid Carrillo

Email
  • Primer semestre
    • Lunes
      • 12:30 a 14:30 (D 68 (Etsiccp))
      • 16:00 a 18:00 (D 68 (Etsiccp))
    • Martes de 12:00 a 14:00 (D22 Etsiit)
  • Segundo semestre
    • Martes de 16:00 a 18:00 (D21 Etsiit)
    • Miércoles de 18:00 a 20:00 (D21 Etsiit)
    • Jueves de 12:30 a 14:30 (D21 Etsiit)

Francisco José Cortijo Bon

Email
  • Primer semestre
    • Miércoles
      • 08:30 a 10:30 (D29 Etsiit)
      • 17:30 a 18:30 (D29 Etsiit)
    • Jueves
      • 08:30 a 10:30 (D29 Etsiit)
      • 17:30 a 18:30 (D29 Etsiit)
  • Segundo semestre
    • Lunes
      • 08:30 a 09:30 (D29 Etsiit)
      • 10:30 a 11:30 (D29 Etsiit)
    • Martes de 09:30 a 11:30 (D29 Etsiit)
    • Viernes
      • 08:30 a 09:30 (D29 Etsiit)
      • 10:30 a 11:30 (D29 Etsiit)

Natalia Ana Díaz Rodríguez

Email
No hay tutorías asignadas para el curso académico.

Juan Antonio Morente Molinera

Email
  • Primer semestre
    • Jueves
      • 09:00 a 11:00 (Bp (Fcyd))
      • 18:00 a 20:00 (Bp (Fcyd))
    • Viernes de 18:00 a 20:00 (Bp (Fcyd))
  • Segundo semestre
    • Miércoles de 09:00 a 12:00 (Fo15 Etsiit)
    • Jueves de 09:00 a 12:00 (Fo15 Etsiit)

David Alejandro Pelta Mochcovsky

Email
  • Primer semestre
    • Martes de 09:00 a 12:00 (D16 Etsiit)
    • Miércoles de 09:00 a 10:00 (D16 Etsiit)
    • Jueves de 11:30 a 13:30 (D16 Etsiit)
  • Segundo semestre
    • Lunes de 11:30 a 14:30 (D16 Etsiit)
    • Martes de 08:30 a 11:30 (D16 Etsiit)

Siham Tabik Ouled Hrour

Email
  • Primer semestre
    • Miércoles de 11:00 a 13:00 (Nd Etsiit)
    • Viernes de 09:00 a 11:00 (Nd Etsiit)
  • Segundo semestre
    • Miércoles de 16:00 a 17:00 (Nd Etsiit)
    • Viernes
      • 09:00 a 11:00 (Nd Etsiit)
      • 16:00 a 17:00 (Nd Etsiit)

José Ramón Trillo Vílchez

Email
No hay tutorías asignadas para el curso académico.

Prerrequisitos y/o Recomendaciones

Los estudiantes no necesitan tener asignaturas aprobadas como requisito indispensable para cursar esta asignatura, no obstante, se recomienda la adquisición de los conocimientos y competencias de las materias de formación básica, teniendo especial relevancia los procedentes de la materia de “Fundamentos de Programación”.

Breve descripción de contenidos (Según memoria de verificación del Máster)

  • Tipos de datos del lenguaje de alto nivel y su representación interna.
  • Referencias de memoria y memoria dinámica.
  • Encapsulamiento y ocultamiento de la información.
  • Diseño modular y creación de bibliotecas.
  • Herramientas de depuración, pruebas y validación.
  • Gestión de errores.
  • Mantenimiento del software.
  • E/S, ficheros.
  • Proyecto informático de programación.

Competencias

Competencias Específicas

  • CE04. Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería.
  • CE05. Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de problemas propios de la ingeniería.

Resultados de aprendizaje (Objetivos)

  • Comprender la relación entre tipos de alto nivel y la representación a bajo nivel de dicha información
  • Distinguir los conceptos de eficiencia en tiempo y espacio, así como su relación cuando se desarrolla un programa.
  • Distinguir y manejar correctamente las referencias y los objetos referenciados.
  • Justificar la importancia de los conceptos de encapsulamiento y ocultamiento de la información.
  • Aprender a desarrollar nuevos tipos de datos, realizando una correcta separación entre interfaz e implementación.
  • Saber enfrentarse a problemas de mayor tamaño considerando una división en subproblemas y una solución basada en la programación modular y la abstracción.
  • Comprender cómo los mecanismos de abstracción soportan la creación de componentes software modulares y reutilizables.
  • Manejar correctamente herramientas de depuración, pruebas y validación.
  • Aprender a desarrollar código con una correcta gestión de condiciones de excepción.
  • Entender la necesidad de un correcto diseño para obtener un software de mayor calidad (mejor preparado para su mantenimiento).
  • Ser capaces de desarrollar la solución de problemas de mayor tamaño, incluyendo una correcta implementación y documentación.
  • Asimilar los principios básicos de la abstracción para facilitar el estudio de la programación orientada a objetos.
  • Aprender a realizar una correcta gestión de la E/S, especialmente motivada por la necesidad de manejar grandes cantidades de información almacenada en ficheros.

Programa de contenidos Teóricos y Prácticos

Teórico

Tema 1. Punteros y memoria dinámica

  1. El tipo de dato puntero.
  2. Vectores, matrices, cadenas y punteros.
  3. Memoria dinámica.
  4. Ejemplos de estructuras de datos simples.

Tema 2. Funciones

  1. La función main.
  2. La responsable de que todo funcione: La Pila.
  3. Paso de parámetros y devolución de resultados.
  4. Funciones inline.
  5. Parámetros con valor por defecto.
  6. Punteros a función.

Tema 3. Tipos de datos abstractos en C++: Clases

  1. Abstracción y diseño de clases: atributos y métodos.
  2. Constructores, destructor y asignación en clases que gestionan memoria dinámica.
  3. Sobrecarga de operadores.

Tema 4. Gestión de E/S. Ficheros

  1. Flujos de E/S.
  2. Operaciones básicas con flujos.
  3. Flujos asociados a ficheros.
  4. Ficheros de texto y binarios.

Práctico

Prácticas sobre los contenidos teóricos.

Los estudiantes realizarán prácticas sobre los contenidos desarrollados en el programa teórico mediante la resolución de diferentes problemas propuestos.

  • Prácticas sobre el tema 1. Punteros y memoria dinámica.
  • Prácticas sobre el tema 2. Funciones.
  • Prácticas sobre el tema 3. Clases.
  • Prácticas sobre el tema 4. Gestión de E/S. Ficheros

Proyecto informático de programación.

Los estudiantes aplicarán los conocimientos y destrezas adquiridas en la resolución de un proyecto de programación completo, incluyendo un correcto análisis, diseño, implementación y documentación.

Seminarios.

A lo largo del curso se trabajará en seminarios específicos:

  • Seminario 1. El modelo de compilación en C++. El programa g++
    1. Compilación separada.
    2. El preprocesador, el compilador y el enlazador
    3. g++ : el compilador de GNU para C++
  • Seminario 2. Gestión automatizada de proyectos.
    1. El programa make
    2. Ficheros makefile
    3. Entornos de programación.
  • Seminario3. Modularización. Bibliotecas. El programa ar.
    1. Bibliotecas
    2. El programa ar
  • Seminario 4. Técnicas de gestión de errores y depuración
    1. Devolución de valores de error.
    2. Aserciones: errores en depuración.
    3. Excepciones.
    4. Herramientas de ayuda a la depuración.
  • Seminario 5. Documentación de software
    1. Diseño e implementación.
    2. Herramientas automáticas de documentación.

Bibliografía

Bibliografía fundamental

  • A. Garrido. "Metodología de la programación: de bits a objetos". Editorial Universidad de Granada, 2016. ISBN 978-84-338-5868-9.
  • T. Gaddis, J. Walters, G. Muganda. “Starting Out with C++: Early Objects (8th Edition)”. Addison Wesley 2013
  • A.Garrido. "Prácticas con C++: metodología de la programación (2ª ed.)". Editorial Universidad de Granada, 2017. Edición electrónica. ISBN 978-84-338-6032-3.
  • Deitel & Deitel. C++: How to Program. Prentice Hall-Pearson, 2013

Bibliografía complementaria

  • A. Garrido y J. Martínez-Baena. "Introducción a la programación con C++: ejercicios". Editorial Universidad de Granada, 2016. Edición electrónica. ISBN 978-84-338-5924-2.
  • A. Garrido. "Fundamentos de programación con la STL". Editorial Universidad de Granada, 2016. ISBN 978-84-338-5917-4.
  • Bjarne Stroustrup. “The C++ Programming Language, 4th Edition”. Addison Wesley Professional, 2013.
  • Bjarne Stroustrup. “Programming: Principles and Practice Using C++"  Addison-Wesley, 2014.
  • Sedgewick. “Algorithms in C++”. Addison-Wesley, 2002.

Enlaces recomendados

Páginas para usar como manuales de referencia:

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). 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación Ordinaria

La nota final del estudiante se calculará a partir de las calificaciones que obtenga en las siguientes partes:

Parte teórica: La ponderación de esta parte es del 60%.

  • Para la parte teórica se realizará un examen escrito multi-pregunta sobre los contenidos de la materia impartida.
  • Este examen se realizará en su convocatoria oficial ordinaria.

Parte práctica: La ponderación de esta parte es del 40%.

  • La evaluación del trabajo práctico se realizará, preferentemente, de forma continua y constará de las siguientes pruebas:
    1. Un examen práctico individual que tendrá lugar a mitad del cuatrimestre. (10 %)
    2. La realización de un proyecto informático al final del cuatrimestre (20 %)
    3. La realización de guiones de prácticas a lo largo del cuatrimestre (10 %)

 

Si la nota de la parte teórica es superior o igual a 3,5 (sobre 10), entonces la nota final será:

      Nota final = 0,6 * parte teórica + 0,4 * parte práctica

En otro caso, la nota final será la nota de la parte teórica (sobre 6), pudiendo el estudiante mantener la nota de la parte práctica para la convocatoria extraordinaria.

Evaluación Extraordinaria

Los estudiantes podrán optar entre: conservar la nota de cada parte obtenida en la convocatoria ordinaria o volver a ser evaluados.

Se realizarán las siguientes pruebas en un único acto académico:

Parte teórica: La ponderación de esta parte es del 60%.

  • Para la parte teórica se realizará un examen escrito multi-pregunta sobre los contenidos de la materia impartida.

Parte práctica: La ponderación de esta parte es del 40%.

  • Para la parte práctica se realizará un examen práctico multi-pregunta sobre los contenidos de la materia impartida.

 

Si la nota de la parte teórica es superior o igual a 3,5 (sobre 10), entonces la nota final será:

      Nota final = 0,6 *  parte teórica + 0,4 *  parte práctica

En otro caso, la nota final será la nota de la parte teórica (sobre 6).

Evaluación única final

Esta modalidad de evaluación se realizará en un único acto académico en la fecha establecida por el Centro y consistirá en un examen (evaluado de 0 a 10) que incluirá preguntas que garanticen que el alumno ha adquirido la totalidad de las competencias, tanto teóricas como prácticas, descritas en esta misma guía docente.

Parte teórica: La ponderación de esta parte es del 60%.

Parte práctica: La ponderación de esta parte es del 40%.

 

Si la nota de la parte teórica es superior o igual a 3,5 (sobre 10), entonces la nota final será:

      Nota final = 0,6 * parte teórica + 0,4 * parte práctica

En otro caso, la nota final será la nota de la parte teórica (sobre 6).