Как в moodle исполнить код python
Перейти к содержимому

Как в moodle исполнить код python

  • автор:

Moodle. Системы тестирования программ обучающихся

Moodle. Системы тестирования программ обучающихся

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

  • Соревнования Уральского федерального университета
  • Технокубок от компании mail.ru
  • Красноярская школа программиста
  • Соревнования по программированию 2.0 (Codeforces)
  • Contester 2.4
  • Яндекс Контест
  • Dudge
  • PCMS2
  • DOMjudge
  • Система Московского центра непрерывного математического образования

Данные системы является самодостаточными и разворачивается на сервере или с ними можно работать зарегистрировавшись в системе. Работа с системой как со стороны администратора, так и со стороны пользователей, в роли которых выступают обучающиеся и преподаватели, осуществляется через веб-интерфейсы. Такая технология обеспечивает дополнительные возможности в организации обучения. Обучаемый может работать с системой из любой точки мира, в которой обеспечен доступ к сети Интернет, и в то же время все действия обучаемого фиксируются на сервере и доступны для преподавателя.

Однако для данных систем есть несколько ограничений и проблем в использовании:

  • Дополнительная регистрация
  • Отслеживание выполнения
  • Оценивание
  • Сервер недоступен или медленно проверяет из-за большого количества участников

Среди множества дополнений moodle есть два модуля, схожих по функционалу, а в некоторых моментах и превосходящие указанные выше системы. Первый является полноценным этапом курса с возможностью тонкой настройки и проверки и называется «Virtual Programming lab for Moodle» (сокращенно VPL). Второй является тестовым заданием и может быть включен в состав тестов и называется CodeRunner. Данные дополнения moodle позволяют использовать функционал вышеописанных систем без связанных с ними проблем.

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

Virtual Programming lab for Moodle

Virtual Programming Lab — это модуль учебного курса moodle , который позволяет создавать и проверять задания на программирование и имеет следующие характерные особенности:

  • Редактирование исходного кода программы в браузере с подсветкой кода;
  • Запуск интерактивных программ в браузере;
  • Тестирование готовых программ;
  • Позволяет искать сходство между файлами учащихся;
  • Позволяет установить ограничения редактирования, и избежать вставки внешнего текста.

Данный модуль используется для тестирования программ среднего уровня, а также при обучении работы с черепашкой Python.

Метод проверки правильности представленной программы в системе достаточно простой. Создается система тестов, каждый из которых содержит входные данные и выходные данные, которые должны быть выданы правильно работающей программой. Обучаемый через веб-интерфейс пишет текст программы. Программа компилируется на сервере и запускается на выполнение с входными данными, представленными в каждом из тестов. Выходные данные сравниваются с эталоном с помощью специальной подпрограммы, называемой чекером. В системе реализованы компиляторы для подавляющего большинства популярных в настоящее время языков программирования — Ada, Bash script, C, C++, Fortran, Java, Pascal, Prolog, SQL, Scheme, Python и т. д.

vpl moodle

Есть возможность установки ограничений на время исполнения и используемую память. Есть возможность создания заданий с несколькими вариантами, а также настройки позволяющие открывать или скрывать от учеников входные и выходные данные тестовых заданий на валидацию программы учащегося с эталонной. Проверка работоспособности программы учащегося возможна в браузере. Это достаточно компактная IDE работающая на любом компьютере с выходом в интернет.

vpl moodle

Пример из практики

Условие Задачи 1

В файле files.csv записаны сведения о файлах. Всего в списке 280 записей, каждая из которых содержит

  • имя файла;
  • размер файла в Кбайтах;
  • тип файла (аудио, видео, изображение, презентация, текстовый, электронная таблица);
  • дату создания файла;
  • дату последнего изменения файла;
  • и уровень доступа.

Все элементы в каждой строке разделены запятыми.

Напишите программу, которая читает данные из файла в массив структур (записей) и выводит на экран

а) количество файлов каждого типа;

б) список 10 самых больших файлов, отсортированный по именам файлов (для каждого вывести имя файла и размер);

в) список презентаций ограниченного доступа, которые изменялись в 2012 году; список нужно отсортировать в алфавитном порядке по именам файлов;

г) список видео размером больше 100 Мбайт, созданных во второй половине 2011 года; список нужно отсортировать по убыванию размеров файлов.

Файл files прикреплен к заданию, но учащийся его не видит.

Проверка производится с помощью специальной программы:

import os from subprocess import Popen, PIPE checkGrade = 0 answerData = <> answer = def comment(s): #s=s.decode('utf-8') '''formats strings to create VPL comments''' if len(s.split("\n"))>2: for d in s.split("\n"): print('Comment :=>> ' + str(d)) else: print('Comment :=>> ' + str(s)) def grade(num): '''formats a number to create a VPL grade''' print('Grade :=>> ' + str(num)) with Popen('python3 main.py', shell=True, stdout=PIPE,stderr=PIPE) as proc: res=proc.communicate() if proc.returncode: comment(res[1]) else: for d in res[0].decode('utf-8').strip().split("\n"): listD = d.split() ans = " ".join(listD[1:]) key = listD[0] answerData[key] = ans for key in answerData: if key in answer: if answer[key].replace(' ','') == answerData[key].strip().replace(' ',''): checkGrade += 1 print('Comment :=>> ' + 'Выполнено задание '+key) moodle_max_grade = float(os.environ["VPL_GRADEMAX"]) check = int(checkGrade/4*100) print('Comment :=>> ' + "Вы выполнили задание на " + str(check)+ "%") check = moodle_max_grade*(check/100) grade(check)

Которая так же не видна учащимся.

Условие Задачи 2.

В одной фирме решили организовать локальную сеть, но инженер Вася не ходил на лекции по основам организации сети и забыли купить маршрутизатор. Однако его дедушка, знающий военный инженер связист, рассказал ему что 30 лет назад они соединяли все компьютеры в одну сеть используя один кабель. Такая топология сети называлась «Шина». Вася решил организовать сеть по топологии Шина, а для этого ему нужно проложить как можно меньше кабеля, чтобы уложиться в бюджет и организовать сеть без маршрутизатора. Помогите Васе рассчитать минимальную длину кабеля, которую нужно заказать в магазине.

Проверка производится на основе стандартных средств модуля по параметрам заданным в специальном файле:

ase=#1 grade reduction=100% input=3 3 1 2 1 2 3 2 3 1 3 output=3 . Case=#4 grade reduction=100% input=8 8 1 2 1 2 4 3 4 3 7 3 6 9 5 6 6 6 7 4 7 8 2 8 1 1 output=24

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

CodeRunner

CodeRunner — это бесплатный модуль с открытым исходным кодом для Moodle, который может запускать программный код на разных языках программирования, представленный учащимися в качестве ответа. Он предназначен главным образом для использования в курсах компьютерного программирования, хотя он может использоваться для оценки любого вопроса, ответ на который является текстом. Обычно используется в адаптивном режиме тестов Moodle; учащиеся пишут свой код на каждый вопрос по программированию и сразу же получают результаты тестирования кода. Затем они могут исправить свой код и отправить повторно, как правило, с небольшим штрафом в 10% и есть возможность установки этого значения.

coderunner moodle

Тестовые задания помеченные светло-зеленым цветом не видны учащемуся.

В настоящее время поддерживает Python2, Python3, C, C++, Java, PHP, JavaScript (NodeJS), Octave и Matlab. Архитектура позволяет добавлять и другие языки программирования, например Pascal.

Данная система уже используется во множестве зарубежных учебных учреждениях, а также в школе 179 г. Москвы и Инженерный лицей НГТУ в г. Санкт Петербург.

Тонкая настройка вопроса позволяет запретить использовать некоторые встроенные функции языка программирования или проверять только определенные функции или процедуры написанные учащимся.

coderunner moodle

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

Тип вопросов CodeRunner поддерживает возможность генерации мультивариантных вопросы для каждого учащегося путем использования механизмов шаблона Twig.

Пример из практики

Условие Задачи 1.

Условие задачи задано шаблоном Twig:

На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Требуется написать программу, которая подсчитает кол-во чисел оканчивающихся на >

 < "text": ">", "uravnen": ">", "nRange1": ">", "nRange2": ">", "dN": ">" >

Программа проверки решения:

import subprocess import random import json random.seed() student_ans = """>""" test_program = """>""" def someStreamCreatingProcess(stream1, stream2): for i in range(200): x = str(random.randint(>, >))+"\n" stream1.write(bytes(x, encoding='utf-8')) stream2.write(bytes(x, encoding='utf-8')) stream1.write(bytes("0\n", encoding='utf-8')) stream2.write(bytes("0\n", encoding='utf-8')) stream1.close() stream2.close() with open('student.py', 'w') as fout: fout.write(student_ans) with open('test.py', 'w') as fout: fout.write(test_program) subpr1 = subprocess.Popen(["python3", "student.py"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) subpr2 = subprocess.Popen(["python3", "test.py"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) someStreamCreatingProcess(stream1=subpr1.stdin, stream2=subpr2.stdin) chek = subpr1.wait() err = subpr1.stderr.read() out1 = subpr1.stdout.read() out2 = subpr2.stdout.read() if err: mark = 0 result = else: if out1 == out2: mark = 1 great = "Супер! У тебя все получилось" result = else: mark = 0 result = print(json.dumps(result))
n = int(input()) g = 0 while n != 0: if > and n%10 == >: g = g+1 n = int(input()) print(g)

Условие Задачи 2.

Известно что список a содержит только целочисленные элементы, количество этих элементов неизвестно. Необходимо написать программу, которая в заданном списке найдет максимальный по значению элемент.

Программа проверки решения:

# -*- coding: utf-8 -*- __saved_input__ = input def input(prompt=»): s = __saved_input__(prompt) print(s) return s import sys import codecs sys.stdout = codecs.getwriter(«utf-8»)(sys.stdout.detach()) __student_answer__ = «»»>»»» if «max(» not in __student_answer__.replace(‘ ‘, »): pass else: print(«Запрещено использовать функцию max») sys.exit(0) SEPARATOR = «##» > > > print(SEPARATOR)

В данном случае проверка производится путем запуска программы учащегося на нескольких тестовых значениях. Результат программы учащегося сравнивается с эталонным:

Вишенка на торте для инженерных классов. Arduino и CodeRunner.

Возможности Moodle и модуля CodeRunner позволяют также внедрить мини курс по изучению микроконтроллеров на базе платформы Arduino.

Тонкая настройка вопроса позволила описать стандартные функции и операторы Arduino IDE и импортировать их перед запуском программы учащегося. Сопоставление производится путем простого алгоритма, в котором сравниваются данные полученные на эталонном алгоритме и алгоритме учащегося.

arduino moodle

В данном примере в вопрос встроена виртуальная плата Arduino с сайта Tincercad, на которой можно испытать свой код даже без наличия реальной платы на руках .

Ответ учащийся заносит в поле ответа, проверка так же автоматическая, как и в случае с задачами на программирование.

Полная документация на английском языке для описанных выше модулей находится тут Coderunner и тут VPL

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

will attend moodle classes

Cantoneese/sleepsaver1

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Sleepsaver зайдет на пары в Moodle за вас в соответствии с расписанием и будет периодически обновлять страницу с произвольной задержкой (подробнее о задержке в инструкции). Для РГПУ им. Герцена расписание можно получить автоматически.

Здоровый сон очень важен: от него зависит работа иммунитета, общее самочуствие, физическое и психическое здоровье человека. Не пренебрегайте им!

Автор не несет ответственности за вашу успеваемость или отчисление из университета. Все что вы делаете — на ваш страх и риск.

Инструкция по установке

Скачайте все файлы Sleepsaver из этого репозитория и поместите в одну папку. Для работы потребуется установленный браузер Google Chrome (на Windows) или Mozilla Firefox (на Linux).

Также потребуются:

  • Python 3.6+ (Проверить установленную версию: python -V )
  • Python pip (устанавливается вместе с Python)
  • Chrome/Firefox webdriver (прилагается, однако может быть несовместмим с вашей версией браузера)
  • Библиотеки Selenium и Requests (см. далее)

Шаг 1: Откройте командную строку и перейдите в каталог Sleepsaver

Для Windows

  1. Нажмите Win + R и наберите cmd.exe
  2. Перейдите в папку. Пример команды для папки sleepsaver в загрузках: cd C:\Users\[username]\Downloads\sleepsaver

Для Linux

  1. Откройте терминал (вы лучше меня знаете, как)
  2. Перейдите в папку. Пример команды для папки sleepsaver в загрузках: cd ~/Загрузки/sleepsaver

Шаг 2: Установите зависимости Sleepsaver и вебдрайвер

Для Windows Введите в консоли: pip install -r requirements.txt

Скопируйте нужный вебдрайвер из папки windows_drivers в папку с программой

Для Linux Введите в терминале: pip3 install -r requirements.txt

Скопируйте нужный вебдрайвер из папки linux_drivers в папку с программой

Шаг 3: Заполните параметры в файле config.json

  1. Откройте файл конфигурации в любом редакторе кода или блокноте/nano
  2. Настройте параметры в соответствии с данной инструкцией:

Примечание по поводу вебдрайвера

  • Для разных версий браузера нужны разные версии драйвера, предложенный драйвер может не подойти к вашей версии Chrome / Firefox. В таком случае ищите в Google: «Chrome / Firefox python selenium webdriver installation guide» и следуйте инструкциям. Другие браузеры не поддерживаются, однако могут заработать. Пробуйте.
  • Пользователи Linux не пишут расширение файла и не забывают выдать ему права на исполнение: sudo chmod +x filename
  1. Сохраните файл и закройте текстовый редактор

Шаг 4: Прверьте правильность настройки вебдрайвера и Selenium

Запустите webdriver_test.py . Скрипт прочитает настройки из файла конфигурации и попытается открыть на 5 секунд сайт Google. Если все настроено правильно — вы увидите, как откроется и закроется браузер и в консоли появится сообщение об успешном завершении теста.

Для Windows Наберите команду python webdriver_test.py Брандмауер может запросить разрешение на доступ в интернет. Выдайте его и попробуйие снова.

Для Linux Наберите команду python3 webdriver_test.py

Пока webdriver_test.py не завершится успешно, Sleepsaver работать не сможет. Если вы получаете сообщения об ошибках — копируйте их и ищите решение в Google.

Шаг 5: Запускайте программу

Для Windows Наберите команду python sleepsaver.py или дважды кликните на файл sleepsaver.py

Для Linux Наберите команду python3 sleepsaver.py

При первом запуске будут созданы несколько доп. файлов в папке с программой. При первом запуске и каждую неделю программа скачивает расписание с сайта поставщика. Иногда в расписании отсутствует информация о ссылке на курс в Moodle по предмету (в таком виде расписание берется с guide.herzen.spb.ru). В случае отсутствия этих данных программа попросит ввести их вручную. Скопируйте ссылки вручную и вставьте в консоль, они будут сохранены в файле fillers.json для следующего раза, когда такой пропуск встретится.

Следуйте инструкциям на экране и все получится. Хорошего отдыха!

Помощь в разработке приветствуется, открывайте Issue если найдете баги и отправляйте Merge request если нашли способ их исправить / доработать программу.

ПРОГРАММНЫЕ РЕШЕНИЯ ОПТИМИЗАЦИИ ПРОЦЕССОВ УПРАВЛЕНИЯ И СОСТАВЛЕНИЯ ЭЛЕКТРОННЫХ УЧЕБНЫХ МАТЕРИАЛОВ В LMS MOODLE Текст научной статьи по специальности «Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Горожанов А. И.

Описывается опыт лаборатории фундаментальных и прикладных проблем виртуального образования ФГБОУ ВО МГЛУ по разработке программного обеспечения для оптимизации процессов администрирования LMS Moodle и «быстрой разработки» отдельных модулей системы: баз данных и тестовых заданий, в том числе на множественный выбор с одним правильным вариантом ответа. Приводятся листинги кода программ на Python , осуществляющих преобразование текстовых файлов с учебными материалами в файлы CSV и XMl и позволяющие импортировать эти материалы в систему управления обучением. делается вывод о том, что найденные программные решения являются эффективными и экономически оправданными.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Горожанов А. И.

Использование модуля генерации случайных чисел Python для составления упражнений по иностранному языку

Автоматизация процесса составления комплексов упражнений по грамматике немецкого языка на основе крупного художественного произведения

LMS Moodle как инструмент разработки курсов иностранных языков — узлов обучающей виртуальной среды
LMS Moodle как инструмент разработки курсов иностранных языков – узлов обучающей виртуальной среды
LMS Moodle как инструмент разработки курсов иностранных языков – узлов обучающей виртуальной среды
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SOFTWARE SOLUTIONS FOR OPTIMIZATION OF MANAGEMENT AND COMPOSITION OF ELECTRONIC LEARNING MATERIALS IN THE LMS MOODLE

The article describes the experience of the laboratory for Fundamental and applied issues of Virtual education of Moscow state linguistic university in creating software for optimizing the lMs Moodle administration processes and for the “rapid development” of its modules (databases and quizzes, including multiple choice tests with one correct answer). the listings of Python programs are provided that convert tXt files with learning materials to csV and XMl files and allow to import these materials into the learning management system. it is concluded that the software found solutions are effective and economically viable.

Текст научной работы на тему «ПРОГРАММНЫЕ РЕШЕНИЯ ОПТИМИЗАЦИИ ПРОЦЕССОВ УПРАВЛЕНИЯ И СОСТАВЛЕНИЯ ЭЛЕКТРОННЫХ УЧЕБНЫХ МАТЕРИАЛОВ В LMS MOODLE»

доктор филологических наук, доцент, профессор кафедры грамматики и истории немецкого языка факультета немецкого языка, заведующий Лабораторией фундаментальных и прикладных проблем виртуального образования; e-mail: a.gorozhanov@linguanet.ru

ПРОГРАММНЫЕ РЕШЕНИЯ ОПТИМИЗАЦИИ ПРОЦЕССОВ УПРАВЛЕНИЯ И СОСТАВЛЕНИЯ ЭЛЕКТРОННЫХ УЧЕБНЫХ МАТЕРИАЛОВ В LMS MOODLE

Описывается опыт Лаборатории фундаментальных и прикладных проблем виртуального образования ФГБОУ ВО МГЛУ по разработке программного обеспечения для оптимизации процессов администрирования LMS Moodle и «быстрой разработки» отдельных модулей системы: баз данных и тестовых заданий, в том числе на множественный выбор с одним правильным вариантом ответа. Приводятся листинги кода программ на Python, осуществляющих преобразование текстовых файлов с учебными материалами в файлы CSV и XML и позволяющие импортировать эти материалы в систему управления обучением. Делается вывод о том, что найденные программные решения являются эффективными и экономически оправданными.

Ключевые слова: дистанционное обучение; автоматизация процессов; оптимизация; генерация файлов; LMS Moodle; Python.

Ph.D., Professor, Department of German Language Grammar and History,

Faculty for German Language, Head of Laboratory for Fundamental

and Applied Issues of Virtual Education; e-mail: a.gorozhanov@linguanet.ru

SOFTWARE SOLUTIONS FOR OPTIMIZATION OF MANAGEMENT AND COMPOSITION OF ELECTRONIC LEARNING MATERIALS IN THE LMS MOODLE

The article describes the experience of the Laboratory for Fundamental and Applied Issues of Virtual Education of Moscow State Linguistic University in creating software for optimizing the LMS Moodle administration processes and for the «rapid development» of its modules (databases and quizzes, including multiple choice tests with one correct answer). The listings of Python programs are provided that convert TXT files with learning materials to cSV and XML files and allow to import these materials into the learning management system. It is concluded that the software found solutions are effective and economically viable.

Key words: E-Learning; automatization of processes; optimization; generation of files; LMS Moodle; Python.

В настоящее время системы управления обучением (англ. Leaming Management System — LMS) являются основным средством обеспечения учебного процесса в условиях дистанционного образования, хотя в актуальной предметно-специальной литературе упоминаются и другие инструменты, например, WhatsApp [Khan 2020; Mpungose 2020; Sherine 2020], Instagram [Загуменная 2017], Skype [Страмной 2020; Vagvala 2020;] и Google Class [Malik 2018; Samper 2017]. Среди современных систем управления обучением наибольшей популярностью, наряду с Blackboard и Edmodo, пользуется LMS Moodle [The 20 MPLMS]. Она имеет 191 млн. пользователей и 145 тыс. инсталляций в 241 стране мира [Moodle Statistics 2020]. Встроенные инструменты LMS Moodle, как впрочем, и всякой другой системы подобного рода, не всегда удобны для так называемой «быстрой разработки»1 компонентов курсов и для оперирования большим количеством учетных записей пользователей, поэтому необходимо создание программных продуктов, которые бы решали эти задачи с минимальными затратами времени и ресурсов. На основании эмпирических данных, полученных в ходе разработки дистанционных образовательных программ и администрирования LMS Moodle, были выявлены процессы, требующие совершения большого количества однообразных действий, т. е. действий по определенному алгоритму. Это позволило сделать вывод о том, что в отношении этих процедур возможно применение программных решений. Далее приводятся результаты работы по созданию программного обеспечения на языке программирования Python, проведенной в Лаборатории фундаментальных и прикладных проблем виртуального образования ФГБОУ ВО МГЛУ в период с 2018 по 2020 гг.

1. Автоматизация процесса создания учетных записей пользователей

Одной из рутинных задач по администрированию LMS Moodle является создание новых учетных записей и распределение их владельцев по курсам. Поскольку в нашем случае речь идет о коммерческой инсталляции LMS Moodle, которая является закрытым узлом

1 От англ. rapid development.

институциональной обучающей виртуальной среды [Горожанов 2018, с. 81], то опция самостоятельной регистрации деактивирована. Регистрация нового пользователя «вручную» требует выполнения следующих действий (здесь и далее приводятся пункты англоязычного интерфейса):

1. Открыть страницу «Site administration ^ Users ^ Accounts ^ Add a new user».

2. Заполнить поле «Username» (предварительно составить имя пользователя).

3. Заполнить форму «New password» (предварительно составить безопасный пароль, который должен содержать не менее восьми символов, включая минимум одну заглавную букву, одну строчную букву, одну цифру и один другой символ, например, «#» или «$»).

4. Заполнить форму «First name» (в соответствии с паспортными данными слушателя).

5. Заполнить форму «Surname» (в соответствии с паспортными данными слушателя).

6. Заполнить форму «Email address».

LMS Moodle позволяет загружать новых пользователей списком из файла CSV с разделителем по запятой. Файл должен иметь заголовок, в котором указываются поля страницы: «Site administration ^ Users ^ Accounts ^ Add a new user»; в нашем случае: «username,ema il,firstname,lastname,password».

Составлять такой файл в ручном режиме неудобно, поэтому приемлемым решением является «ручное» составление файла TXT, который затем программно трансформируется в файл CSV. Определим содержание файла TXT таким образом, чтобы каждая его строка представляла данные одного пользователя, например: «iivanov, student@ student.my, Иван, Иванов».

Разработанная программа имеет следующий код (см. Листинг 1):

Листинг 1. Код программы генерации файла CSV

from random import sample, choice

f = open(‘mails.txt’, ‘r’, encoding=’utf-8′)

for line in lines:

password = «.join(sample(chrs,lngth)) + «a#»

result += line.split(‘,’)[0] + ‘,’ + line.split(‘,’)[1] + ‘,’ + line.split(‘,’)[2] + ‘,’ + line. split(‘,’)[3][:-1] + ‘,’ + password + ‘\n’ num += 1

f = open(‘users.csv’, ‘w’, encoding=’utf-8′)

Программа содержит всего 16 строк, однако позволяет не только безошибочно сформировать файл CSV, но также и генерирует уникальный и сколь угодно сложный пароль для каждого пользователя. Полученный файл загружается в LMS Moodle на странице «Site administration ^ Users ^ Accounts ^ Upload users».

Далее необходимо записать каждого нового слушателя на определенную образовательную программу (курс). Если все новые слушатели будут изучать один и тот же курс, то можно воспользоваться опцией создания «когорт». В «когорту» объединяется определенное число учетных записей с тем, чтобы они автоматически распределялись на тот или иной курс, попадая в «когорту». Для этого первая строка импортируемого файла CSV расширяется одним пунктом:

В код программы вносятся соответствующие изменения (переменная «result» в строках 4 и 11 кода Листинга 1).

2. Наполнение базы данных

База данных является важным модулем LMS Moodle, в котором удобно располагать списки глагольных форм языковых курсов. Приведем пример такой базы данных для форм русских глаголов «Курса русского языка как иностранного (начальный уровень, на основе английского и испанского языков)»1. База данных содержит два поля:

1 Альварес Сояер А. А., Горожанов А. И., Кочеткова Ю. А. Свидетельство о регистрации электронного ресурса № 24232 от 01.11.2019 r. URL : drive.google.com/drive/ Mders/1bMhY9k5PdNeIm-JaOOLmzhO00S0m-tye.

«Verb/Verbo» и «Form/Formas». Первое принимает простой текст, а второе предусматривает возможность разметки HTML.

Для «ручного» добавления записи в базу данных необходимо выполнить следующие действия:

1. Активировать вкладку «Add entry».

2. Заполнить поле «Verb/Verbo».

3. Заполнить поле «Form/Formas» (соблюдая правила разметки HTML).

Экспорт и импорт записей в модуль происходит также с помощью файла CSV, который задает наименования полей, а затем построчно приводит их содержание. Например, для первой записи в рассматриваемом курсе (см. Листинг 2):

Листнинг 2. Файл CSV одной записи базы данных

«Verb / Verbo», «Forms / Formas» делать,»<р>||г^

Pres.: я делаю, ты делаешь, он / она / оно делает, мы делаем, вы делаете, они делают

Pret.: я / ты / он делал (m), я / ты /она делала (f), оно делало, мы / вы / они делали

Здесь отдельные ячейки записи дополнительно отделены друг от друга знаком кавычек. Таким образом, разделителем является запятая вне кавычек. Для более удобного внесения записей в базу данных была разработана программа, конвертирующая файл TXT в файл CSV (см. Листинг 3):

Листинг 3. Код программы генерации файла CSV для базы данных

result = ‘»Verb / Verbo»,»Forms / Formas»\n’

f = open(‘bdlines.txt’, ‘r’, encoding=’utf-8′)

for line in lines:

line = line.replace(«!n», «

»).replace(«n», «

»)

line = line.replace(«***», «»).replace(«**», «»)

result += ‘\n’ num += 1

f = open(‘bdlines.csv’, ‘w’, encoding=’utf-8′)

Программа не только производит построчное преобразование фала TXT в файл CSV, но и меняет оформление контента по определенным правилам. В процессе заполнения второго поля, предусматривающего возможность разметки HTML, необходимо постоянно переключать раскладку клавиатуры для ввода тегов, если набор основного текста происходит не на английском языке. В коде Листинга 3 предусмотрена замена последовательности символов «!», «*» и «?» на открывающиеся и закрывающиеся теги «

«, «» и «» соответственно. Опытные данные показывают, что именно эти теги используются чаще всего для разметки поля глагольных форм. Полученный файл XML загружается в базу данных через страницу «Database activity administration ^ Import entries».

3. Генерация тестовых заданий

Составление тестовых заданий является наиболее трудоемким процессом при написании курсов LMS Moodle. Система позволяет импортировать и экспортировать тестовые задания с помощью специальных файлов XML, поэтому в этом случае также возможно программное решение.

Самым простым тестовым заданием является выбор из двух («да/нет»), хотя с увеличением количества заданий в рамках одного тестового модуля вероятность выполнить модуль на 100 %, «угадывая», значительно снижается. Испытуемому предлагается некоторое утверждение, на которое он должен ответить положительно или отрицательно. От составителя теста требуется ввести всего лишь три параметра: наименование задания, утверждение и верный вариант ответа, однако ввод этих данных вручную занимает много времени, в связи с необходимостью постоянно перезагружать страницу редактора тестовых заданий.

Программное решение заключается в генерации файла XML из файла TXT, в котором построчно введены указанные три параметра с разделителем «вертикальная черта», например:

Параметр «1» означает, что приведенное в задании утверждение верно. Программа имеет следующий код (см. Листинг 4):

Листинг 4. Код программы генерации файла XML

для заданий «да/нет»

f = open(‘truefalse.txt’, ‘r’, encoding=’utf-8′)

for line in lines:

i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

f = open(‘truefalse.xml’, ‘w’, encoding=’utf-8′)

Относительно большой размер программы обусловливается необходимостью включить в ее код многочисленные теги XML, которые являются одинаковыми для всех тестовых заданий этого вида.

Далее приведем пример программного решения для одного из самых популярных тестовых заданий — множественный выбор с одним верным вариантом ответа. Здесь задача усложняется тем, что мы не знаем заранее, сколько неправильных вариантов ответа может быть предусмотрено автором задания. В файле TXT необходимо представить построчно следующие данные: наименование задания, формулировку задания, верный ответ, количество неправильных ответов, все неправильные ответы, например:

«quest_name_001|quest_text_001|True variant|2|false variant1|false variant2»

Разделителем для отдельных параметров также является «вертикальная черта». Для всех тестовых заданий параметр «перемешивания» ответов включен по умолчанию, опции нумерации ответов и автоматического комментария отключены. Полученная программа имеет следующий код (см. Листинг 5):

Листинг 5. Код программы генерации файла XML для заданий на множественный выбор с одним верным вариантом ответа

f = open(‘multichoice_radio.txt’, ‘r’, encoding=’utf-8′)

for line in lines:

for i in range(int(line.split(«|»)[3])): if i == int(line.split(«|»)[3]) — 1:

f = open(‘multichoice_radio.xml’, ‘w’, encoding=’utf-8′)

Приведенное решение значительно экономит время разработчика курса, делая ненужными 11 кликов для внесения данных тестового задания через графический интерфейс редактора, не считая копирования в формы номера задания, его формулировки и вариантов ответов. При необходимости форматирования вносимого текста количество

кликов может увеличиться кратно, тогда как в генерирующую программу для этого необходимо будет добавить всего несколько строковых переменных с форматирующими тегами HTML.

Полученные файлы XML загружаются в банк вопросов на странице «Course administration ^ Question bank ^ Import».

Приведенные выше программные решения призваны оптимизировать процесс обработки данных пользователей LMS Moodle Лаборатории фундаментальных и прикладных проблем виртуального образования ФГБОУ ВО МГЛУ, а также помочь преподавателю (или администратору в роли преподавателя) относительно быстро создавать электронные учебные и справочные материалы для курсов LMS Moodle, минимизируя количество ошибок за счет высокого уровня автоматизации. В самом деле, выполняя рутинные операции, человек часто может сделать опечатку в тексте или ошибку в настройках (например, перепутать правильный и неправильный ответы в составляемом задании). Программное обеспечение в высокой степени защищает пользователя от этого, так как последнему приходится выполнять меньшее количество «ручных» действий. Оно позволяет автору учебных материалов сосредоточиться на методических вопросах, не отвлекаясь на выполнение однообразных механических действий. Небольшой объём программ преобразования файлов позволяет сделать вывод о том, что найденные решения являются эффективными и экономически оправданными, так как в полной мере решают поставленные перед ними задачи и не требуют привлечения дополнительных трудовых ресурсов.

Горожанов А. И. Формирование обучающей виртуальной среды в контексте новых информационных технологий : дис. . д-ра филол. наук. М., 2018. 535 с.

Загуменная А. А., Темербекова А. А. Возможности Инстаграм в системе образования // Информация и образование: границы коммуникаций. 2017. № 9 (17). С. 47-48.

Страмной А. В. Методология и технология инновационного урока английского языка // Мир науки, культуры, образования. 2020. № 1. С. 142-144. DOI: 10.24411/1991-5497-2020-00058.

Khan, A., Usmani, A., Khaliq, T. WhatsApp an informal learning and communication tool: Perception of medical officers working in low resource setting: A Focus Group Discussion // The Journal of the Pakistan Medical Association. Vol. 70. Iss. 2. Islamabad : Pakistan Medical Association, 2020. P. 225-230. D01:10.5455/JPMA.17802.

Malik, M. A., Badolo, M. B. Internet-Based Learning Management Model to Improve the Student’s Mathematic Problem Solving Ability // Journal of Physics Conference Series. Bristol : IOPscience, 2018. Vol. 1028. P. 1-7. DOI: 10.1088/1742-6596/1028/1/012128.

Moodle Statistics. URL : stats.moodle.org (дата обращения: 29.03.2020).

The 20 Most Popular Learning Management Systems. URL : www.teachthought. com/technology/the-20-most-popular-learning-management-systems (дата обращения: 29.03.2020).

Mpungose, C. B. Is Moodle or WhatsApp the preferred e-learning platform at a South African university? First-year students’ experiences // Education and Information Technologies. Early Access. NY : Springer, 2020. P. 927-941. DOI: DOI: 10.1007/s10639-019-10096-0.

Samper, M. D., Garcia-Garcia, D., Ferri, J. M., Carbonell-Verdu, A., Lopez-Martinez, J. Implementation of the platform GOOGLE CLASROOM in the subject «Treatment of Residues» for the realization of flipped class experience / Congreso nacional de innovacion educativa y docencia en red. Valencia: Univ Politecnica Valencia, 2017. P. 429-437. DOI: 10.4995/INRED2017.2017.6818.

Sherine, A., Seshagiri, A. V. S., Sastry, M. M. Impact of WhatsApp Interaction on Improving L2 Speaking Skills / International Journal of Emerging Technologies in Learning. Vol. 15. Iss. 3. Kassel: Kassel Univ Press, 2020. P. 250-259. DOI: 10.3991/ijet.v15i03.11534.

Vagvala, S. H., Tolat, P. P., Hohenwalter, M. D., Duvnjak, P. Skype as a Tool for Resident Education on Call / Journal of the American College of Radiology. Vol. 17. Iss. 1. NY: Elsevier, 2020. PP. 75-77. DOI: 10.1016/j. jacr.2019.08.012.

Gorozhanov A. I. Formirovanie obuchajushhej virtual’noj sredy v kontekste novyh informacionnyh tehnologij : diss. . d-ra filol. nauk. M., 2018. 535 s.

Zagumennaja A. A., Temerbekova A. A. Vozmozhnosti Instagram v sisteme obra-zovanija // Informacija i obrazovanie: granicy kommunikacij. 2017. № 9(17). S. 47-48.

Stramnoj A. V. Metodologija i tehnologija innovacionnogo uroka anglijskogo jazyka // Mir nauki, kul’tuiy, obrazovanija. 2020. № 1. S. 142-144. DOI: 10.24411/1991-5497-2020-00058.

Khan, A., Usmani, A., Khaliq, T. WhatsApp an informal learning and communication tool: Perception of medical officers working in low resource setting: A Focus Group Discussion // The Journal of the Pakistan Medical Association. Vol. 70. Iss. 2. Islamabad: Pakistan Medical Association, 2020. P. 225-230. D01:10.5455/JPMA.17802.

Malik, M. A., Badolo, M. B. Internet-Based Learning Management Model to Improve the Student’s Mathematic Problem Solving Ability // Journal of Physics Conference Series. Bristol: IOPscience, 2018. Vol. 1028. P. 1-7. DOI: 10.1088/1742-6596/1028/1/012128.

Moodle Statistics. URL: stats.moodle.org (retrieved on 29.03.2020).

The 20 Most Popular Learning Management Systems. URL: www.teachthought. com/technology/the-20-most-popular-learning-management-systems (retrieved on 29.03.2020).

Mpungose, C. B. Is Moodle or WhatsApp the preferred e-learning platform at a South African university? First-year students’ experiences // Education and Information Technologies. Early Access. NY: Springer, 2020. P. 927-941. DOI: 10.1007/s10639-019-10096-0.

Samper, M. D., Garcia-Garcia, D., Ferri, J. M., Carbonell-Verdu, A., Lopez-Martinez, J. Implementation of the platform GOOGLE CLASROOM in the subject «Treatment of Residues» for the realization of flipped class experience // Congreso nacional de innovacion educativa y docencia en red. Valencia: Univ Politecnica Valencia, 2017. P. 429-437. DOI: 10.4995/ INRED2017.2017.6818.

Sherine, A., Seshagiri, A. V. S., Sastry, M. M. Impact of WhatsApp Interaction on Improving L2 Speaking Skills / International Journal of Emerging Technologies in Learning. Vol. 15. Iss. 3. Kassel: Kassel Univ Press, 2020. P. 250-259. DOI: 10.3991/ijet.v15i03.11534.

Vagvala, S. H., Tolat, P. P., Hohenwalter, M. D., Duvnjak, P. Skype as a Tool for Resident Education on Call / Journal of the American College of Radiology. Vol. 17. Iss. 1. NY: Elsevier, 2020. P. 75-77. DOI: 10.1016/j.jacr.2019.08.012.

Общий форум

моя задача кафедральная состоит в следующем:
Мне для moodle было поручено написать один дополнительный модуль, который позволял бы автоматически создавать новые курсы по дисциплинам на основании рабочей программы дисциплины (РПД). Это РПД преподаватель составляет в начале каждого семестра. Шаблон такой РПД у меня есть, но скинуть тут в сообщении вроде бы нельзя, прикреплять некуда)
То есть подразумевается, что преподаватель составляет такое РПД, затем заходит в систему и открывает курс своей дисциплины, который был создан уже заранее. Затем на странице этого курса ему надо уже загрузить в модуль свою составленную РПД и запустить его на исполнение, чтобы модуль выгрузил из этого файла нужные данные и создал всё необходимое: лабы, лекции, самостоятельные работы и т.д.
загружает его в модуль, который выгружает из этого файла нужные данный и создаёт всё необходимое.
Было решено, что удобнее всего выгружать данные из XML-файла, так что я просто создал аналогичный шаблон РПД, но в Экселе и сохранил его как XML, там получились удобные теги, которые удобно искать по стилю ячейки (ничего лучше не придумал я).
Сам модуль я решил на python’е писать.
Таким образом получается, что выгружаем данные и в виде SQL-запроса записываем в нужную таблицу БД moodle.
Визуально модуль удобно было бы изобразить в виде блока, на котором есть кнопка запуска python-скрипта, из-за чего я собственно и заинтересовался созданием собственного блока в moodle. Но я не совсем понимаю как моему скрипту сослаться на нужный файл РПД и начать его «парсить». Не знаю как подцепить источник данных так сказать.

Я пытался разобраться как загружаются файлы в мудл по аналогии с блоком «Мои личные файлы», но что-то порылся и знаний мне не хватает, чтобы понять что да как там устроено. В моём скрипте есть такие строки:
url = open(‘C:\XML 2003.xml’)
xml = parse(url)
И вот что записать вместо ‘C:\XML 2003.xml’ так, чтобы выбирался файл, нужный преподавателю, не знаю.

Я вот думаю цеплять файл как-нибудь при помощи блока «Мои личные файлы». То есть, преподаватель загружает свою РПД в данный блок. После уже надо запустить мой блок с кнопкой запуска скрипта. Теперь надо осуществить поиск в таблице «files» по id user’а и . по расширению файла. Будем считать и пропишем это в регламенте работы, что в блоке «Мои личные файлы» обязан находиться лишь один файл с расширением XML. Тогда по логике вещей должна найтись одна запись (хотя в таблице «files» при добавлении одного файла, почему-то добавляется 2 записи =/ ). После уже по этой записи скрипт должен понять какой именно файл ему цеплять для обработки. Но есть такие сложности, как то, что moodle записывает название файла как хэш-сумма и т.д.

Сумма оценок: —
В ответ на Матвей Беляков

Re: Как подцепить нужный файл из Moodle в собственный скрипт?

от Alexandre Scherbyna — четверг, 27 декабря 2012, 23:01

Какое совпадение! Я как раз вчера тоже думал, как бы автоматически пренести все данные из рабочей программы в создаваемый курс Moodle.

Мне кажется, решать такую задачу нужно следующим образом.

1) Проанализировать структуру XML-файлa бэкапа курса, содержащего только названия секций и ресурсы типа Пояснение.

2) Найти способ конвертирования XML-файлa рабочей программы (которую преподаватель создает в Word-e на основе вашего шаблона) в XML-файл бэкапа курса так, чтобы названия модулей рабочей программы стали названиями секций, а названия тем каждого модуля стали ресурсами типа Пояснение в этой секции.

Когда бэкап готов, мы его используем по назначению и получаем болванку курса, в которую перенесены все данные из рабочей программы. Дальше ее нужно вручную наполнять ресурсами и деятельностями Moodle, т.к. в рабочей программе есть только названия лабораторных, лекций и т.п., но не их содержание.

Тут следовало бы подумать, как можно автоматически отслеживать наполнение такого курса. У кого болванка так и осталась болванкой, а кто выложил материал, разместил задания и т.п.

Сумма оценок: —
Постоянная ссылка Показать сообщение-родителя Ответить
В ответ на Alexandre Scherbyna

Re: Как подцепить нужный файл из Moodle в собственный скрипт?

от Матвей Беляков — четверг, 27 декабря 2012, 23:26

Вы думали, а мне диплом по этому писать)))

Про XML-файлa бэкапа курса я как-то и не думал, да и даже не знал, что такой есть.

Только я думаю шаблон в Экселе сделать, так как там получаемая структура XML-файла намного приятнее, чем если сохрать в виде XML через Word) Всё таки в Экселе идёт хорошая привязка к ячейке и её содержимому.

Да да, идея как раз в том, чтобы создать множество компонентов (ресурсов и элементов) на основании данных из РПД. А уже их наполнением должен будет заняться в ручную преподаватель.

Пока я только написал скрипт, который парсит XML-шаблон, находит в ней название дисциплины и создаёт в moodle курс с таким названием) Но с научным руководителем уже обговорили, что создавать курс с помощью скрипта не надо (они будут уже «голые» созданы заранее). Надо будет заполнять пустые курсы содержимым на основании РПД. Только я вот делал заполнение через SQL_запрос, а вы говорите, что можно через бекап организовать всё это дело.

Сумма оценок: —
Постоянная ссылка Показать сообщение-родителя Ответить
В ответ на Матвей Беляков

Re: Как подцепить нужный файл из Moodle в собственный скрипт?

от Alexandre Scherbyna — пятница, 28 декабря 2012, 03:29

Матвей, формат XML создан для того, чтобы извлекать из документа нужную информацию и автоматически преробразовывать ее в другие докумнты самых разных форматов. Это называется XSLT-преобразованием. Суть его в том, что человек создает документ один раз, а компьютер делает из него много разнообразных представлений. Т.е. написал человек один раз рабочую программу в Worde и всё. Все другие ее представления: и ту таблицу Excel, которую вы его хотите заставить делать вручную, и бэкап для создания болванки курса в Moodle, и подробную презентацию структуры курса, и краткую справку, и множество других подобных документов должны создаваться из рабочей программы автоматически с помощью созданных вами XSLT-преобразований.

Сумма оценок: —
Постоянная ссылка Показать сообщение-родителя Ответить
В ответ на Матвей Беляков

Re: Как подцепить нужный файл из Moodle в собственный скрипт?

от Vadim Dvorovenko — понедельник, 31 декабря 2012, 18:55

Матвей, вряд ли Вам удастся сделать что-то для мудла на python. Потому как мудл написан на php и работает только с модулями написанными на php. А придумывать как присобачить python — как гвозди отвёрткой забивать.

Весь исходный код мудл один огромный пример того, что и как сделать.

Например, при импорте тестовых попросов как раз отображается форма с выбором параметров и окошком для загрузки файла в систему и его последующей обработкой. Можете взять этот код за основу.

Дальше — не нужно никаких прямых sql запросов. В moodle есть специальный объект $DB, у которого куча методов типа insert_record, get_records, так что в 95% случаев даже sql код писать не надо.

Сумма оценок: —
Постоянная ссылка Показать сообщение-родителя Ответить
В ответ на Alexandre Scherbyna

Re: Как подцепить нужный файл из Moodle в собственный скрипт?

от Vadim Dvorovenko — понедельник, 31 декабря 2012, 18:56

А случайно в электронном деканате ничего подобного нет? Может быть проще сделать это модулем для ЭД, если там уже есть структурированная информация о рабочей программе или каких=то параметрах курса?

Сумма оценок: —
Постоянная ссылка Показать сообщение-родителя Ответить
В ответ на Alexandre Scherbyna

Re: Как подцепить нужный файл из Moodle в собственный скрипт?

от Alexandre Scherbyna — четверг, 3 января 2013, 03:51

Оказывается в mbz-архиве бэкапа Moodle 2 содержится множество xml-файлов. Поэтому документ Word легче преобразовать в zip-архив бэкапа Moodle 1, содержащий единственный xml-файл. Moodle 2.4 восстанавливает курсы из таких бэкапов.

Сумма оценок: —
Постоянная ссылка Показать сообщение-родителя Ответить

  • ◄ С Новым годом!
  • Как попасть в меню настроек? ►

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *