Педагогические  науки/ 2.Проблемы подготовки специалистов

Джарасова Г.С., Рахимбаева Б.А.

Павлодарский государственный университет им.С.Торайгырова

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

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

Вопросы подготовки будущих специалистов в Республике Казахстан в условиях информатизации образования освещены в работах казахстанских ученых Т. О. Балыкбаева, Е. Ы. Бидайбекова, М. А. Бектемесова, Ж. А. Караева, С. К. Кариева, С. М. Кенесбаева, Е. У. Медеуова, К. С. Мусина, Ж. К. Нурбековой, С. Е. Чакликовой и других.

Авторами разработан элективный курс «Логическая культура программиста» для студентов 1 курса специальностей «Информатика» и  «Информационные системы» (бакалавриат, магистратура). Мы под формированием логической культуры программистов предполагаем обучение студента основным методам программирования путем углубления знаний по курсам ІТ-дисциплин, раскрывая их содержательную часть относительно логических методов, необходимых для дальнейшего применения в профессиональной сфере деятельности. Данный подход был изучен ранее и представлен в качестве кандидатской диссертации [1].

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

Программист должен не только в совершенстве владеть языками программирования, регулярно заниматься программированием в практической деятельности, постоянно повышать свою квалификацию, пополняя багаж знаний по уже известным ему языкам программирования и изучая новые, он также должен тщательно и логически правильно выстраивать алгоритм решения данной задачи, при этом выполнять свою работу быстро, эффективно и безошибочно. Ошибки, допущенные в готовых программных продуктах, ведут к потере времени (найти и устранить ошибки), потере денег, вложенных в данный программный проект (зарплата программиста, невозможность реализовать данный продукт на рынке  IT-технологий, если же он реализован, то время на его адаптацию и устранение ошибок на конкретном предприятии и т.д.). Программист несет ответственность за программный продукт, созданный им.

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

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

Для решения данной проблемы мы предлагаем использовать методику опережающего обучения для повышения качества подготовки будущих IT-специалистов. Согласно принципа «опережающего обучения», вся эффективная организация обучения направлена на активизацию, развитие мыслительной деятельности обучаемого, формирование способности самостоятельно добывать знания в сотрудничестве с другими обучаемыми, т. е. саморазвиваться. Как подчеркивает Л.В. Занков: "неправомерное облегчение учебного материала, неоправданно медленный темп его изучения, многократные однообразные повторения, по-видимому, не могут способствовать интенсивному развитию обучаемых." Это противоречит модным – как правило, идущим с Запада – утверждениям, что учить нужно только тому, чему хочет сам обучаемый, и так, как он этого хочет... В основу педагогической системы Л.В. Занкова, заложены следующие принципы [2]:

- принцип обучения на высоком уровне трудности. Реализация этого принципа предполагает соблюдение меры трудности, преодоление препятствий, осмысление взаимосвязи и систематизацию изучаемых явлений;

- принцип ведущей роли теоретических знаний, согласно которому отработка понятий, отношений, связей внутри учебного предмета и между предметами не менее важна, чем отработка навыков;

- принцип осознания обучаемыми собственного учения. Этот принцип обучения направлен на развитие рефлексии, на осознание самого себя как субъекта учения. Содержание этого принципа может быть соотнесено с развитием личностной рефлексии, саморегуляции;

- принцип работы над развитием всех обучающихся. Согласно этому принципу, должны быть учтены индивидуальные особенности, но обучение должно развивать всех. Отличительными чертами системы Л. В. Занкова являются: направленность на высокое общее развитие обучающихся (это стержневая характеристика системы); высокий уровень трудности, на котором ведется обучение; быстрый темп прохождения учебного материала, резкое повышение удельного веса теоретических знаний.

Проблемы опережающего обучения в подготовке будущих информатиков были исследованы Нурбековой Ж.К. [3]

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

Нами в течение последних семи лет проводятся анкетирование выпускников специальностей «Информатика» и «Информационные системы», занимающихся профессиональным программированием. Анализ результатов анкетирования за 2009-2012 годы показывает, что для подготовки будущих программистов является важным обучение использованию модульного подхода и рекурсивного метода решения задач. Для успешного освоения студентами модульных методов (объектно-ориентированный и «сверху вниз») программирования важную роль играет глубокое понимание их математических оснований. С целью выявления математического ядра модульного метода программирования нами был осуществлен тезаурусный подход к изучаемым дисциплинам в вузе будущими программистами и сделан терминологический анализ в сопоставлении с логико-алгебраическими понятиями терминов, применяемых в модульном методе. На основе такого анализа было выработано содержание нашей элективной дисциплины.

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

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

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

 

Литература:

1. Джарасова Г.С. Методические основы формирования логической культуры будущих информатиков: дисс. …канд. пед.наук.- Алматы, 2010

2. http://edugalaxy.intel.ru/index.php?automodule=blog&blogid=244&&req= printentry&eid=85

3. Нурбекова Ж.К. Фундаментальное и опережающее обучение программированию студентов по специальности «Информатика»: дисс. …докт. пед.наук.- Алматы, 2007

4. http://www.ctc.msiu.ru/materials/Book/ (Роганов Е.А. Основы информатики и программирования: Учебное пособие)