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
No hay tutorías asignadas para el curso académico.

Julián Luengo Martín

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

José Enrique Cano Ocaña

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

María del Carmen Pegalajar Jiménez

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

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