Web Platform for Parallel Programming Tutorials
Webové prostředí pro výuku paralelního programování
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/90482Identifikátory
SIS: 173017
Kolekce
- Kvalifikační práce [11196]
Autor
Vedoucí práce
Oponent práce
Yaghob, Jakub
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra softwarového inženýrství
Datum obhajoby
6. 9. 2017
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
paralelní, konkurentní, programování, tutoriály, kompilátoryKlíčová slova (anglicky)
parallel, concurrent, programming, tutorial, compilersTato diplomová práce prezentuje originální způsob pro výuku programování v paralelním a distribuovaném prostředí. Hlavním cílem práce je vytvoření online platformy pro programování, která bude obsahovat tutoriály ve formě jednoduchých úloh z oblasti paralelismu. Webová aplikace simuluje a vizualizuje více agentů, kteří musí kolaborativně vyřešit daný problém. Agenti jsou programováni v procedurálním jazyce, který vychází z JavaScriptu. Významná část práce se zabývá návrhem tohoto jazyka. Kompilátor jazyka byl vytvořen pomocí nástroje, který je obdobou Bisonu a Flexu. Implementovaný paralelní simulátor podporuje několik plánovacích algoritmů včetně lock-step módu, který simuluje běh programů na grafických kartách. Důležitá vlastnost platformy je rozšiřitelnost, proto jsou tutoriály a balíčky navrženy jako plug- iny. Závěrečná část práce je věnována implementaci ukázkových balíčků a tutoriálů, které demonstrují, že hlavního cíle práce se podařilo dosáhnout.
This thesis presents a novel approach to introducing programmers into parallel and distributed computing. The main objective of this work is to develop an online coding environment which contains tutorials in form of simple parallel programming tasks. The online application simulates and visualizes multiple agents which cooperate on a task in virtual environment. These agents are programmed in a custom procedural language similar to JavaScript. A significant part of this thesis focuses on the design of this language. The client-side compiler is built using tools similar to Bison and Flex. The parallel simulator supports different scheduling algorithms including lock- step mode simulating computation on a GPU. An important aspect of the platform is extensibility; therefore, the tutorials and the packages for the programming language can be added as plug-ins. The final part of this thesis is dedicated to the implementation of sample packages and tutorials which demonstrate that the key goals of this thesis have been accomplished.