TEACHING PARALLEL COMPUTING WITH LOW-COST CLUSTER

ENSEÑANDO COMPUTACIÓN PARALELA CON CLUSTERES DE BAJO COSTO TEACHING PARALLEL COMPUTING WITH LOW-COST CLUSTER Mariano Trigila1, Ricardo Di Pasquale2 A...
0 downloads 0 Views 508KB Size
ENSEÑANDO COMPUTACIÓN PARALELA CON CLUSTERES DE BAJO COSTO

TEACHING PARALLEL COMPUTING WITH LOW-COST CLUSTER Mariano Trigila1, Ricardo Di Pasquale2 Abstract  Universities are currently offering parallel computing courses aiming at a graduate level. The courses’ goals are High Performance Computing and Big Data. Low cost PC’s clusters are specially suited for this purpose. They provide the processing infrastructure, standard software tools, books and a plethora of online information. However, regardless of the availability of these resources, the diversity of graduated students’ background difficult the instructional course design. In this paper a course using Beowulf clusters and NOW (Network of Workstations) is described. It covers parallel algorithms design and its implementation in different parallel computing environments. Stress is made in appropriateness and performance. The flipped classroom pedagogical model is used. Index Terms  Big Data, Flipped Classroom, High Performance Computing, Low Cost Clusters, Parallel Computing,.

INTRODUCCIÓN La necesidad de resolver problemas mas complejos continúa superando la capacidad actual de las computadoras para ejecutar los programas en periodos de tiempo razonables Otro de los problemas actuales es escalar estos sistemas y algoritmos para soportar colecciones de datos cada vez mas grandes (Big Data) [1]. Para mejorar el rendimiento de las computadoras, los diseñadores se vieron forzados a apostar al procesamiento paralelo para superar las limitaciones de la tecnología. Interconectando múltiples procesadores en un solo sistema o múltiples computadoras sobre una red que cooperan entre si para resolver el mismo problema, es posible reducir el tiempo de computación para una gran cantidad de aplicaciones. A pesar que de esta forma se puede proveer una enorme capacidad computacional, en general, no es fácil hacer uso efectivo de este poder. Para ello se desarrollaron arquitecturas paralelas, metodologías de programación paralela y técnicas de resolución de problemas. Las universidades siempre han producido buenos diseñadores y programadores de aplicación para computadoras tradicionales. Su preocupación actual es producir la próxima generación para computadoras paralelas y distribuidas. Para que el entrenamiento sea comprensible

es necesario disponer de plataformas paralelas adecuadas o construirlas durante el curso [2]. Para cubrir esta demanda, las arquitecturas de clústeres de procesamiento paralelo [3] y las redes de estaciones de trabajo o clústeres NOW (Network Of Worstations) [4] pasaron a ser alternativas rentables frente a las costosas supercomputadoras paralelas de alto rendimiento (HPC: High Performance Computing). Estas arquitecturas son usadas como herramientas de enseñanza, como un ambiente de investigación en el campo del procesamiento paralelo y distribuido y como un servicio para el modelado y análisis computacional que requiere la investigación científica y las otras áreas que dependen cada vez mas de la tecnología de la información para llevar adelante sus investigaciones. Las universidades y centros de investigación han trabajado intensamente en la adopción de estas arquitecturas dado su bajo costo, facilidad de adquisición, interconexión por tecnologías tradicionales y la versatilidad de sus configuraciones [5]. Para la explotación paralela de estas arquitecturas de hardware se dispone de varias plataformas para la implementación de los algoritmos paralelos, los cuales no son fácilmente interoperables, tienen objetivos diferentes y su eficiencia depende de la arquitectura subyacente y del diseño del algoritmo que debe corresponder al objetivo de la plataforma. Además, depende del grado de paralelismo que se puede lograr. El paralelismo puede ser temporal, si el algoritmo se divide en múltiples partes y cada parte se ejecuta en un procesador diferente, o si es paralelismo de datos, en este caso se parte el conjunto de datos y cada proceso trabaja sobre una parte diferente de los datos. [2] En este trabajo se propone usar un clúster Beowulf [6] y un clúster NOW con las plataformas o API (Aplication Programming Interface) MPI (Message Passing Interface) [7] y las de Apache Hadoop [8] y Spark [9] para un curso de computación paralela. El uso adecuado y correcto de estas plataformas y arquitecturas tendrá una profunda dependencia con la naturaleza del problema a resolver. Para implementar aplicaciones en estas plataformas, previo a la implementación, el estudiante deberá manejar y aplicar exhaustivamente conceptos de diseño de computación paralela a modo abordar a la programación paralela con metodología como una disciplina de ingeniería [10].

1

Mariano Diego Trigila, Facultad de Ciencias Fisicomatemáticas e Ingeniería, Pontificia Universidad Católica Argentina(UCA), [email protected] 2 Ricardo Di Pasquale, Facultad de Ciencias Fisicomatemáticas e Ingeniería, Pontificia Universidad Católica Argentina(UCA), [email protected]

DOI 10.14684/INTERTECH.24.2016.294-298 © 2016 COPEC February 28 – March 02, 2016, Salvador, BRAZIL XIV International Conference on Engineering and Technology Education 294

La impronta del articulo es delinear un curso de postgrado en Computación Paralela, cuyos contenidos apliquen al objetivo de que el estudiante logre: reconocer las distintas arquitecturas de computación paralela, seleccionar la arquitectura y plataforma adecuada de acuerdo a la naturaleza del problema a resolver y diseñar, construir e implementar aplicaciones en entornos paralelos. Para impartir el curso se eligió el modelo pedagógico de aula invertida [11] que es una de las formas de la metodología de aprendizaje combinado (blended learning). Las razones para elegir esta estrategia son [12]: esta estrategia permite guiar el aprendizaje de un conjunto mixto de estudiantes expertos y novatos, tomando en cuenta que curso de postgrado habitualmente se compone de profesionales con amplia experiencia laboral y graduados recientes. Además, permite que el tiempo en clase se use efectivamente para realizar experiencias reales en el laboratorio. De esta forma se puede mostrar el estado del arte, diseñar y experimentar con algoritmos y su impacto sobre cada ambiente paralelo, discutir resultados, resolver problemas técnicos cuando ocurren y ofrecer sugerencias en tiempo y forma.

AULA INVERTIDA El aula invertida o estrategia invertida de aprendizaje es un formato o enfoque de organización del tiempo y de la estructura de un curso formativo [11] [13]. Pretende invertir los momentos de la enseñanza tradicional para brindar al estudiante dentro del aula, el desarrollo de conocimiento de orden superior y fuera del aula el desarrollo de conocimiento de orden inferior. De acuerdo a la taxonomía de Bloom, los niveles que componen el conocimiento de orden superior son: Analizar, Evaluar y Crear, y los niveles que componen los conocimientos de orden inferior son: Recordar, Comprender y Aplicar [11]. El docente es quien con una metodología centrada en el estudiante debe clasificar adecuadamente los contenidos para los dos momentos del aula invertida: que conocimientos requieren ser aprendidos por instrucción directa y serán desarrollados fuera del aula y que conocimientos se sitúan mejor en la experimentación y que serán llevados a cabo dentro del aula con el acompañamiento directo del docente. Para implementar el momento fuera del aula, se requerirá del soporte de la Tecnología y la Información (TIC), tales como ambientes educativos virtuales, simuladores, Internet, etc. que permita alojar los recursos necesarios y actividades para que el estudiante pueda adquirir el conocimiento declarativo [11]. Para implementar el momento dentro del aula se requiere de un punto físico de reunión del grupo, que en nuestro caso particular será el Laboratorio de Computación Paralela. Es el momento de intercambio intelectual y el docente facilitará las actividades que permitan desarrollar la experimentación y la creatividad [11].

© 2016 COPEC

Este modelo pedagógico provee mas oportunidades para adaptar la enseñanza a la experiencia de cada estudiante, permitiendo un manejo adecuado de la carga cognitiva. La experiencia es la diferencia individual mas significativa entre personas y es el factor mas importante a tener en cuenta para el diseño de un curso. Hay que tener en cuenta, que estrategias de aprendizaje que pueden ayudar a novatos puede perjudicar el aprendizaje de expertos. [14] La teoría de carga cognitiva trata con las limitaciones de la capacidad de la memoria de trabajo y la automatización de esquemas en la memoria a largo plazo [15] [16]. Se diferencian tres tipos de carga: intrínseca, extrínseca y germánica (pertinente / relevante) [17] [18] [19]. La carga de la memoria de trabajo puede ser afectada por la naturaleza intrínseca de la tarea de aprendizaje (carga intrínseca) que es inherente a la complejidad de la tarea y al nivel de experiencia de la persona; por la manera en como la tarea es presentada (carga extrínseca) y que está relacionada con aquella carga que innecesariamente satura, contamina y afecta a la memoria de trabajo; y por el aprendizaje que realmente ocurre (carga germánica) y que se constituye a partir de los procesos cognitivos adecuados, como las abstracciones y las elaboraciones que contribuyen a la construcción de esquemas [20].

DESCRIPCIÓN DEL CURSO Este curso de postgrado es para graduados en Informática y Ciencias de la Computación. Es requisito del curso que los estudiantes tengan conocimientos previos en concurrencia, sistemas distribuidos, sistemas operativos, programación orientada a objetos y lenguajes de programación. El curso tiene dieciséis encuentros presenciales (dieciséis semanas) obligatorios de dos horas cada uno, que se desarrollan en el Laboratorio de Computación Paralela. Es un curso para un grupo reducido de estudiantes tomando en cuenta la capacidad del Laboratorio (15 a 20 personas). El énfasis es en el diseño de algoritmos paralelos tomando en cuenta la arquitectura y la plataforma. Usando un enfoque metodológico se maximiza el rango de opciones a considerar, se provee de mecanismos para evaluar alternativas y se reduce el costo del backtracking de elecciones incorrectas. Ian Foster [10] describe una metodología que estructura el proceso de diseño en 4 etapas: partición, comunicación, aglomeración y mapeo (conocido como PCAM). En las primeras 2 etapas, se enfoca en concurrencia y escalabilidad, y busca descubrir algoritmos con estas cualidades. En las etapas 3 y 4, la atención se enfoca en características relacionadas con el rendimiento. Desarrollo del curso En el primer encuentro se presenta el curso, la descripción de la metodología y una vista general conceptual. En el último encuentro se realizan actividades de cierre, encuestas, conclusiones generales y planificación de los trabajos finales.

February 28 – March 02, 2016, Salvador, BRAZIL XIV International Conference on Engineering and Technology Education 295

Para el momento fuera del aula, se le brinda al estudiante el material didáctico necesario que deberá “aprehender” previamente al encuentro presencial en aula. El estudiante recibe una agenda digital para el próximo encuentro que sirve de guía para aprender los conceptos necesarios para realizar las experiencias en la siguiente clase, con sus referencias a apuntes, videos, simulaciones, ejercicios, fuentes de información, etc. pertinentes para poder comprender los conceptos que se piden. El material podrá ser reforzado para aquel estudiante que le fuera necesario. También se habilitarán foros de discusión a modo de fomento al aprendizaje colaborativo y a la contribución de los estudiantes con mas experiencia laboral (expertos en otras áreas) para guiar a los estudiantes recién graduados (novatos) y la posibilidad de hacer preguntas que serán respondidas tanto por otros estudiantes como por los docentes del curso. Para el momento en el aula, los estudiantes realizan las actividades relacionadas a los contenidos propuestos en el curso. Cada encuentro presencial de dos horas tiene tres etapas: La primera de veinte minutos aproximadamente, donde cada estudiante, individualmente, debe contestar un cuestionario digital de 5 preguntas sobre los conceptos básicos necesarios para realizar la práctica. La segunda de setenta minutos aproximadamente, se dedica a introducir brevemente el problema a resolver y discutir las respuestas del cuestionario aplicados al problema (retroalimentación). A continuación se realiza la práctica correspondiente (praxis) usando la metodología. Los estudiantes trabajan en grupos para fomentar el intercambio de información, la discusión y el trabajo colaborativo. Los docentes actúan como mentores o consultores. Finalmente, en la tercera etapa, de diez minutos, se hace el cierre, con una breve introducción para el próximo encuentro y cada estudiante individualmente completa un cuestionario/encuesta digital relacionado con los haceres, saberes y sentires de la clase. Evaluación del curso Es fundamental para que el aula invertida sea efectiva que los estudiantes asistan a los encuentros presenciales y hayan aprendido los temas solicitados. Para lograr este objetivo, se hace un breve cuestionario, en general con opciones múltiples al principio de la clase presencial. Son evaluaciones formativas, que indican los problemas que tiene cada estudiante en particular, y que permite modificar el desarrollo del curso en función del grupo de estudiantes del semestre, agregando mas material específico, si se detecta falta de conocimientos/experiencia previa o dificultades en entender determinados conceptos. A su vez, forma parte de la evaluación sumativa del curso. [13] Estos cuestionarios son obligatorios y se pueden recuperar en clases posteriores. Al finalizar el curso, se pacta el trabajo final, siendo una praxis integradora que se realiza con grupos reducidos de estudiantes. © 2016 COPEC

Módulos del Curso El curso consta de cuatro módulos. El primer módulo es fuertemente teórico con un contenido que será transversal al resto de los tres módulos restantes, los cuales tendrán características teórico–prácticas inherentes a cada arquitectura. Primer módulo: Principios de la computación paralela. Por que es necesaria. Limitaciones expresadas por sus leyes, por la arquitectura imperante y por los modelos conceptuales. Metodología de diseño y construcción de programas paralelos. Segundo módulo: Clúster Linux HPC. Organización y arquitectura. Programación con MPI. Diseño, desarrollo e implementación de algoritmos paralelos para procesos de alto rendimiento. Tercer módulo: Clúster Apache Hadoop. Arquitectura y componentes de la plataforma. Gestión de conjuntos de datos masivos. Modelo Map Reduce (MR). Diseño, desarrollo e implementación de algoritmos paralelos para procesar volúmenes de datos masivos. Cuarto módulo: Ecosistema Apache Spark. Arquitectura y componentes. Modelos Resilient Distributed Dataset (RDD). Diseño, desarrollo e implementación de algoritmos paralelos para procesar volúmenes de datos masivos con un alto rendimiento en su procesamiento. Clústeres y Plataformas Paralelas Los clústeres a utilizarse en el curso poseen atributos tecnológicos diferentes y cada uno esta orientado para el uso de problemáticas distintas. Beowulf: Es un conjunto de PCs dedicadas y físicamente agrupadas en un rack que no requiere acceso, ni activación manual. El rack interconecta las computadoras por una red local de alta velocidad. Corre un software de computación paralela específico (Rocks Clusters) y es administrado desde un nodo principal. Se programa en C/C++/Fortran con MPI [21] o Java/Python. La asignación de tareas y la transferencia de datos a las computadoras (workers), la tolerancia a fallos, y la alta disponibilidad son temas que suelen depender del implementador de la solución y que se deberán resolver codificándolas explícitamente. Hadoop / MapReduce: Es una plataforma que corre sobre clústeres NOW implementando un sistema de archivos distribuido [22]. Especializa sus nodos como NameNodes para almacenar y procesar meta-datos y DataNodes (donde los datos residen). El sistema es orientado a streaming, por lo que posee una alta latencia, factor que se compensa con bloques de transferencia de gran tamaño. En los DataNodes se pueden procesar los trabajos paralelos (TaskTrackers) mediante MapReduce. MapReduce fue especialmente diseñado para el cómputo paralelo de grandes colecciones de datos. Se programa en Java, Scala, C y otros lenguajes. La diferencia de enfoque respecto de MPI consiste en que los datos no se transfieren sobre la red, sino que los nodos JobTrackers coordinan la ejecución de las tareas Map y

February 28 – March 02, 2016, Salvador, BRAZIL XIV International Conference on Engineering and Technology Education 296

Reduce entre los nodos TaskTrackers, con el fin de distribuir los algoritmos al lugar donde residen los datos de la manera más eficiente. El framework implementa la alta disponibilidad que es configurada por el administrador del clúster. La tolerancia a fallos está soportada de manera nativa, aunque suele ser complementada con gestores de clústeres como ZooKeeper [23]. Spark: Es una plataforma de procesamiento masivo de datos que puede correr sobre Hadoop, fue pensada para dar solución a problemas que el enfoque MapReduce no cubre completamente, como pueden ser los problemas de índole iterativa y la utilización de la memoria en los clústeres. Para eso, se basa en estructuras conocidas como RDD (Resilient Distributed Data) [24]. Posee una serie de APIs para tratar problemas tan diversos como Machine Learning o Teoría de Grafos. Se programa en Java, Scala, C, R, Python y otros lenguajes. Posee todas las propiedades de los clústeres Hadoop, además de extenderlo en temas cruciales como rendimiento en base al uso de estructuras distribuidas en memoria, procesamiento iterativo eficiente, variables de estado y una gama de transformaciones y acciones mucho más variada que Map y Reduce. Problemas a desarrollar en el curso El objetivo es aplicar conceptos teóricos en el análisis, diseño, desarrollo, implementación y obtener conclusiones usando la metodología PCAM. Práctica 1: Implementar un algoritmo fácilmente paralelizable sin complejidades adicionales. Se pide la implementación en MPI del algoritmo de multiplicación de matrices. Contrastar con una versión secuencial, tomar métricas de profiling, evaluar el speedup y la eficiencia, aplicar Ley de Amdahl. Adicionalmente se requiere el análisis del rendimiento para diversas dimensiones de matrices y la observación de las limitaciones del aumento del speedup. Las conclusiones y discusiones de la práctica deben incluir:  Importancia del diseño del algoritmo paralelo.  Causales de la merma del speedup. Práctica 2: Sobre la plataforma Hadoop [22] MapReduce [25], se pide implementar un algoritmo capaz de ordenar 1Tb de datos [26] y analizar las métricas de manera similar a la práctica anterior. Implementar una versión simplificada del algoritmo Bubble Sort [26] sobre MPI con datos centralizados, con el fin de contrastar los enfoques. Las conclusiones y discusión pedidas son:  Importancia de enfocar adecuadamente el diseño del algoritmo para una ingesta masiva de datos.  Verificar que el enfoque Bubble Sort sobre MPI no es factible debido al volumen de datos.  Implicancias del diseño de algoritmos “MapReduce”. Práctica 3: Sobre la plataforma Apache Spark [24] con el módulo GraphX [28] se pide, en base al esquema de citaciones de MedLine [29] [30], con sus índices MeSH © 2016 COPEC

(Medical Subject Headings) provistos de manera pública, analizar y construir una red de co-ocurrencias de conceptos médicos [31]. Como acompañamiento se utiliza el análisis expuesto por Ryza et al. [32] teniendo en cuenta que este tipo de análisis ha sido implementado en otras plataformas. Conclusiones y discusión:  Dificultades para implementar algoritmos analíticos en grafos sobre plataforma MapReduce cuando la ingesta de datos es importante, pero no masiva.  Dificultad técnica para realizar la implementación de todos los operadores aplicados sobre plataforma MPI.  Beneficios de mantener una estructura RDD en memoria de manera distribuida. Práctica 4 (Integración); Con el objetivo de consolidar las diferencias sobre las plataformas expuestas y la importancia central de diseñar correctamente la estrategia de paralelización (tanto general, como específica para la plataforma seleccionada), se pide implementar el mismo algoritmo en las tres plataformas. El algoritmo seleccionado es el SSSP de Dijkstra [33]. Se comienza analizando una versión secuencial. Para su paralelización en MPI, se sugiere un diseño similar al propuesto por Pore [34]. Luego de tomar las métricas, se solicitará aumentar la ingesta de datos, de modo de evidenciar problemas con la implementación, sugiriendo la plataforma Hadoop. En este caso, la adaptación al mecanismo MapReduce no es trivial, porque posee un orden de complejidad mayor a la solución secuencial, aunque, permite ejecutar instancias muy grandes. Como guía se utilizará el enfoque propuesto por Lin et al. [35]. Con el fin de simplificar la implementación, se pide una sobre la plataforma Apache Spark GraphX, tal como se puede observar en su documentación oficial [36].

RESULTADOS ESPERADOS Hay una tendencia que postgrados y maestrías incluyan cursos para desarrollar habilidades específicas para poner al día los conocimientos requeridos de una profesión. Se debe tomar en cuenta que graduados con experiencia laboral tienen características pedagógicas que los distinguen en el aprendizaje de un estudiante de grado. Estas incluyen: el desarrollo de mas autosuficiencia y autonomía; mayor evaluación crítica e introspección; y mayor originalidad en el desarrollo y en la aplicación de ideas. Por consiguiente, requieren actividades de aprendizaje colaborativo con mayor autonomía y estudio acordado, con aprendizaje experimental y un mayor compromiso con literatura de avanzada. El autoaprendizaje de conceptos teóricos permite contemplar la diversidad de formaciones básicas de los estudiantes. [37] El curso planteado basado en el modelo pedagógico de aula invertida cumple con estas características por lo cual se espera que facilite el aprendizaje y desarrolle las habilidades necesarias para trabajar en computación paralela.

February 28 – March 02, 2016, Salvador, BRAZIL XIV International Conference on Engineering and Technology Education 297

REFERENCIAS [1]

National Research Council, Frontiers in Massive Data Analysis, The National Academies Press, 2013

[2]

Ghoshal, S. K., A Practical Approach to Parallel Computing, Hyderabad: Orient Blackswan, 2000.

[3]

Baker, M. Editor, “Cluster Computing White Paper”, Computing Research Repository - CORR , vol. cs.DC/0004, 2000.

[4]

Culler, D. E., Arpaci-Dusseau,A.,Arpaci-Dusseau,R., Chun, B., Lumetta,S., Mainwaring, A., Martin,R., Yoshikawa, C., and Wong, F., "Parallel computing on the Berkeley NOW." 9th Joint Symposium on Parallel Processing, 1997.

[5]

Apon, A., Buyya, R., Jin, H., and Mache, J. ." Cluster computing in the classroom: Topics, guidelines, and experiences", First IEEE/ACM International Symposium on Cluster Computing and the Grid, 2001. Proceedings, , 2001, pp. 476-483

[21] Trigila, M., “Cluster Lappa: Implementation of a low cost cluster for paralell processing”, Proceedings of International Conference on Engineering and Technology Education, 2015. [22] Shvachko, K., Kuang, H., Radia, S., and Chansler, R., “The hadoop distributed file system,” IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST), 2010, pp. 1–10. [23] Hunt, P., Konar, M., Junqueira, F. P., and Reed, B., “ZooKeeper: Wait-free Coordination for Internet-scale Systems.,” USENIX Annual Technical Conference, 2010, p. 9. [24] Zaharia, M., Chowdhury, M., Das, T., Dave, A., Ma, J., McCauley, M., Franklin, M. J., Shenker, S., and Stoica, I., “Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing,” Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation, USENIX Association, 2012, pp. 2–2. [25] Dean, J., and Ghemawat, S., “MapReduce: Simplified Data Processing on Large Clusters,” Commun. ACM, Vol. 51, Jan. 2008, pp. 107–113.

[6]

Sterling, T. L., Beowulf cluster computing with Linux. MIT press 2002.

[7]

MPI: Open MPI: Open Source High Performance Computing. Available online at: http://www.open-mpi.org/ (Accedido 09/10/15).

[8]

Hadoop: Apache Hadoop. Available online at: https://hadoop.apache.org/ (Accedido 09/10/15).

[9]

Spark: Apache Spark. Available online at: http://spark.apache.org/ (Accedido 09/10/15).

[28] Gonzalez, J. E., Xin, R. S., Dave, A., Crankshaw, D., Franklin, M. J., and Stoica, I., “Graphx: Graph processing in a distributed dataflow framework,” Proceedings of OSDI, 2014, pp. 599–613.

[10] Foster, I., Designing and building parallel programs, Addison Wesley Publishing Company, 1995.

[29] Greenhalgh, T., “How to read a paper. The Medline database.,” BMJ: British Medical Journal, Vol. 315, 1997, p. 180.

[11] Martínez-Olvera, W., Esquivel-Gámez, I., and Castillo, J. M., “Aula Invertida o Modelo Invertido de Aprendizaje: Origen, Sustento e Implicaciones”, Los Modelos Tecno-Educativos, revolucionando el aprendizaje del siglo XXI. Editorial Lulu. Capítulo, 2014.

[30] Kastrin, A., Rindflesch, T. C., and Hristovski, D., “Large-Scale Structure of a Network of Co-Occurring MeSH Terms: Statistical Analysis of Macroscopic Properties”, 2014,, Available online at: http://dx.plos.org/10.1371/journal.pone.0102188 (Accedido 09/10/15)

[12] Gallo, M. ,“Blend the Lab Course, Flip the Responsibility”, Promoting Active Learning through the Flipped Classroom Model, Chapter 10, IGI Global, 2014, pp. 185-207.

[31] Leydesdorff, L., and Vaughan, L., “Co-occurrence matrices and their applications in information science: extending ACA to the web environment,” Journal of the American Society for Information Science and technology, vol. 57, 2006, pp. 1616–1628.

[13] Redekopp, M., Ragusa, G., “Evaluating flipped classroom strategies and tools for computer engineering”, Proceedings of ASEE Annual Conference, 2013.

[26] O’Malley, O., “Terabyte sort on apache hadoop”, May 2008, pp. 1–3. Available online at: http://sortbenchmark. org/Yahoo-Hadoop.pdf,. (Accedido 09/10/15) [27] Astrachan, O., “Bubble sort: an archaeological algorithmic analysis,” ACM SIGCSE Bulletin, ACM, 2003, pp. 1–5.

[32] Ryza, S., and others, Advanced Analytics with Spark. Ed, by Ann Spencer. O’Reilly, 2014.

[14] Abeysekera, L. and Dawson, P. "Motivation and cognitive load in the flipped classroom: definition, rationale and a call for research." Higher Education Research & Development , 2014, pp.1-14.

[33] Reid-Miller, M. “Lecture 11 - Shortest Weighted Paths II“, Available online at: http://www.cs.cmu.edu/afs/cs/academic/class/15210s12/www/lectures/lecture11.pdf , 2012, (Accedido 09/10/15)

[15] Sweller, J., “Implications of cognitive load theory for multimedia learning”, R. E. Mayer (Ed.), The Cambridge handbook of multimedia learning. Nueva York: Cambridge University Press, 2005, pp. 19-29.

[34] Pore, A., “Parallel implementation of Dijkstra’s algorithm using MPI library on a cluster ”, 2014, Available online at: http://www.cse.buffalo.edu/faculty/miller/Courses/CSE633/PoreSpring-2014-CSE633.pdf (Accedido 09/10/15)

[16] Kalyuga, S., “Enhancing instructional efficiency of interactive elearning environments: A cognitive load perspective”. Educational Psychology Review, Vol. 19, 2007, pp. 387-399. [17] Ayres, P. and Paas, F. “Interdisciplinary perspective inspiring a new generation of cognitive load research”. Educational Psychology Review, Vol. 21(1), 2009, pp. 1-9. [18] Paas, F., Tuovinen, J., Tabbers, H., and Van Gerven, P. ,”Cognitive load measurement as a means to adVance cognitive load theory”. Educational Psychologyst, Vol. 38(19, 2003, pp. 63-71. [19] Sweller, J., “Keynote address: Cognitive load”, Symposium on Cognitive Load: Theory and Applications. Fo Guang University, Yilan, Taiwán, 2007.

[35] Lin, J., and Dyer, C., “Data-intensive text processing with MapReduce,” Synthesis Lectures on Human Language Technologies, vol. 3, 2010, pp. 1–177. [36] GraphX Programming Guide. Available online at: http://spark.apache.org/docs/latest/graphx-programming-guide.html 2015 (Accedido 09/10/15) [37] McEwen, L., Monk, J., Hay, I., Kneale, P. and King, H., “Strength in diversity: enhancing learning in vocationally-orientated, master's level courses”. Journal of Geography in Higher Education, Vol.32 (1). pp. 101-119.

[20] Van Merriënboer, J., & Sweller, J., “Cognitive load theory and complex learning: Recent developments and future directions”, Educational Psychology Review, Vol. 17(2) , 2005, pp. 147-177. © 2016 COPEC

February 28 – March 02, 2016, Salvador, BRAZIL XIV International Conference on Engineering and Technology Education 298

Suggest Documents