4 research outputs found

    Teaching Parallel Programming Using Java

    Full text link
    This paper presents an overview of the "Applied Parallel Computing" course taught to final year Software Engineering undergraduate students in Spring 2014 at NUST, Pakistan. The main objective of the course was to introduce practical parallel programming tools and techniques for shared and distributed memory concurrent systems. A unique aspect of the course was that Java was used as the principle programming language. The course was divided into three sections. The first section covered parallel programming techniques for shared memory systems that include multicore and Symmetric Multi-Processor (SMP) systems. In this section, Java threads was taught as a viable programming API for such systems. The second section was dedicated to parallel programming tools meant for distributed memory systems including clusters and network of computers. We used MPJ Express-a Java MPI library-for conducting programming assignments and lab work for this section. The third and the final section covered advanced topics including the MapReduce programming model using Hadoop and the General Purpose Computing on Graphics Processing Units (GPGPU).Comment: 8 Pages, 6 figures, MPJ Express, MPI Java, Teaching Parallel Programmin

    A systematic review of the literature on methods and technologies for teaching parallel and distributed computing in universities

    Get PDF
    There is a growing demand for software developers who have experience writing parallel programs rather than just "parallelizing" sequential systems as computer hardware gets more and more parallel. In order to develop the skills of future software engineers, it is crucial to teach pupils parallelism in elementary computer science courses. We searched the Scopus database for articles on "teaching parallel and distributed computing" and "parallel programming," published in English between 2008 and 2019. 26 papers were included in the study after quality review. As a result, a lab course using the C++ programming language and MPI library serves as the primary teaching tool for parallel and distributed computing

    A systematic review of the literature on methods and technologies for teaching parallel and distributed computing in universities

    Get PDF
    There is a growing demand for software developers who have experience writing parallel programs rather than just" parallelizing" sequential systems as computer hardware gets more and more parallel. In order to develop the skills of future software engineers, it is crucial to teach pupils parallelism in elementary computer science courses. We searched the Scopus database for articles on" teaching parallel and distributed computing" and" parallel programming," published in English between 2008 and 2019. 26 papers were included in the study after quality review. As a result, a lab course using the C++ programming language and MPI library serves as the primary teaching tool for parallel and distributed computing

    Cluster de alto desempenho para uso na disciplina de computação paralela e distribuída utilizando contêineres

    Get PDF
    Trabalho de Conclusão de Curso, apresentado para obtenção do grau de Bacharel no Curso de Ciência da Computação da Universidade do Extremo Sul Catarinense, UNESC.Nas mais diversas áreas, cientificas e profissionais, é crescente a necessidade por de se obter cada vez mais poder computacional, seja para manter uma enorme quantidade de serviços ativos, ou resolver problemas científicos e matemáticos complexos, porém o alto custo de um supercomputador faz com que se busque alternativas de se obter esse desempenho, sendo uma delas a utilização de clusters como por exemplo o tipo Beowulf que tem como proposta, unir recursos computacionais local ou geograficamente dispersos trazendo vantagem inclusive em relação aos supercomputadores. Porém, mesmo sendo estes mais viáveis financeiramente, ainda representam gastos elevados, levando as empresas e universidades optarem por utilizar ambientes compartilhados na intenção de reduzir os custos, surgindo com isso, problemas oriundos do compartilhamento de recursos, conflitos de dependências entre outras. Como solução para esses problemas, surgem técnicas de virtualização, sendo uma delas os chamados contêineres, que são mais leves e capazes de isolar as aplicações, passando a ser uma boa alternativa para resolver muitos destes problemas. Utilizando essa ideia, o presente trabalho busca alternativas de implementar um cluster de alto desempenho baseado em contêineres, para ser utilizado na disciplina de computação paralela e distribuída, e com isso evitar problemas de compatibilidade, falta de infraestrutura necessária para a implementação de uma cluster físico e evitar conflitos de configuração devido a uma instalação malsucedida, além de acelerar o processo de instalação do cluster, e com isso dar aos alunos a experiência de desenvolverem programas paralelos, em um ambiente próximo ao real
    corecore