Проектування візуального середовища для навчання студентів паралельного програмування

Проектування візуального середовища та розроблення формальної мови, яка буде використовуватися паралельним середовищем. Оператори візуального середовища для навчання студентів паралельних обчислень. Розгляд основні конструкції мови С++. Розробка програм.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык украинский
Дата добавления 26.10.2021
Размер файла 47,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ПРОЕКТУВАННЯ ВІЗУАЛЬНОГО СЕРЕДОВИЩА ДЛЯ НАВЧАННЯ СТУДЕНТІВ ПАРАЛЕЛЬНОГО ПРОГРАМУВАННЯ

Сіциліцин Ю.О.

старший викладач кафедри інформатики і кібернетики Мелітопольський державний педагогічний університет імені Богдана Хмельницького

Ключові слова: паралельні обчислення, паралельне програмування, С++, MPI, навчання паралельного програмування.

У статті висвітлений підхід до навчання студентів паралельного програмування засобами візуального навчального середовища для розробки паралельних програм. Автор висвітлює проблеми, які виникають у навчанні студентів паралельного програмування на лабораторних роботах. Натепер у закладах вищої освіти не починають викладати паралельне програмування, поки студент не розвине знання з послідовного програмування. Така практика приводить до того, що у розробці паралельних програм студенти спочатку пишуть послідовну програму. Автор доводить, що розробка студентами паралельних програм на лабораторних роботах з паралельного програмування потребує досить великого рівня володіння мовою програмування та прийомами роботи з даними. Це пов'язане з використанням динамічних масивів мови програмування С++ та бібліотеки паралельного та розподіленого програмування MPI. Для переходу до розробки паралельного коду спочатку студенту потрібно розробити частину програми, пов'язану з оголошенням змінних і масивів та опису роботи з динамічними масивами.

Також розробка паралельних алгоритмів ускладняється тим, що студенти вже встигли виробити у себе навички створення послідовних алгоритмів, а ці навички заважають розробці паралельних алгоритмів. Для вирішення проблеми автор пропонує розробити навчальне візуальне середовище. Для цього автор формулює основні вимоги до проектування візуального середовища та розробляє формальну мову, яка буде використовуватися паралельним середовищем. Ця мова допоможе спростити етап розробки програми, пов'язаний з підготовкою даних до паралельної обробки, та зосередитися саме на паралельній обробці. У висновках автор стверджує, що навчальне візуальне середовище допоможе студентам розробити паралельний код та візуально відстежити його виконання, що своєю чергою допоможе студентам ефективніше засвоїти паралельне програмування.

DESIGNING VISUAL ENVIRONMENT FOR TRAINING STUDENTS PARALLEL PROGRAMMING

Sitsylitsyn Yu. O.

Senior Lecturer at the Department of Computer Science and Cybernetics Bogdan Khmelnitsky Melitopol State Pedagogical University

Key words: parallel calculations, parallel programming, C ++, MPI, teaching students parallel programming.

The article highlights the approach to teaching students parallel programming by means of a visual learning environment for the development of parallel programs. The author highlights the problems that arise when teaching students parallel programming in laboratory work. Today, higher education institutions do not begin to teach parallel programming until the student develops knowledge of sequential programming. This practice leads to the fact that when developing parallel programs, students first write a sequential program. The author proves that the development of parallel programs by students in laboratory work on parallel programming requires a sufficiently high level of proficiency in the programming language and methods of working with data. This is due to the use of dynamic arrays of the C ++ programming language and the library of parallel and distributed MPI programming.

To proceed with the development of parallel code, the student must first develop a part of the program related to the declaration of variables and arrays and a description of working with dynamic arrays. Also, the development of parallel algorithms is complicated by the fact that students have already developed the skills to create sequential algorithms, and these skills hinder the development of parallel algorithms. To solve the problem, the author proposes to develop a visual learning environment. To do this, the author formulates the basic requirements for the design of the visual environment and develops a formal language that will be used in a parallel environment. This language will help to simplify the stage of program development related to the preparation of data for parallel processing and focus on parallel installments. In conclusion, the author argues that the learning visual environment will help students develop parallel code and visually track its implementation, which in turn will help students learn parallel programming more effectively.

Постановка проблеми

У закладах вищої освіти зі спеціальності «Комп'ютерні науки» студентів навчають послідовного програмування за допомогою однопотокової моделі програмування. Оскільки апаратне забезпечення комп'ютера стає все більш паралельним, виникає більша потреба в інженерах програмного забезпечення, які мають досвід у розробці паралельних програм не лише шляхом «паралелізації» послідовних конструкцій. Навчання студентів паралелізму на початкових курсах зі спеціальності «Комп'ютерні науки» є важливим кроком до формування компетентностей майбутніх інженерів-програмістів.

Натепер у закладах вищої освіти не починають викладати паралельне програмування, поки студент не розвине знання з послідовного програмування. Така практика приводить до того, що у розробці паралельних програм студенти спочатку пишуть послідовну програму [3]. Під час написання такої програми вони використовують уже вивчені послідовні алгоритми, а потім переробляють послідовну програму на паралельну. Такий підхід розробки паралельних програм приводить до виникнення у паралельних програмах типових помилок, таких як «стан гонитви» або «взаємне блокування».

Вирішення завдань на послідовній та паралельній обчислювальній системі значно відрізняються за кількістю етапів та їх змісту [2]. Тому для проектування паралельних або розподілених програм потрібно вивчати паралельні та розподілені алгоритми обробки даних.

Великий вплив чинить на структуру і технологію проектування паралельних програм состав методів паралельної обробки даних: рівень обчислювальних архітектур, рівень чисельних методів, рівень технологій програмування, рівень мов програмування, рівень паралельної обробки.

Деякі дослідники для формування у студентів основ паралельного мислення пропонують почати вивчення паралельного програмування вже з першого курсу [4].

Але на першому курсі більшість студентів ще не володіє достатньою мірою або зовсім не володіє основами мов програмування та середовищ розробки, які потрібні для початку вивчення паралельного програмування. Тому ми слідом за дослідниками [6] сформулюємо основні вимоги до проектування візуального середовища для навчання студентів паралельних та розподілених обчислень.

Мета статті - сформулювати основні вимоги до проєктування візуального середовища для навчання студентів паралельних обчислень.

Фундаментальні дослідження у галузі підготовки майбутніх інженерів-програмістів у закладах вищій освіти здійснюють В. Биков, В. Осадчий, З. Сейдаметова, О. Спірін, Ю. Триус. Також науковці висвітлюють окремі аспекти зазначених проблем, зокрема: питання якості професійної підготовки програмістів (А. Власюк, В. Круглик, К. Осадча, А. Стрюк); вимоги до професійних якостей майбутніх інженерів-програмістів (Н. Длугунович, A.J. Ko, P. L. Li, J. Zhu); організацію навчання майбутніх інженерів-програмістів у вишах інших країн світу (В. Круглик). Огляд та вибір засобів паралельного програмування зробили С. Лупін, М. Посипкін, В. Воєводін, Е. Уїльямс та інші вчені. І. Скопін досліджує навчання паралельного програмування, науковець А. Шеметова робить огляд методичних прийомів навчання паралельного програмування.

Спочатку визначимось з платформою, для якої потрібно проектувати візуальне середовище. Студенти будуть використовувати візуальне середовище протягом лабораторних робіт з дисципліни «Паралельне програмування». Тому можливі два варіанти: середовище буде розташоване на сервері або середовище буде розташоване локально на персональному комп'ютері у класі. Основною операційною системою сучасних серверів виступає Linux. На персональному комп'ютері операційна система - це Windows або Linux. Тому візуальне середовище потрібно розробляти кросплатформним, тобто воно повинне однаково працювати як під операційною системою Linux, так і під операційною системою Windows.

Серед кросплатформних мов, які можна застосувати для розробки візуального середовища, можна виділити мови Java та Python. Але якщо використовувати візуальне середовище через браузер як додаток до навчальної платформи, то можна зазначити, що деякі із сучасних браузерів (наприклад Google Chrome) не підтримують мову програмування Java. Тому мовою програмування візуального середовища вибираємо мову програмування Python.

Візуальне середовище у навчанні студентів паралельних обчислень повинне вирішувати дві проблеми цього навчання.

Перша проблема - для розробки паралельних програм потрібно на високому рівні знати розробку послідовних програм. Натепер одним з основних інструментів розробки паралельних програм є бібліотека MPI [8]. Ця бібліотека працює у взаємодії з мовою програмування С++ або Фортран. Розробка паралельної програми мовою програмування С++ з бібліотекою MPI потребує від студентів дуже хорошого знання мови програмування С++, а саме розділів про динамічну роботу з пам'яттю, використання вхідних та вихідних потоків даних, циклів тощо. У разі написання паралельної програми засобами С++ програми студент багато часу та уваги приділяє саме написанню коду, налагодженню роботи програми та усуненню помилок. Цей процес значною мірою відволікає увагу студента від розробки правильного паралельного коду та в умовах обмеження часу в рамках лабораторної роботи приводить до написання неправильного паралельного коду або до неможливості написання програми загалом.

Друга проблема - довга розробка послідовних програм заважає розвитку «паралельного мислення». Під «паралельним мисленням» будемо мати на увазі такий спосіб алгоритмічного мислення, який дозволяє побудувати паралельний алгоритм. Структура паралельного стилю мислення може бути представлена у вигляді спрощеної моделі (рис. 1).

Основні етапи розробки паралельного алгоритму можна охарактеризувати таким чином: виділення підзадач, встановлення інформаційних залежностей і організація інформаційної взаємодії підзадач. Крім того, важливу роль відіграє розуміння того, що всі підзадачі, насправді, виконуються паралельно (одночасно). Як показує практика, цей факт декларується студентам на словах, але фактично не сприймається і не розуміється повною мірою.

Рис. 1. Паралельний стиль мислення

Виходячи з описаних вище проблем, можна сформулювати основні вимоги до візуального середовища, яке буде займатися навчанням студентів розробки програм для паралельних обчислень.

Для вирішення першої проблеми у візуальному середовищі, яке розробляється, розподілимо оператори мови С++ на блоки. У розробці паралельної програми за допомогою візуального середовища студент не повинен багато часу приділяти синтаксису та пунктуації мови програмування, тому розробимо синтаксичні конструкції у вигляді блоків. Кожний з таких блоків повинен відповідати за закінчену смислову частку коду. Крім того, необхідно забезпечити логічну послідовність та відповідність блоків конструкціям мови програмування С++ та бібліотеки MPI.

Розглянемо основні конструкції мови С++, які необхідні для розробки паралельних програм:

- оголошення змінних;

- оператори введення-виведення на консоль (printf, scanf);

- оператори роботи з файлами (fstream);

- оголошення одновимірних масивів;

- оголошення багатовимірних масивів;

- заповнення масивів випадковими числами;

- виділення частки масиву з повного масиву (по строках, по стовпчиках, довільно).Зведемо ці дані у таблицю да дамо назви операторам (табл. 1).

Нами були розглянуті конструкції для роботи з масивами, які є основними складниками процесу паралельного програмування.

Якщо подивитись на бібліотеку MPI [8], то можна зробити висновок, що всі оператори бібліотеки вже повністю оптимізовані і не потребують конструювання з них блоків. Для спрощення роботи з ними потрібно убрати позначки роботи з динамічною пам'яттю.

Перейдемо до другої проблеми. Для її вирішення у середовищі, яке проектується, потрібно розробити графічний аналог кожного з блоку операторів та візуально відображати зв'язки по даних та по командах між цими частинами. Таким чином, студент під час розробки паралельної програми буде одразу бачити потік даних між частинами коду.

Таблиця 1. Оператори візуального середовища для навчання студентів паралельних обчислень

Опис

Оператор

Приклад на мові С++

Оголошення змінної

int (double) змінна

int a

Введення з консолі

input (змінна)

int a; scanf (“%d”, &a);

Виведення на консоль

output (змінна)

int a; printf (“%d”, a);

Читання з файлу

input_file (ім'я файлу)

#include <fstream> ifstream fin (“1.doc”);

if (fin.is_open()) fin.getline(buff, 50);

fin.close();

Виведення у файл

output_file (ім'я файлу)

#include <fstream> ofstream fout (“1.txt”); fout << “текст”;

fout.close();

Оголошення одновимірних масивів

array (розмір, змінна)

int n; cin >> n; double* a = new double[n];

Оголошення багатовимірних масивів

array (рядок, стовпчик, змінна)

int n;

int m;

cin >> n>> m; double** a = new double*[n]; for (int i = 0; i < n; i++) {a[i] = new double[m];}

Заповнення масивів випадковими числами

fill_array (змінна)

srand(time(0));

for (int i = 0; i < n; i++) {a[i] = rand() % 10 + 1}

Виділення частки масиву з повного масиву

slice_array

(початок, кількість, крок, змінна)

Приклади можна побачити тут [1]

При цьому будуть відображені основні проблеми паралельного програмування, які виникають під час розробки програми:

- взаємні блокування паралельних ділянок;

- несинхронний доступ або гонки;

- нескінченна відстрочка;

- взаємоблокування.

Висновки

візуальний навчання паралельний програма

Розробка візуального навчального середовища для навчання студентів паралельних обчислень завдяки виключенню з процесу розробки паралельної програми фактора помилок «звичайного» програмування та додавання візуального середовища відстеження потоку даних та команд під час виконання паралельної програми дозволить зосередити увагу студентів саме на паралельному програмуванні, чим підніме якість вивчення дисципліни «Паралельні обчислення».

Література

1. Грицюк Ю.І., Рак Т.Є. Програмування мовою С++: навчальний посібник. Львів: Вид-во Львівського ДУ БЖД, 2011. 292 с.

2. Карпов А. Введение в проблематику разработки параллельных программ.

3. Adams J., Brown R., Shoop E. Patterns and Exemplars: Compelling Strategies for Teaching Parallel and Distributed Computing to CS Undergraduates. J. 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

4. Breuer A., Bader M. Teaching Parallel Programming Models on a Shallow-Water Code. 11th International Symposium on Parallel and Distributed Computing. 2012.

5. Franczak T., Nkansahz A., Marrinan T., Papka M.E. A Path from Serial Execution to Hybrid Parallelization for Learning HPC. Workshop on Education for High-Performance Computing ser EduHPC'17. 2017.

6. Gregg C., Tychonievich L., Cohoon J., Hazelwood K., EcoSim J. A language and experience teaching parallel programming in elementary school, in SIGCSE'12. 2012, pp. 51-56.

7. Kuhail M.A., Cook S., Neustrom J.W., Rao P Teaching Parallel Programming with Active Learning. IEEE International Parallel and Distributed Processing Symposium Workshops. 2018.

8. Sitsylitsyn Y. Methods, tools for teaching parallel, distributed computing in universities: a systematic review of the literature. ICHTML 2020: SHS Web of Conferences 75. 2020.

References

1. Gritsyuk, Y.I., Cancer, T.E. (2011). Prohramuvannya movoyu C++: navchal'nyy posibnyk [C++ programming: a textbook]. Lviv: Lviv State University BJD Publishing House. 292 p. [in Ukrainian].

2. Karpov, A. Vvedeniye v problematiku razrabotki parallel'nykh program [Introduction to the development of parallel programs].

3. Adams, J., Brown, R., Shoop, E. (2013). Patterns and Exemplars: Compelling Strategies for Teaching Parallel and Distributed Computing to CS Undergraduates. IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

4. Breuer, A., Bader, M. (2012). Teaching Parallel Programming Models on a Shallow-Water Code. 11th International Symposium on Parallel and Distributed Computing.

5. Franczak, T., Nkansahz, A., Marrinan, T., Papka, M.E. (2017). A Path from Serial Execution to Hybrid Parallelization for Learning HPC. Workshop on Education for High-Performance Computing ser. EduHPC'17.

6. Gregg C., Tychonievich L., Cohoon J., Hazelwood K., EcoSim J. (2012). A language and experience teaching parallel programming in elementary school, in SIGCSE'12, 2012, pp. 51-56.

7. Kuhail. M.A., Cook S., Neustrom J.W., Rao P. (2018). Teaching Parallel Programming with Active Learning. IPDPSW.

8. Sitsylitsyn, Y. (2020). Methods, tools for teaching parallel, distributed computing in universities: a systematic review of the literature. ICHTML 2020: SHS Web of Conferences.

Размещено на Allbest.ru

...

Подобные документы

  • Аналіз предметної області та відомих реалізацій гри 2048. Універсальна мова моделювання UML в процесі проектування гри. Розробка алгоритмів функціонування модулів гри "2048". Оператори мови програмування Python. Особливості середовища Visual Studio.

    курсовая работа [1,2 M], добавлен 17.02.2021

  • Характеристика технології візуального проектування і програмування, суть якої полягає в тому, що область розробки бере на себе більшу частину рутинної роботи. Огляд середовища швидкої розробки, в якій як мова програмування використовується мова Delphi.

    курсовая работа [2,8 M], добавлен 27.02.2012

  • Відомості про мови програмування та методи програмування. Системні вимоги програми. Керівництво програміста та керівництво користувача. Використання консольного додатку візуального середовища Visual Studio 2010. Запуск програми "Толковый словарь".

    курсовая работа [791,1 K], добавлен 18.01.2015

  • Вибір мови програмування та середовища розробки. Основні можливості мови php та сервера MySQL. Основні переваги середовища розробки NetBeans. Macromedia Dreamweaver як один з популярних середовищ розробки сайтів. Розробка програмного коду сайту.

    контрольная работа [3,0 M], добавлен 16.02.2013

  • Основні принципи об’єктно-орієнтованого програмування. Типові середовища програмування та особливості мови С++. Етапи проектування БД. Розробка програмного забезпечення для реалізації створення бази відеофільмів. Основні положення та моделі БД.

    курсовая работа [2,7 M], добавлен 24.03.2011

  • Вивчення можливостей інтегрованого середовища розробки програм Qt Creator. Ознайомлення з основами паралельних обчислень мовою програмування С++ в цьому середовищі. Переваги та конструкції OpenMP, сортування масиву злиттям. Тестування програми сортування.

    курсовая работа [87,5 K], добавлен 28.10.2015

  • Вибір стратегії розв`язування задачі. Загальна характеристика середовища програмування Lazarus. Робота з текстовими файлами для збереження навчального матеріалу і результатів тестування. Авторизація викладача. Підпрограми редагування навчання та тестів.

    курсовая работа [1,6 M], добавлен 10.09.2012

  • Проектування бази даних (БД). Проектування логічної моделі БД. Реалізація БД та створення таблиць. Встановлення зв’язків, вибір мови та середовища програмування. Опис функціональних елементів та реалізація програми. Опис та тестовий приклад програми.

    дипломная работа [1,6 M], добавлен 07.01.2017

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

  • Дослідження середовища візуального програмування Delphi. Вивчення процесу створення навчальної програми "Електронний словник". Опис графічного інтерфейсу. Характеристика структури та основних процедур даної програми. Аналіз роботи з програмним кодом.

    курсовая работа [831,2 K], добавлен 01.03.2014

  • Комп'ютерні телекомунікації - перспективна технологічна основа дистанційної освіти. Загальні відомості про електронні підручники. Традиційнні алгоритмічні мови. Створювання мультимедійного комплексу, основні етапи. Гіпертекстові і гіпермедіа засоби.

    дипломная работа [1,3 M], добавлен 08.03.2013

  • Основні відомості про історію розвитку мови Object Pascal, середовища Delphi, їх основні технології та застосування для роботи з файлами. Опис основних особливостей мови, основних елементів програмної мови. Принципи об'єктно-орієнтованого програмування.

    курсовая работа [471,5 K], добавлен 12.04.2010

  • Технологія OpenMP як найпопулярніший засіб програмування комп'ютерів із загальною пам'яттю. Типи конструкцій OpenMP: функції виконуючого середовища OpenMP, директиви pragma. Аналіз параметрів операційного середовища OpenMP, особливості типів блокувань.

    реферат [397,2 K], добавлен 09.06.2012

  • Технології об'єктно-орієнтованого аналізу та проектування інформаційних систем. Історія та структура мови UML. Опис функціональної моделі засобами UML. Використання UML в проектуванні програмного забезпечення. Характеристика CASE-засобів Visual Paradigm.

    дипломная работа [7,9 M], добавлен 26.05.2012

  • Загальні відомості середовища програмування Delphi, умови та особливості ефективного застосування його можливостей. Методологія розробки прикладного програмного забезпечення, його характеристика та структура, елементи, головні вимоги до функціональності.

    курсовая работа [6,7 M], добавлен 11.09.2014

  • Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.

    курсовая работа [211,3 K], добавлен 19.08.2010

  • Особливості програмування web-орієнтованих інформаційних систем. Етапи створення web-сайту, вибір домену та хостингу. Опис програмного та апаратного середовища функціонування об’єкта проектування. Аналіз і вибір засобів для проектування web-додатків.

    курсовая работа [11,2 M], добавлен 03.06.2019

  • Розроблення додатка за допомогою об'єктно-орієнтованого візуального проектування Delphi для виконання арифметичних операцій або з використанням меню. Створення інтерфейсу користувача з використанням компонентів SYSTEM і WIN32. Обробка двовимірного масиву.

    методичка [326,1 K], добавлен 13.01.2010

  • Аналіз існуючих методів оцінки конкурентноспроможності підприємства. Процес навчання нечіткої експертної системи. Модель комлексної оцінки конкурентоспроможності страхової компанії методом візуального моделювання пакету Simulink середовища Matlab.

    дипломная работа [2,0 M], добавлен 27.05.2014

  • Функції і стан розвитку віртуальної освіти. Особливості Unity у створенні віртуального робочого середовища. Моделювання навчального проекту у віртуальному середовищі у вигляді лабораторної роботи з фізики, яка спрямована на покращення процесу навчання.

    курсовая работа [75,5 K], добавлен 18.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.