УДК 378.016:004
Организация учебного процесса при изучении дисциплины «Программирование»
© Бадмаева Энгельсина Сергеевна
старший преподаватель кафедры информационных технологий Бурятского государственного университета
670000, Россия, г. Улан-Удэ, ул. Ранжурова, 5
E-mail: eng_badmaeva@mail.ru
В статье представлена система организации учебного процесса при изучении дисциплины «Программирование» на первом курсе Института математики и информатики (ИМИ) БГУ. При обучении программированию приоритет должен отдаваться применению теоретических знаний на практике, без чего нельзя освоить основные приемы и технологии программирования. Поэтому для контроля уровня знаний и умений студентов используется балльно-рейтинговая система, в которой распределение баллов почти целиком отводится выполнению практических заданий. При организации лабораторных работ предусматриваются занятия для изучения основ алгоритмизации, т. к. разработка алгоритма решения задачи вызывает у студентов наибольшие затруднения. Для проверки выполнения программ на лабораторных занятиях коллективом преподавателей и студентов ИМИ была разработана и апробирована автоматизированная проверяющая система Ejudge.
Ключевые слова: программирование, язык программирования С++, алгоритмизация, язык блок-схем, балльно-рейтинговая система, автоматизированная проверяющая система Ejudge.
The organization of educational process to study programming
Engelsina S. Badmaeva
Senior lecturer, Department of Information Technologies, Buryat State University
5 Ranzhurova St., Ulan-Ude, 670000 Russia
The article reveals the system of organization of the educational process while studying the discipline "Programming" in the first year at the Institute of Mathematics and Computer Science (IMCS) of Buryat State University. While teaching Programming the priority should be given to the use of theoretical knowledge in practice, because it is not possible to acquire the main techniques and technologies. That is why the rating system is used to control knowledge and skills of students, when the distribution of points almost entirely occur by performing practical tasks. While organizing laboratory work the classes to study fundamentals of algorithmization are planned, as the development of algorithm of problem solution causes difficulties for students. To control programs performing at laboratory classes the automated testing system Ejudge was developed and applied by teachers and students of IMCS.
Keywords: programming, the programming language C++, algorithmization, the language of flowcharts, point-rating system, automated testing system Ejudge.
Дисциплина «Программирование» предусмотрена федеральным государственным образовательным стандартом по направлению подготовки 02.03.03 «Математическое обеспечение и администрирование информационных систем», 09.03.03 «Прикладная информатика» и 01.03.02 «Прикладная математика и информатика». Дисциплина преподается для студентов указанных специальностей на первом курсе Института математики и информатики и является базовой при изучении дисциплин профессионального цикла.
Обучиться программированию, не программируя, невозможно. Теоретические знания, которые студент получает на лекциях либо из специальной литературы или интернет-источников, требуют обязательного практического применения. Именно на практике, разрабатывая алгоритмы и программы для решения задач различного типа, нарабатываются основные приемы и технологии программирования. Основные проблемы при написании программ возникают на этапе разработки алгоритма решения задачи. Поэтому обучение программированию начинается с изучения основ алгоритмизации. В качестве средства обучения составлению алгоритмов был выбран графический язык (язык блок-схем). В качестве языка программирования был выбран язык С++, который на сегодняшний день является одним из самых распространенных
Для контроля уровня знаний и умений студентов используется балльно-рейтинговая система, согласно которой 90 % баллов студент зарабатывает именно за выполнение практических заданий. Сюда входят индивидуальные задания по пройденным темам (текущий контроль); задания, предлагаемые в контрольных работах по блокам тем (промежуточный контроль); задания, предлагаемые на за-
ВЕСТНИК БУРЯТСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
2015. Вып. 15
чете и экзамене (итоговый контроль).
Распределение количества баллов по видам контроля на примере первого семестра:
Вид контроля № темы Тема Количество баллов
1. Текущий контроль (разработка алгоритмов и программ по индивидуальным заданиям) 1 Линейные алгоритмы 2х1 балл = 2 балла
2 Разветвляющиеся алгоритмы 4х1 балл = 4 балла
3 Циклические алгоритмы 6х1 балл = 6 баллов
4 Линейные программы 2х1 балл = 2 балла
5 Разветвляющиеся программы 4х1 балл = 4 балла
6 Циклические программы 6х1 балл = 6 баллов
7 Одномерные массивы 12х1балл = 12 баллов
Макс. кол-во баллов за текущий контроль: 36 баллов
2. Промежуточный контроль (контр. работы) 1 Разветвляющиеся и циклические алгоритмы 12 баллов
2 Разветвляющиеся и циклические программы 12 баллов
Макс. кол-во баллов за промежуточный контроль: 24 балла
3. Итоговый контроль (зачет) 1 Теоретическая часть 10 баллов
2 Практическое задание 1 (Ветвления/ Циклы) 15 баллов
3 Практическое задание 2 (Одномерные массивы) 15 баллов
Макс. кол-во баллов за итоговый контроль: 40 баллов
Всего баллов за 1 семестр: 100 баллов
Лабораторные работы по дисциплине «Программирование» разделяются на два вида: лабораторные работы по алгоритмизации и лабораторные работы по программированию.
Выполнение лабораторной работы по алгоритмизации состоит из следующих этапов:
1. Постановка задачи: определение исходных данных и результатов решения задачи, их обозначение (если необходимо).
2. Построение математической модели (выбор метода решения задачи): определение условий и формул, с помощью которых из исходных данных могут быть получены те или иные результаты. Допускается устная или графическая интерпретация идеи решения, если задача не связана с непосредственными вычислениями. Возможно, что для получения результатов будут использоваться вспомогательные данные для хранения промежуточных результатов.
3. Разработка алгоритма решения задачи в виде блок-схемы: представление решения задачи в виде четкой последовательности действий и их запись с помощью определенных геометрических фигур (блоков). При этом допускается использование только ограниченного набора алгоритмических структур.
4. Тестирование алгоритма: проверка работы алгоритма на заранее подобранных наборах исходных данных (тестах), для которых известен результат либо его легко найти. Количество тестов зависит от структуры алгоритма. Для линейных алгоритмов достаточно 1-2 теста, для разветвляющегося алгоритма — не менее количества ветвей, чтобы проверить работу каждой ветви, для циклического — тесты должны быть подобраны так, чтобы прогнать цикл несколько раз, а также на случай, когда цикл может не выполниться ни разу.
Лабораторная работа по программированию предусматривает следующие этапы:
1. Алгоритмизация поставленной задачи.
2. Программирование задачи по разработанному алгоритму: запись разработанного алгоритма на языке программирования С++. Необходимо продумать, какие заголовочные файлы требуется подключить, сколько переменных и каких типов использовать. Действия и структуры необходимо записать с помощью соответствующих операторов языка.
3. Отладка, тестирование и прогон программы: поиск и исправление ошибок в программе и проверка работы программы на заранее подобранных тестах. Чаще всего в программе встречаются синтаксические ошибки, т. е. связаны они с нарушением грамматических правил языка. Необходимо внимательно проанализировать строки с ошибками, попробовать понять смысл ошибки (компилятор в этом помогает!), запомнить исправленные ошибки, чтобы больше их не делать. Если компиляция программы успешно пройдена, то можно тестировать программу. Здесь могут встретиться более
сложные для исправления ошибки — семантические. Связаны они с нарушением смысла, логики программы. Программа с такими ошибками может работать, но выдавать неправильные результаты. Поэтому здесь важно уметь подбирать хорошие разнообразные тесты для отслеживания таких ошибок. Если результат работы программы не совпадает с ожидаемым тестовым, то можно порекомендовать вставить выдачу промежуточных результатов в тех местах программного кода, где вероятнее всего возможно наличие ошибки, либо применить одно из средств отладки — пошаговое выполнение программы.
4. Защита программы является завершающим этапом выполнения лабораторной работы. В 2014/15 учебном году силами коллектива преподавателей кафедры информационных технологий Ф. В. Хандаровым и Э. С. Бадмаевой и студентов-выпускников направления «Прикладная информатика» Б. Г. Дашицыреновой и С. С. Нимаевой была сформирована база заданий и адаптирована под учебный процесс автоматизированная проверяющая система Ejudge. Данная система широко используется при проведении олимпиад по программированию. Переработанная система стала служить для проверки выполнения программ, предназначенных для решения задач по большинству изученных тем. До этого года последней инстанцией сдачи задания была демонстрация прогона программы преподавателю на заданных им тестах. С помощью автоматизированной проверяющей системы последний этап организуется следующим образом: программный код посылается на проверку и пытается быть скомпилированным на стороне сервера, то есть должен сформироваться исполняемый файл. Данный файл проверяется на наборе тестов, каждый из которых представляет собой пару входного и выходного файлов. Программа участника последовательно запускается на каждом из имеющихся входных данных и выдает свой выходной файл, который сравнивается с эталонным ответом, входящим в состав тестов. И если все тесты прошли успешно, то система выдает вердикт правильности (в виде OK). Во время выполнения программы система может обнаружить различные ошибки. В этом случае пользователь системы получит информацию о типе ошибки, которую необходимо понять и исправить, после чего надо послать код на проверку еще раз. Только получив одобрение от системы, можно подозвать преподавателя, чтобы ответить на его вопросы по программе и получить рейтинговый балл.
Апробация автоматизированной проверяющей системы показала необходимость ее дальнейшей доработки за счет добавления тем и расширения базы заданий, а также возможности ее использования для организации промежуточного и итогового контроля.
Литература
1. Филинов А. Н. Система автоматического тестирования Ejudge // Информатика и образование. — 2012. — № 9. — С. 63-64.
References
1. Filinov A. N. Sistema avtomaticheskogo testirovaniya Ejudge [The System for Automatic Testing Ejudge]. Informatika i ob-razovanie - Computer science and education. 2012. No. 9. Pp. 63-64.