Guía docente de la asignatura
Metodología de la Programación (4961118)
21/06/2021
Grado
Brach
Módulo
Materia
Curso
Semestre
Créditos
Tipo
Profesorado
Teórico
Tutorías
Salvador Gutierrez Salcedo
Ver email- Primer semestre
- Lunes de 15:30 a 17:30 (Ceuta)
- Martes de 10:00 a 14:00 (Ceuta)
- Segundo semestre
- Martes de 10:00 a 13:00 (Ceuta)
- Miércoles de 10:00 a 13:00 (Ceuta)
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
- 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.
- Funciones inline.
- Parámetros con valor por defecto.
- 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 ficheros.
- Ficheros de texto y binarios.
Práctico
Práctica 1. Compilación separada y gestión de proyectos.
Práctica 2. Punteros y memoria dinámica.
Práctica 3. Abstracción en C++: clases.
Práctica 4. Proyecto informático de programación.
Seminario 1. Primeros programas con linux
- Órdenes básicas: Entorno de desarrollo.
- Compilación y enlazado en linux.
- Depuración en linux.
Seminario 2. Compilación separada y espacios de nombres
- Compilación separada.
- El preprocesador.
- Bibliotecas.
- Espacios de nombres.
Seminario 3. Tipos aritméticos. Representación y conversiones
- Tipos integrales y en coma flotante.
- Características de los tipos.
- Conversiones.
- Operadores lógicos a nivel de bit.
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 (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. "Fundamentos de programación con la STL". Editorial Universidad de Granada, 2016. ISBN 978-84-338-5917-4.
- 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.
- Walter Savitch. “Resolución de problemas con C++”. Pearson, 2006.
- Bjarne Stroustrup. “El Lenguaje de Programación C++. Edición especial”. Addison Wesley, 2002.
- Bjarne Stroustrup. “The C++ Programming Language, 4th Edition”. Addison Wesley Professional, 2013.
- Sedgewick. “Algorithms in C++”. Addison-Wesley, 2002.
- A. Garrido. “Fundamentos de Programación en C++”. Delta Publicaciones, 2005.
- A. Garrido, J. Fdez-Valdivia. “Abstracción y estructuras de datos en C++”. Delta publicaciones, 2006.
Enlaces recomendados
Páginas para usar como referencia:
- C++ Reference (en inglés) http://www.cppreference.com
- C Plus Plus (en inglés) http://www.cplusplus.com
Cursos en internet:
- C++ con clase. http://c.conclase.net
- Zator. http://www.zator.com/Cpp/
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:
- 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 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).
ESCENARIO A (ENSEÑANZA-APRENDIZAJE PRESENCIAL Y TELE-PRESENCIAL)
Horario (Según lo establecido en el POD)
Los horarios de tutoría se han ampliado debido a que además de los presenciales y/o online en sus horarios habituales (pueden consultarse en: https://decsai.ugr.es/docencia/profesorado) hay que añadir las respuestas a todos los asíncronos a través de los numerosos cauces habilitados.
Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)
A través de la plataforma Prado: mensajes, foros y correos internos así como atención a correos. Tutorías online con Google Meet, Skype, Telegram u otros..., tanto en modalidad individual como grupal, previo acuerdo de los interesados mediante correo electrónico.
Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)
El profesorado de la asignatura adaptará, total o parcialmente, los contenidos para su impartición online en los horarios establecidos por el centro si ésta modalidad fuera necesaria. Esta adaptación estará sujeta a los condicionantes de infraestructura y medios que existan en el momento de adopción del Escenario A. Se utilizarán las plataformas y herramientas proporcionadas por la Universidad de Granada.
Evaluación ordinaria
Para todas aquellas actividades evaluables que no se puedan realizar de manera presencial, se aplicará lo establecido en el escenario B.
Evaluación extraordinaria
Para todas aquellas actividades evaluables que no se puedan realizar de manera presencial, se aplicará lo establecido en el escenario B.
Evaluación única final
Para todas aquellas actividades evaluables que no se puedan realizar de manera presencial, se aplicará lo establecido en el escenario B.
ESCENARIO B (SUSPENSIÓN DE LA ACTIVIDAD PRESENCIAL)
Horario (Según lo establecido en el POD)
Los horarios de tutoría se han ampliado debido a que además de los síncronos en sus horarios habituales pueden consultarse en: https://decsai.ugr.es/docencia/profesorado) hay que añadir las respuestas a todos los asíncronos a través de los numerosos cauces habilitados.
Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)
A través de la plataforma Prado: mensajes, foros y correos internos así como atención a correos. Tutorías online con Google Meet, Skype, Telegram u otros..., tanto en modalidad individual como grupal, previo acuerdo de los interesados, mediante correo electrónico.
Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)
- Se dan las clases online utilizando Google Meet en su horario habitual y/o se está poniendo a disposición de los estudiantes material audiovisual con las grabaciones de las clases o unidades didácticas elaboradas ex profeso para dar soporte a los conceptos de teoría.
- Se cuelga en Prado, soluciones de relaciones de ejercicios o de pruebas de evaluación como parciales… que forman parte de la evaluación.
Evaluación ordinaria
PARTE TEÓRICA: La ponderación de esta parte es del 50%.
Para la parte teórica se realizará un examen escrito multi-pregunta sobre los contenidos de la materia impartida.
PARTE PRÁCTICA: Porcentaje sobre calificación final: 50%
Entrega de prácticas y relaciones de ejercicios
Descripción: Entrega de las prácticas programadas para el curso
Criterios de evaluación: Se evalúa el grado de cumplimiento de los objetivos establecidos en cada una de las prácticas.
Se puede solicitar la defensa personal de cualquiera de las prácticas entregadas.
Porcentaje sobre calificación final: 40%
Parcial 1
Descripción: Prueba de resolución de problema a resolver con un entorno de desarrollo, en un escenario sincróno mediante Google Meet y entrega por Prado de un fichero con la solución.
Criterios de evaluación. Se evalúa según el grado de cumplimientos de los objetivos fijados para la prueba.
Porcentaje sobre calificación final: 10%
Si la nota de la parte teórica es superior o igual a 1,6 sobre 5 (máximo valor del examen de teoría),
entonces la nota final será:
Nota final = 0,5 * parte teórica + 0,5 * parte práctica
En otro caso, la nota final será la nota de la parte teórica, pudiendo el alumno 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.
Examen de teoría
Descripción: Prueba de resolución de varios problemas
Criterios de evaluación. Se evalúa según el grado de adecuación a los conocimientos solicitados
Porcentaje sobre calificación final 50%
Parte práctica
Descripción: Prueba de resolución de varios problemas
Criterios de evaluación: Se evalúa el grado de cumplimiento de cada uno de los objetivos establecidos.
Porcentaje sobre calificación final: 50%
Si la nota de la parte teórica es superior o igual a 1,6 sobre 5, entonces la nota final será:
Nota final = 0,5 * parte teórica + 0,5 * parte práctica
En otro caso, la nota final será la nota de la parte teórica (sobre 5).
Evaluación única final
Examen de teoría
Descripción: Prueba de resolución de varios problemas
Criterios de evaluación. Se evalúa según una lista de rúbricas
Porcentaje sobre calificación final 50%
Parte práctica
Descripción: Prueba de resolución de varios problemas
Criterios de evaluación: Se evalúa el grado de cumplimiento de cada uno de los objetivos
Porcentaje sobre calificación final: 50%