Unidad Iztapalapa | División C.B.I. | ||||
Nivel | Maestría en Ciencias (Matemáticas Aplicadas e Industriales) |
||||
Trimestre | I al II | ||||
Clave | 2137075 | ||||
Unidad de Enseñanza Aprendizaje | Programación Estructurada Obligatoria |
||||
Créditos | 9 | ||||
Horas |
|
||||
Seriación | Autorización |
Objetivos
- Al finalizar el curso el alumno será capaz de plantear soluciones algorítmicas secuenciales y recursivas para problemas simples utilizando la programación estructurada.
- Utilizará adecuadamente los tipos de datos simples y estructurados así como los tipos de datos abstractos lineales y no lineales en sus algoritmos.
- Transformará sus algoritmos en programas modulares y bien documentados.
- Identificará los principales algoritmos de búsqueda y ordenamiento tanto iterativos como recursivos.
Contenido sintético
1. Principios Generales de Programación Estructurada
- Modelo de Von Neumann.
- Concepto de Algoritmo.
- Tipos de datos simples, sentencias simples, estructuras de control, funciones y procedimientos.
- Concepto de apuntador.
- Tipos de paso de parámetros.
- Alcance de un identificador.
- Tipos de datos estructurados: arreglos y registros.
- Estructura de un programa: Diseño ascendente y descendente.
- Documentación de programas.
2. Algoritmos de Búsqueda y Ordenamiento Iterativos
- Algoritmos de ordenamiento: Burbuja, Inserción directa, selección directa.
- Búsqueda: Secuencial, binaria, tablas de dispersión (hashing).
3. Recursividad
- Conceptos básicos: Definición y propiedades. Equivalencia entre recursión e iteración.
- Algoritmos recursivos de ordenamiento y búsqueda: mergesort, quicksort, búsqueda binaria.
4. Tipos de Datos Abstractos (TDA)
- Conceptos básicos: definición e implementación (secuencial y memoria dinámica).
- TDA lineales: listas, pilas, colas.
- TDA no lineales: árboles y grafos.
Modalidades de conducción del proceso de enseñanza-aprendizaje
- Se recomienda presentar siempre al estudiante los algoritmos en pseudocódigo.
- En los primeros programas, es recomendable la utilización de un lenguaje de programación que implemente todos los conceptos contemplados en el tema 1, tales como Pascal o Modula; posteriormente se recomienda la utilización de C.
- Las sesiones prácticas deben de ilustrar los conceptos vistos en clase en el lenguaje de programación elegido, y que servirán como base para los programas que el estudiante desarrollará de manera independiente.
Modalidades de evaluación
- La evaluación global constará de un mínimo de tres evaluaciones periódicas.
- El alumno desarrollará un mínimo de 6 programas en un lenguaje de programación estructurado. Cada programa deberá entregarse en sus versiones fuente y ejecutable y acompañado de la documentación correspondiente. En el programa, el alumno utilizará los conceptos vistos en la clase teórica para la solución de algún problema simple.
- Un proyecto final obligatorio. Este proyecto será un programa que englobe la mayoría de los conceptos básicos vistos en curso.
- Para poder acreditar el curso se requiere:
- Tener un promedio aprobatorio en las evaluaciones periódicas.
- Haber realizado el proyecto final.
- Tener un promedio aprobatorio en la parte práctica de programación.
- Queda a juicio del profesor asignar el número de tareas y el tiempo de entrega de cada una de ellas, así como asignar los factores de ponderación de cada rubro.
Bibliografía
- Aho, A.V., Foundations of Computer Science. Computer Science Press, 1992.
- Cormen, T.H., Leiserson, C.E. & Rivest, R.L., Introduction to Algorithms. MIT Press, 1990.
- Kernighan, B.W. y Ritchie, D.M., The C Programming Language. Prentice Hall Intl., 1988.
- Lafore, R. y Waite, M., Data Structures and Algorithms. Sams Pub., 1998.
- Press, W. H., Teukolsky, S. A., Vetterling, W. T., Flannery, B.P., Numerical Recipes in C: The Art of Scientific Computing. The Press Syndicate of the University of Cambridge, 1992.
- Wirth, N., Algorithms and data structures. Prentice Hall Intl., 1986.