Guía docente de Metodología de la Programación (2961118)
Grado
Rama
Módulo
Materia
Curso
Semestre
Créditos
Tipo
Profesorado
Teórico
- Francisco José Cortijo Bon. Grupo: B
- Javier Martínez Baena. Grupo: A
- Juan Antonio Morente Molinera. Grupo: E
- David Alejandro Pelta Mochcovsky. Grupo: C
- Francisco Javier Rodríguez Díaz. Grupo: F
Práctico
- Francisco José Cortijo Bon Grupos: 4, 5 y 6
- Javier Martínez Baena Grupos: 1, 2 y 3
- Juan Antonio Morente Molinera Grupos: 12, 13 y 14
- David Alejandro Pelta Mochcovsky Grupos: 7 y 8
- Francisco Javier Rodríguez Díaz Grupos: 15 y 16
- María Cristina Zuheros Montes Grupo: 10
Tutorías
Francisco José Cortijo Bon
Email- Primer semestre
- Miércoles
- 08:30 a 10:30 (D29 (Etsiit))
- 17:30 a 18:30 (D29 (Etsiit))
- Viernes
- 08:30 a 10:30 (D29 (Etsiit))
- 17:30 a 18:30 (D29 (Etsiit))
- Segundo semestre
- Martes
- 08:30 a 09:30 (D29 (Etsiit))
- 11:30 a 12:30 (D29 (Etsiit))
- Miércoles
- 08:30 a 09:30 (D29 (Etsiit))
- 11:30 a 12:30 (D29 (Etsiit))
- Jueves
- 08:30 a 09:30 (D29 (Etsiit))
- 11:30 a 12:30 (D29 (Etsiit))
Javier Martínez Baena
Email- Primer semestre
- Martes de 10:00 a 13:00 (D24 (Etsiit))
- Miércoles de 10:00 a 13:00 (D24 (Etsiit))
- Segundo semestre
- Miércoles
- 08:30 a 09:30 (D24 (Etsiit))
- 10:30 a 11:30 (D24 (Etsiit))
- Jueves de 08:30 a 12:30 (D24 (Etsiit))
Juan Antonio Morente Molinera
Email- Primer semestre
- Martes de 10:00 a 13:00 (Bp (Fcyd))
- Jueves de 16:00 a 19:00 (Bp (Fcyd))
- Segundo semestre
- Martes de 10:00 a 13:00 (Fo10 (Etsiit))
- Miércoles
- 16:30 a 18:30 (Fo10 (Etsiit))
- 19:30 a 20:30 (Fo10 (Etsiit))
David Alejandro Pelta Mochcovsky
Email- Primer semestre
- Martes de 09:00 a 12:00 (D21 (Etsiit))
- Miércoles de 09:00 a 12:00 (D21 (Etsiit))
- Segundo semestre
- Lunes de 08:30 a 11:30 (D21 (Etsiit))
- Martes de 08:30 a 11:30 (D21 (Etsiit))
Francisco Javier Rodríguez Díaz
Email- Primer semestre
- Lunes de 17:30 a 20:30 (Fo11 (Etsiit))
- Viernes de 10:30 a 13:30 (Fo11 (Etsiit))
- Segundo semestre
- Lunes de 17:30 a 19:30 (Fo11 (Etsiit))
- Martes de 16:30 a 18:30 (Fo11 (Etsiit))
- Miércoles de 17:30 a 19:30 (Fo11 (Etsiit))
María Cristina Zuheros Montes
Email- Primer semestre
- Martes de 10:00 a 11:00 (Mect (Fciencia))
- Jueves de 10:00 a 11:00 (Mect (Fciencia))
- Viernes de 10:00 a 12:00 (Nd (Etsiit))
- Segundo semestre
- Jueves de 16:30 a 18:30 (Nd (Etsiit))
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 Grado)
- 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
- El tipo de dato puntero.
- Vectores, matrices, cadenas y punteros.
- Memoria dinámica.
- Ejemplos de estructuras de datos simples.
Tema 2. Funciones
- La función main.
- La responsable de que todo funcione: La Pila.
- Paso de parámetros y devolución de resultados.
- Parámetros con valor por defecto.
- Funciones inline.
- Punteros a función.
Tema 3. Tipos de datos abstractos en C++: Clases
- Abstracción y diseño de clases: atributos y métodos.
- Constructores, destructor y asignación en clases que gestionan memoria dinámica.
- Sobrecarga de operadores.
Tema 4. Gestión de E/S. Ficheros
- Flujos de E/S.
- Operaciones básicas con flujos.
- Flujos asociados a string.
- Flujos asociados a ficheros.
- 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++
- Compilación separada.
- El preprocesador, el compilador y el enlazador
- g++ : el compilador de GNU para C++
- Seminario 2. Gestión automatizada de proyectos.
- El programa make
- Ficheros makefile
- Entornos de programación.
- Seminario3. Modularización. Bibliotecas. El programa ar.
- Bibliotecas
- El programa ar
- Seminario 4. Técnicas de gestión de errores y depuración
- Devolución de valores de error.
- Aserciones: errores en depuración.
- Excepciones.
- Herramientas de ayuda a la depuración.
- Seminario 5. Documentación de software
- Diseño e implementación.
- 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 (10th Edition)”. Pearson, 2019
- 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 (10th Edition)”. Pearson, 2017
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.
Enlaces recomendados
Páginas para usar como manuales de referencia:
- C++ Reference (en inglés)
- C Plus Plus (en inglés)
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
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:
- Un examen práctico individual que tendrá lugar a mitad del cuatrimestre. (10 %)
- La realización de un proyecto informático al final del cuatrimestre (20 %)
- 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 4 (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 10), 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 4 (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 10).
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 4 (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 10).
Información adicional
Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos (https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad).