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
Teoría:3
Práctica:3
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

  1. Modelo de Von Neumann.
  2. Concepto de Algoritmo.
  3. Tipos de datos simples, sentencias simples, estructuras de control, funciones y procedimientos.
  4. Concepto de apuntador.
  5. Tipos de paso de parámetros.
  6. Alcance de un identificador.
  7. Tipos de datos estructurados: arreglos y registros.
  8. Estructura de un programa: Diseño ascendente y descendente.
  9. Documentación de programas.

2. Algoritmos de Búsqueda y Ordenamiento Iterativos

  1. Algoritmos de ordenamiento: Burbuja, Inserción directa, selección directa.
  2. Búsqueda: Secuencial, binaria, tablas de dispersión (hashing).

3. Recursividad

  1. Conceptos básicos: Definición y propiedades. Equivalencia entre recursión e iteración.
  2. Algoritmos recursivos de ordenamiento y búsqueda: mergesort, quicksort, búsqueda binaria.

4. Tipos de Datos Abstractos (TDA)

  1. Conceptos básicos: definición e implementación (secuencial y memoria dinámica).
  2. TDA lineales: listas, pilas, colas.
  3. 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 

  1. Aho, A.V., Foundations of Computer Science. Computer Science Press, 1992.
  2. Cormen, T.H., Leiserson, C.E. & Rivest, R.L., Introduction to Algorithms. MIT Press, 1990.
  3. Kernighan, B.W. y Ritchie, D.M., The C Programming Language. Prentice Hall Intl., 1988.
  4. Lafore, R. y Waite, M., Data Structures and Algorithms. Sams Pub., 1998.
  5. 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.
  6. Wirth, N., Algorithms and data structures. Prentice Hall Intl., 1986.