Guía docente de Fundamentos de Programación (2211124)

Curso 2024/2025
Fecha de aprobación: 27/06/2024

Grado

Grado en Ingeniería de Tecnologías de Telecomunicación

Rama

Ingeniería y Arquitectura

Módulo

Materias Comunes

Materia

Redes y Servicios de Telecomunicaciones

Curso

2

Semestre

1

Créditos

9

Tipo

Obligatoria

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

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