НОВЫЕ ТЕХНОЛОГИИ И ФУНДАМЕНТАЛЬНОЕ ОБРАЗОВАНИЕ
Биллиг Владимир Арнольдович (Vladimir.Billig@tversu.ru)
к.т.н., профессор
Тверской государственный университет, г. Тверь
АннотацияДва фактора подвигли на написание этого доклада – окончание записи видеокурса «Основы объектного программирования на C# 3.0» на сайте intuit.ru и чтение курса «Алгоритмы и алгоритмические языки» для студентов первого курса специальности ПОВТ. Доклад посвящен обсуждению проблем, возникающих при обучении студентов началам программирования.
Задачей современного обучения в IT-области является обеспечение технологической подготовки, под которой понимается процесс получения студентами знаний и навыков в области создания программного продукта в условия разработки, соответствующих уровню СММI не ниже третьего. В рамках данного доклада обсуждаются практические рекомендации развития навыков промышленной верификации программного обеспечения [1]. Существенное влияние на формирование предлагаемой точки зрения оказало тридцатипятилетнее сотрудничество кафедры «Кибернетика» МИФИ с предприятиями авиационной промышленности в области разработки бортового программного обеспечения и, в частности, опыт применения DO-178B [2].
Как устроен курс «Основы ОП на C#»
Написанный и прочитанный курс ориентирован на тех, кто уже знаком с началами программирования. На лекциях для первого курса он излагается в адаптированном варианте, хотя и рекомендуется для самостоятельного изучения. Он содержит две части: «Ядро программирования» и «Программирование в классах».
В ядро входят 10 глав, посвященных типам и классам данных, переменным и объектам, основным операторам языка, процедурам и функциям – методам класса, основным структурам данных – строкам и массивам, рекурсивным вычислениям и рекурсивным, динамическим типам данных. Вторая часть курса содержит 10 глав. В них рассматриваются классы как ссылочные типы данных, и все частные случаи классов – структуры, интерфейсы, перечисления и шкалы, функциональные типы данных – делегаты и события. Подробно рассматриваются отношения между классами – клиенты и поставщики, родители и потомки, классы с параметрами и родовые порождения. Одна из глав посвящена декларативным элементам – атрибутам и тегам, роли документируемого программного текста. В последней главе этой части обсуждаются вопросы построения корректных и устойчивых программных систем, стилю промышленного программирования.
Апрельские тезисы
Приведу несколько возможно спорных постулатов, применяемых при обучении.
Тезис 1: Знания должны быть фундаментальными, а язык программирования и среда разработки – современными.
Возможно, одна из причин отсутствия фундаментального, всеми признанного учебника по программированию состоит в несоответствии языка и содержания. Не видно, как можно решить эту проблему. Трехтомник Дональда Кнута «Искусство программирования» хорош, но только не в той части, которая связана с описанием MIX машины и программирования на ней. Книга Дэвида Гриса «Наука программирования» не соответствует современному языку и средам разработки. Попытки других авторов также пока безуспешны.
Тезис 2: Что важнее: учебник или задачник?
На начальных этапах обучения роль задачника крайне важна. На первом курсе освоения ядра программирования, изучение алгоритмов невозможно и нецелесообразно без решения задач и доведения алгоритма до работающей программы. Хорошо, когда эта программа создана, отлажена в современной среде разработке и соответствует правилам промышленного стиля.
В своем курсе я в конце каждой главы первой части привожу задачи и приемы их решения. Кажется, что задача создания задачника легче решается, чем создание учебника, но признанного задачника по программированию также пока нет.
Тезис 3: Должны ли быть теоремы?
Существует точка зрения, что курс без теорем – это не курс. В моем курсе приводится лишь одна теорема в разделе о рекурсии и разделении задачи на подзадачи. Формированию понятий, связанных с доказательны программированием, уделяется достаточно много внимания, но формальные доказательства корректности программ менее значимы в рамках курса, чем методы тестирования.
Тезис 4: Важен ли стиль программирования
Прививать стиль программирования, близкий к промышленным разработкам следует с создания первых программ. Ясность написания кода, документируемые комментарии, осмысленные имена, построение системы тестов, ответственность за качество создаваемой программы – все это важно для начального этапа обучения.
Литература
- В. Биллиг «Основы программирования на C#», www.intuit.ru
- В. Биллиг «Алгоритмы и задачи на C#» www.microsoft.com/Rus/Msdnaa/Curricula/
- В. Биллиг «Основы объектного программирования на C# 3.0. Учебник и задачник» www.microsoft.com/Rus/Msdnaa/Curricula/
- В. Биллиг Видео материалы мастер-класса www.intuit.ru/video/16
|