Guía docente de Fundamentos de Programación (2211124)
Grado
Rama
Módulo
Materia
Curso
Semestre
Créditos
Tipo
Profesorado
Teórico
- Eugenio Aguirre Molina. Grupo: B
- Julián Luengo Martín. Grupo: A
Práctico
- Eugenio Aguirre Molina Grupo: 4
- José Enrique Cano Ocaña Grupos: 1 y 2
- María del Carmen Pegalajar Jiménez Grupo: 3
Tutorías
Eugenio Aguirre Molina
Email- Primer semestre
- Lunes de 10:00 a 11:00 (Bo (Fcyd))
- Martes de 10:00 a 12:00 (D30 (Etsiit))
- Jueves de 10:00 a 12:00 (D30 (Etsiit))
- Viernes de 10:00 a 11:00 (Bo (Fcyd))
- Segundo semestre
- Martes de 10:00 a 13:00 (D30 (Etsiit))
- Jueves de 10:00 a 13:00 (D30 (Etsiit))
Julián Luengo Martín
Email- Primer semestre
- Martes
- 09:30 a 12:30 (D16 (Etsiit))
- 13:30 a 14:00 (D16 (Etsiit))
- Viernes
- 09:30 a 11:30 (D16 (Etsiit))
- 13:30 a 14:00 (D16 (Etsiit))
- Segundo semestre
- Lunes de 10:30 a 13:30 (D16 (Etsiit))
- Jueves de 10:30 a 13:30 (D16 (Etsiit))
José Enrique Cano Ocaña
Email- Primer semestre
- Lunes de 11:30 a 14:30 (Sop (Etsiit))
- Martes de 11:30 a 14:30 (Sop (Etsiit))
- Segundo semestre
- Martes de 08:00 a 14:00 (Sop (Etsiit))
María del Carmen Pegalajar Jiménez
Email- Primer semestre
- Martes de 10:00 a 13:00 (D23 (Etsiit))
- Jueves de 10:00 a 13:00 (D23 (Etsiit))
- Segundo semestre
- Martes de 10:00 a 12:00 (D23 (Etsiit))
- Miércoles de 12:00 a 14:00 (D23 (Etsiit))
- Viernes de 12:00 a 14:00 (D23 (Etsiit))
Prerrequisitos y/o Recomendaciones
Los alumnos no habrán de tener asignaturas, materias o módulos aprobados como requisito indispensable para aprobar la asignatura. No obstante se recomienda la superación de los contenidos y adquisición de competencias de las materias de formación básica.
Breve descripción de contenidos (Según memoria de verificación del Máster)
Funciones, Recursividad, Modularización, Gestión de memoria dinámica, Entradas y salidas, Gestión de errores, Introducción a la programación orientada a objetos.
El título de Graduado/a en Ingeniería de Tecnologías de Telecomunicación de la Universidad de Granada ha obtenido, con fecha 24 de mayo de 2019, el Sello Internacional de Calidad EUR-ACE®, otorgado por ANECA y el Instituto de la Ingeniería de España. Esta acreditación garantiza el cumplimiento de criterios y estándares reconocidos por los empleadores españoles y del resto de Europa, de acuerdo con los principios de calidad, relevancia, transparencia, reconocimiento y movilidad contemplados en el Espacio Europeo de Educación Superior.
Competencias
Competencias Generales
- CG01. Capacidad para aprender de manera autónoma nuevos conocimientos y técnicas adecuados para la concepción, el desarrollo o la explotación de sistemas y servicios de telecomunicación.
- CG02. Capacidad de utilizar aplicaciones de comunicación e informáticas (ofimáticas, bases de datos, cálculo avanzado, gestión de proyectos, visualización, etc.) para apoyar el desarrollo y explotación de redes, servicios y aplicaciones de telecomunicación y electrónica.
- CG03. Capacidad para utilizar herramientas informáticas de búsqueda de recursos bibliográficos o de información relacionada con las telecomunicaciones y la electrónica.
- CG07. Conocimiento y utilización de los fundamentos de la programación en redes, sistemas y servicios de telecomunicación.
Competencias Transversales
- CT01. Capacidad de análisis y síntesis: Encontrar, analizar, criticar (razonamiento crítico), relacionar, estructurar y sintetizar información proveniente de diversas fuentes, así como integrar ideas y conocimientos.
- CT02. Capacidad de organización y planificación así como capacidad de gestión de la Información.
- CT03. Capacidad de comunicación oral y escrita en el ámbito académico y profesional con especial énfasis, en la redacción de documentación técnica.
- CT04. Capacidad para la resolución de problemas.
- CT05. Capacidad para tomar decisiones basadas en criterios objetivos (datos experimentales, científicos o de simulación disponibles) así como capacidad de argumentar y justificar lógicamente dichas decisiones, sabiendo aceptar otros puntos de vista.
- CT06. Capacidad para el uso y aplicación de las TIC en el ámbito académico y profesional.
- CT07. Capacidad de comunicación en lengua extranjera, particularmente en inglés.
- CT08. Capacidad de trabajo en equipo.
- CT09. Capacidad para el aprendizaje autónomo así como iniciativa y espíritu emprendedor.
- CT10. Motivación por la calidad y la mejora continua, actuando con rigor, responsabilidad y ética profesional.
- CT11. Capacidad para adaptarse a las tecnologías y a los futuros entornos actualizando las competencias profesionales.
- CT12. Capacidad para innovar y generar nuevas ideas.
- CT13. Sensibilidad hacia temas medioambientales.
- CT14. Respeto a los derechos fundamentales y de igualdad entre hombres y mujeres.
- CT15. Capacidad para proyectar los conocimientos, habilidades y destrezas adquiridos para promover una sociedad basada en los valores de la libertad, la justicia, la igualdad y el pluralismo.
Resultados de aprendizaje (Objetivos)
- Comprender el funcionamiento de un computador, haciendo especial énfasis en la necesidad de desarrollo de software por parte del programador.
- Presentar la historia de la programación y de los distintos paradigmas de programación, situando en ese contexto el lenguaje de programación que se va a utilizar.
- Comprender la necesidad de un proceso de traducción de un lenguaje de alto nivel.
- Conocer y distinguir los conceptos de algoritmo y programa.
- Mostrar la necesidad de codificar la información que maneja internamente un computador, enfatizando posibilidades y limitaciones cuando se resuelve un problema.
- Conocer los tipos de datos primitivos y sus operaciones.
- Distinguir entre tipo de dato y objeto.
- Conocer las acciones básicas de E/S de datos.
- Aprender a usar las estructuras de control básicas: secuencial, condicional e iterativa.
- Comprender la necesidad de dividir la solución creando módulos (funciones o procedimientos) que implementen operaciones no primitivas.
- Comprender la necesidad de la especificación de una función o procedimiento, como método de abstracción, introduciendo los conceptos de precondición y postcondición.
- Aprender a resolver problemas aplicando una metodología de diseño modular (top-down/bottom-up).
- Manejar correctamente los mecanismos de comunicación entre módulos (interfaces), así como los distintas formas de paso de parámetros y devolución de resultados.
- Entender la gestión de llamadas a funciones mediante la pila.
- Motivar e introducir los tipos de datos compuestos, arrays y registros, así como sus operaciones.
- Conocer los algoritmos de ordenación básicos (selección, inserción, burbuja).
- Conocer los algoritmos de búsqueda básicos (lineal, dicotómica).
- Motivar y aprender a resolver problemas mediante algoritmos recursivos.
- 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 reusables.
- 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. Introducción a la programación en C.
- Algoritmos y programas. Datos, tipos de datos y expresiones. Operaciones primitivas.
Tema 2. Estructuras de control.
- Estructura secuencial. Estructuras condicionales. Estructuras repetitivas.
Tema 3. Funciones y procedimientos.
- Programación modular y estructurada. Procedimientos. Paso de parámetros. Ocultamiento de información. La pila. Funciones. Modularización de problemas. Documentación de módulo.
Tema 4. Vectores y matrices.
- Concepto de vector. Operaciones con vectores. Algoritmos de ordenación y búsqueda. Las cadenas estilo C. Concepto de matriz. Operaciones con matrices.
Tema 5. Estructuras y uniones.
- Concepto de estructura y unión. Operadores básicos.
Tema 6. Punteros y gestión dinámica de memoria
- Concepto de puntero. Operadores básicos. Relación entre punteros, vectores y matrices La memoria dinámica. Operadores de reserva y liberación de memoria. Aplicaciones usando memoria dinámica.
Tema 7. Recursividad.
- Concepto. Diseño de funciones recursivas. Ejemplos de funciones recursivas.
Tema 8. Entradas y salidas.
- Archivos y flujos. Archivos de acceso secuencial. Archivos de acceso aleatorio.
Tema 9. Introducción a la programación dirigida a objetos
- Introducción. Encapsulamiento. Constructores y destructores. Sobrecarga de operadores.Herencia. Polimorfismo.
Práctico
Seminarios/Talleres
- Seminario 1: Introducción al laboratorio y al entorno de desarrollo de programas.
- Seminario 2: Instalación del entorno de desarrollo de programas.
- Seminario 3: Normas de estilo para la construcción de programas.
- Seminario 4: Prueba y depuración de programas.
- Seminario 5: Documentación de programas.
Prácticas de Laboratorio
- Práctica 1. Construcción básica de programas.
- Práctica 2. Construcciones de programas iterativos.
- Práctica 3. Desarrollo de programas modulares.
- Práctica 4. Programas con vectores y matrices.
- Práctica 5. Estructuras.
- Práctica 6. Memoria dinámica.
- Práctica 7. Programas recursivos.
- Práctica 8. Programas con ficheros.
- Práctica 9. Programación dirigida a objetos.
Bibliografía
Bibliografía fundamental
- Kernigham, N. B., Ritchie, M. D. El lenguaje de programación C. Prentice-Hall. 1989.
- García F., Carretero J., Fernández J., Calderón A. El lenguaje de Programación C: Diseño e Implementación de Programas. Prentice, 2001.
- Deitel, P. J., Deitel, H. M., C How to Program. 6ª Edición. Prentice Hall. 2009.
- Garrido, A., Fundamentos de Programación en C++. Delta Publicaciones, 2006.
Bibliografía complementaria
- Savich, W., Resolución de problemas en C++, 2ª Edición, Prentice, 2000.
- Deitel, H. M., Deitel, P. J., C++ How to Program. 7ª Edición. Prentice Hall. 2010.
- Mercer, R., Computing Fundamentals with C++. 2ª Edición. Franklin, Beedle & Associates. 1999.
- Eckel, B., Thinking in C++. 2ª Edición. Prentice-Hall. 2000.
- Garrido, A., Fdez-Valdivia, J., Abstracción y Estructuras de datos en C++. Delta publicaciones. 2006.
- Sedgewick. R., Algorithms in C++. Addison-Wesley, 2002.
- Stroustrup, B., El lenguaje de Programación C++, 3ª Edición (Especial), Addison-Wesley, 2001.
Enlaces recomendados
Metodología docente
- MD01. Lección magistral
- MD02. Actividades prácticas
- MD03. Seminarios
- MD04. Actividades no presenciales
- MD05. Tutorías académicas
Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)
Evaluación Ordinaria
- Para la parte teórica se realizarán exámenes finales o parciales, que supondrán un 50% de la nota final.
- Para la parte práctica se realizarán prácticas de laboratorio y resolución de problemas junto con exámenes finales o parciales. La ponderación de este bloque será el 30%.
- Se tendrá en cuenta la asistencia y participación con una ponderación del 20% de la nota final.
La calificación global corresponderá por tanto a la puntuación ponderada de los diferentes aspectos y actividades que integran el sistema de evaluación. Por tanto, el resultado de la evaluación será una calificación numérica obtenida mediante la suma ponderada de las calificaciones correspondientes a una parte teórica, una parte práctica y, en su caso, una parte relacionada con el trabajo autónomo de los alumnos, los seminarios impartidos y el aprendizaje basado en proyectos. Será necesario obtener una nota mínima > 0 puntos en cada una de las partes de teoría y prácticas para hacer la suma ponderada final.
Evaluación Extraordinaria
- Se hará un examen puntuado de 0 a 10 con preguntas de tipo teórico y práctico que garanticen que el alumno ha adquirido la totalidad de las competencias descritas en esta guía docente.
- Todo lo relativo a la evaluación se regirá por la normativa sobre planificación docente y organización de exámenes vigente en la Universidad de Granada.
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 única final
- De acuerdo a lo establecido en la Normativa de evaluación y de calificación de los estudiantes de la Universidad de Granada vigente, la evaluación será preferentemente continua. No obstante, el estudiante que no pueda acogerse a dicho sistema por motivos laborales, estado de salud, discapacidad, programas de movilidad o cualquier otra causa debidamente justificada podrá acogerse a la evaluación única final. Para ello deberá solicitarlo al Director del Departamento o al Coordinador del Máster en las dos primeras semanas de impartición de la asignatura o, excepcionalmente, en las dos primeras semanas tras la matriculación en la asignatura.
- Esta modalidad de evaluación se realizará en un único acto académico en la fecha establecida por el Centro y consistirá en:
- Se hará un examen puntuado de 0 a 10 con preguntas de tipo teórico y práctico que garanticen que el alumno ha adquirido la totalidad de las competencias descritas en esta guía docente.
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).