search
main
0

Годен! Адаптация вузовского курса информатики для выполнения практических занятий в Linux

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

До университета вообще ни разу не работал в системах, отличных от MS DOS и Windows. На первом курсе пошел на факультатив по языку программирования LISP. Преподавателем был сотрудник Института систем информатики Сибирского отделения РАН, который создал всем аккаунты на своем рабочем компьютере (там был установлен Debian, дистрибутив Potato). Как сейчас помню листочек блокнота с выписанными командами ls, ps, kill и чем-то еще таким.

Впечатление было, конечно, еще то: как будто пытаешься объясниться на иностранном языке, которым не владеешь. Впрочем, это ощущение быстро прошло. Затем как-то так получилось, что я перевез свою почту на этот сервер и начал читать ее программой Pine, потом перевез ICQ (сначала использовал lICQ, затем zICQ, centerICQ и сейчас centerIM). Было очень удобно, что почта и «аська» жили независимо от моего физического местонахождения: я просто подключался по SSH к серверу и работал.

Где-то в это время уже было несколько машин, на которых я получил права администратора. Затем попробовал использовать Linux на своем десктопе. Понравилось! Сейчас с одинаковой частотой использую две системы: Debian Lenny дома и лицензионный Windows XP на рабочем ноутбуке (от корпоративных стандартов никуда не денешься).

Курс программирования в вузе состоит из лекций, семинаров и практики. На лекциях студентам дают общие вещи, касающиеся языков программирования и алгоритмов, без привязки к конкретным компиляторам и операционным системам. На семинарах (в обычных аудиториях, без компьютеров) они изучают язык C и решают задачи по программированию и разработке алгоритмов. Практика в компьютерном классе включает 15 семестровых заданий. В конце семестра студенты сдают зачет и экзамен.

От семинаров и практических занятий требуется, чтобы студенты по окончании курса знали синтаксис C и могли самостоятельно писать код, например реализовывать вычислительные методы в курсе вычислительной практики. У меня есть свой набор задач, который сформировался за несколько лет преподавания. Ознакомиться с ним, а также с информацией для студентов можно на моем сайте http://7113.fenster.name.

Раньше на первых практических занятиях я показывал основы работы в Microsoft Visual Studio, и дальше студенты пользовались этим огромным монстром, используя от силы 5 процентов его возможностей. С моей точки зрения, учить писать простые (максимум 100-200 строк) программы с использованием этой технологии – все равно что стрелять из пушки по воробьям. Куча времени уходит только на обучение работе в самой среде: как создать проект и как запустить программу. Для начинающих это все совершенно не нужно и только отвлекает от главного – написания кода. В этом году мне захотелось перейти на более естественный и легкий инструментарий, поэтому среда Linux для этого выглядела как нельзя более подходящей.

К сожалению, условий для такого рода изменений не было никаких, так как в терминальных классах нашего факультета везде установлена OS Windows XP без каких-либо исключений.

Но все оказалось не так страшно, как представлялось. Для организации доступа студентов к среде Linux нужно было найти сервер, выбрать ssh-клиент. Также перед началом обучения необходимо было определиться с набором базовых программ.

1. Выбор сервера. Сначала попробовал пойти официальным путем – зайти к администраторам и попросить аккаунты для студентов или хотя бы один на всю группу. Так как просьба оказалась беспрецедентной для мехмата, мне сказали, что будут вести переговоры с главным сисадмином и решать вопрос. В итоге админ «нарезал» для меня виртуальную машинку на базе OpenVZ в сети НГУ (доступна из университета, общежитий и местных локальных сетей), где я и завел аккаунты на всех студентов. Подозреваю, что если бы не личное знакомство с админом, то ничего не получилось бы.

2. SSH-клиент. В качестве него я выбрал PuTTY (домашняя страничка www.chiark.greenend.org.uk/~sgtatham/putty).

На мехмате НГУ Windows переставляют из образов чуть ли не каждую неделю, а PuTTY внести в список нужного для установки софта я официально на начало семестра не успел. В итоге придумал простой вариант: на своем сайте положил ссылку на экзешник PuTTY, лежащий в университетской сети. Это очень удобно, поскольку не требует инсталляции. Процесс работы следующий: студенты идут на сайт, кликают по ссылке, скачивают 400КБ экзешника, запускают, затем вводят адрес сервера, логин и пароль – все! Это быстрее, чем студию запустить.

3. Выбор программ. Подумав, решил остановиться на варианте bash + vim + make. Почему, скажем, не emacs? В основном потому, что сам использую vim и хочется учить тому, что сам знаешь достаточно хорошо. Решил не навешивать никуда никаких алиасов, а заставить писать команды полностью – так полезнее. Программы mc и mcedit тоже показал, но намного больше внимания уделил vim.

Код компилируется при помощи gcc. Некоторые студенты из особо продвинутых разобрались с отладчиком gdb.

4. Документация. Написал и выложил краткую инструкцию по командам на русском языке (http://7113.fenster.name/commands.pdf).

Адаптация студентов к незнакомой для них среде прошла проще, чем я ожидал, хотя до начала семестра с Linux никто из них не сталкивался (я специально это уточнил).

На первом занятии потратил 40 минут на объяснение нескольких базовых вещей: перемещение по каталогам, использование текстового редактора и применение команды make для компиляции программ. Добился, чтобы каждый из студентов написал, откомпилировал и запустил «Hello, world!». К моему удивлению, этого оказалось вполне достаточно, чтобы студенты начали работать самостоятельно.

Судя по выводу команды last, студенты активно работали и из дома (из общежитий). Очень приятно был удивлен, когда некоторые студенты начали сдавать задачи на своих личных ноутбуках, на которых был установлен Linux. Здесь, конечно, сыграло свою роль наличие рядом, в пределах кампуса, зеркала Debian (http://debian.nsu.ru).

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

По опыту работы в этом семестре можно отметить, что исчезли забытые дома флэшки с программами (ведь сейчас все делается на сервере), а также ушли в прошлое проблемы с созданием, сохранением и открытием проектов в Visual Studio. Также появилась возможность некоторые задачи заменить более приближенными к реальности: например, вместо какой-нибудь стандартной задачи на работу с файлами и строками попросить разобрать формат файла /etc/passwd. С другой стороны, работы немного прибавилось: необходимо было написать инструкции, настроить виртуальный сервер и завести аккаунты.

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

По окончании семестра можно с уверенностью сказать: эксперимент прошел удачно. Собственно говоря, в этом нет ничего удивительного, так как Linux давно пригоден для работы.

C моей точки зрения, основная проблема для такого рода переходов, как и десять лет назад, связана с тем, что нормально разобраться с системой можно, лишь имея под рукой некоего «гуру». Вариант – нужно иметь достаточное количество терпения для чтения документации, причем чаще всего на английском языке. Если вам не в тягость тратить часы на исследование разнообразных руководств, вы сделаете все, что вам нужно. Но обычный пользователь хочет систему, работающую «из коробки», и хотя каждый новый выпуск того же Debian’а в этом смысле все лучше и лучше, до идеала, мне кажется, еще далеко.

В принципе роль того самого «гуру» могут эффективно выполнять сетевые сообщества. Например, перед самым началом эксперимента я поинтересовался мнением коллег на местном линукс-форуме (www.nsu.ru/phpBB/viewforum.php?f=9) и получил несколько достаточно дельных советов.

Не надо бояться экспериментировать. Многие вещи, которые в вузах традиционно делаются в других ОС, можно делать при помощи Linux. А если разницы в качестве не видно, то какой смысл тратить деньги, покупая платные программы?

Оценить:
Читайте также
Комментарии

Реклама на сайте