LOGO_TEC_OFICIAL.jpg logo_cimat_unidad_merida.jpg
Logo_Conacyt.png



              
PROGRAMACIÓN AVANZADA Y TÉCNICAS DE CÓMPUTO PARALELO
ENERO-JULIO 2016

Profr: Dr. Francisco Javier Hernández López (fcoj23@cimat.mx)
Enviar tareas al correo: ProgAvanzada@hotmail.com  (nombre_tarea_#)
        


Temario

Sesión
Tarea
1. Pilas 
    * Implementando una pila con memoria estática: pila_memoria_estatica.cpp
    * Implementando una pila con memoria dinámica: pila_memoria_dinamica.cpp
tarea1.pdf
2. Colas
    * Implementando una cola con memoria estática: cola_memoria_estatica.cpp
    * Implementando una cola con memoria dinámica: cola_memoria_dinamica.cpp


3. Listas
    * Implementando una lista con memoria dinámica: lista_enlazada.cpp
    * Implementando una lista circular: lista_circular.cpp
    * Implementando el juego de la papa se quema...: lista_circular_papa_se_quema.cpp
4. Listas doblemente enlazadas
    * Implementando una lista doblemente enlazada: lista_doble_liga.cpp (Terminar el programa)
    * Implementando una lista enlazada ordenada: lista_enlazada_ordenada.cpp (Terminar el programa)
5. Árboles


6. Árboles Binarios de Búsqueda
    * Implementando un árbol binario de búsqueda: arbol_binario_busqueda.cpp  (Terminar el programa)
7. Tablas Hash
    * Impementando una tabla hash: tabla_hash.cpp (Teminar el programa)
tarea4.pdf
8. Grafos
    Grafos no dirigidos

tarea5:
Asignada en clase.

9. Cómputo paralelo (Introducción)
    * Ejemplo: SumaVectores_OpenMP.cpp
10. Ejemplos usando OpenMP
tarea6:
Asignada en clase

11. CUDA

12. Ejemplos usando CUDA




Comentarios:
  • T1_1: No entregó tarea.
  • T1_2: Error en el cálculo de la moda.
           int valor_moda;
           for(i = 0; i < 11; i++){
                if(auxmod < moda[i]){
                    auxmod = moda[i];
                    valor_moda = i;
                }
           }
           cout << "La moda es: " << valor_moda << ", se repite: " << auxmod << " veces...\n";
  • T1_3: Error en la suma de dos números usando Pilas.
            //result = result - unidad;
            result = result / 10;//Se queda sin la unidad
            if (result != 0){
                push(&total, result);//Con este push, también debes incrementar cont3
                cont3++;
            }


Bibliografía:
  • Introduction to Algorithms, Cormen, T.H., Leiserson, Ch. E., Rivest R. L., Stein, C., MIT Press, 2001.
  • Data Structures and Algorithms in C++, Broks Cole, 2000.
  • The Art of Computer Programming, Knuth, Donal. Addison Wesley, 1998.
  • Estructura de datos, Cairó - Guardati, 3a. Edición, 2006.
  • Programación en C : metodología, algoritmos y estructura de datos, Luis Joyanes Aguilar, Ignacio Zahonero Martínez, 2a ed., 2005.
  • Estructuras de matemáticas discretas para la computación, Bernard Kolman, Robert C. Busby, Sharon Ross, 3a. ed., 1997.  
  • Data structures & algorithms in JAVA, Robert Lafore, 2a ed., 2003.
  • Parallel programming: For multicore and cluster systems. Rauber, Thomas, and Gudula Rünger. Springer Science & Business Media, 2013.

  • An introduction to parallel programming. Pacheco, Peter. Elsevier, 2011.

  • Programming massively parallel processors: a hands-on approach. Kirk, David B., and W. Hwu Wen-mei. Newnes, 2012
  • CUDA by example: an introduction to general-purpose GPU programming. Sanders, Jason, and Edward Kandrot. Addison-Wesley Professional, 2010.
  • CUDA programming: a developer's guide to parallel computing with GPUs. Cook, Shane. Newnes, 2012.
  • http://www.c.conclase.net/
  • http://zomwi.blogspot.mx/2012/05/convertir-un-arbol-n-ario-binario.html
  • http://www.colimbo.net/113/docu.htm
  • http://www.dnatube.com/courses/mitintroalgorthm (Videos de clases en el MIT, Lec 7: Hashing I y Lec 8: Hashing II) 
  • http://www.dnatube.com/courses/mitintroalgorthm (Videos de clases en el MIT, Lec 13: Breadth_First Search (BFS) y Lec 14: Depth_First Search (DFS))
  • http://www.jaapsch.net/puzzles/rubslide.htm (rubik-slice game)