DESCRIPCIÓN DE LA ASIGNATURA
- Doble Grado en:
- Matemáticas e Ingeniería Informática
- Asignatura:
- Programación y algoritmia básica
- Asignatura en inglés:
- Programming and Basic Algorithmics
- Curso y cuatrimestre:
- 1º (2º Cuatrimestre)
- ECTS:
- 9
- Tipología:
- Básica
- Idioma de impartición:
- Español
- Módulo:
- Materias básicas
- Materia:
- Informática
- Departamentos:
- Ingeniería del Software e Inteligencia Artificial, Sistemas Informáticos y Computación
- Coordinador:
- Luis Hernández Yañez
CONTENIDOS MÍNIMOS
- Punteros y memoria dinámica
- Programación modular y uso de bibliotecas software
- Documentación, prueba y depuración de programas
- Uso de repositorios como apoyo al desarrollo de proyectos
- Complejidad de algoritmos
- Algoritmos iterativos
- Algoritmos recursivos
- Proyecto de programación
PROGRAMA DETALLADO
- Programación modular. Encapsulación y privacidad
- Gestión de proyectos. Uso de repositorios Git
- Complejidad de algoritmos
- Recursión
- a. Introducción a la recursión
- b. Tipos de recursión
- c. Complejidad de algoritmos recursivos
- d. Generalización/inmersión de parámetros
- Ordenación y búsqueda
- a. Algoritmos de ordenación iterativos
- b. Listas ordenadas (búsqueda, inserción, eliminación, mezcla)
- c. Algoritmos de ordenación recursivos
- d. Búsqueda binaria recursiva
- e. Uso de bibliotecas para ordenación
- Punteros y memoria dinámica
- Diseño de algoritmos iterativos
- a. Repaso de especificación
- b. Concepto de invariante
- c. Algoritmos de segmento máximo
- d. Algoritmos de ventana deslizante
- e. Algoritmos de tipo partición
- f. Algoritmos con vector de acumulados
PROGRAMA DETALLADO EN INGLÉS
- Modular Programming. Encapsulation and privacy
- Project Management. Use of Git repositories
- Algorithm Complexity
- Recursion
- a. Introduction to Recursion
- b. Types of Recursion
- c. Recursive Algorithms Complexity
- d. Generalization/Parameter immersion
- Sorting and Searching
- a. Iterative Sorting Algorithms
- b. Sorted lists (search, insertion, deletion, shuffling)
- c. Recursive sorting algorithms
- d. Recursive binary search
- e. Use of sorting libraries
- Pointers and dynamic memory
- Design of iterative algorithms
- a. Review of specifications
- b. The concept of invariant
- c. Maximum segment algorithms
- d. Sliding window algorithms
- e. Partition-based algorithms
- f. Algorithms using an accumulators array
RESULTADOS DE APRENDIZAJE
Conocimientos
- Al finalizar el aprendizaje, el o la estudiante será capaz de demostrar conocimiento básico de las diferentes subdisciplinas de la ingeniería informática y de las técnicas básicas y conocimientos de estas para la integración en equipos multidisciplinares como profesional generalista en ingeniería informática.
- Al finalizar el aprendizaje, el o la estudiante será capaz de explicar los procedimientos algorítmicos básicos y los tipos de datos de las tecnologías informáticas habituales en la resolución de problemas de ingeniería informática.
- Al finalizar el aprendizaje, el o la estudiante será capaz de analizar las necesidades en algorítmica, complejidad computacional, programación, sistemas operativos, bases de datos, estructura, arquitectura e interconexión de sistemas informáticos necesarios para la resolución de problemas de ciencias e ingeniería, de acuerdo con los principios de calidad, fiabilidad y seguridad necesarios y dentro del marco institucional y jurídico de la empresa.
- Al finalizar el aprendizaje, el o la estudiante será capaz de identificar los algoritmos, estructuras de datos, paradigmas de la programación, lenguajes y las prácticas de ingeniería del software más adecuados para asegurar la fiabilidad, seguridad y calidad de aplicaciones en problemas que requieran una solución informática.
- Al finalizar el aprendizaje, el o la estudiante será capaz de evaluar la complejidad computacional de un problema para establecer las estrategias algorítmicas que conduzcan a su resolución.
ACTIVIDADES FORMATIVAS
Presenciales
Actividad
Horas
CTM - Clases teóricas magistrales
45
AEV - Actividades de evaluación
5
CL - Clases de laboratorio
45
Totales
95
No Presenciales
Actividad
Horas
TPN - Trabajo personal no dirigido
135
Totales
135
EVALUACIÓN DETALLADA
- Proyecto (entrega): 15%
- Actividades y pruebas prácticas: 15%
- Examen final (ordinario/extraordinario): 70%
- Examen del proyecto: 35%
- Examen de problemas: 35%
- El examen final debe ser >=5, y cada parte >=4 para hacer media
El proyecto, las actividades y pruebas prácticas no son recuperables para la convocatoria extraordinaria.
BIBLIOGRAFÍA
- Recomendada
- Algoritmos correctos y eficientes: Diseño razonado ilustrado con ejercicios, N. Martí, C. Segura y J. A. Verdejo, Ibergarceta Publicaciones, 2012.
- Diseño de programas: Formalismo y abstracción, R. Peña, tercera edición, Pearson/Prentice Hall, 2005.
- Programming: Principles and Practice Using C++, B. Stroustrup. Pearson Education, 2009.
- El lenguaje de programación C++, B. Stroustrup, Addison Wesley, 2002.
- Complementaria
- Programming: The Derivation of Algorithms, A. Kaldewaij, Prentice Hall, 1990.
- The Science of Programming, D. Gries, Springer, 1981.
- El lenguaje de programación C++, B. Stroustrup, Addison Wesley, 2002.