Пояснительная записка Курс разработан для студентов 1 курса фртк мфти, обучающихся в лаборатории Intel




страница1/4
Дата28.08.2016
Размер0.52 Mb.
  1   2   3   4

Годовой образовательный курс лаборатории Intel
«Введение в промышленное программирование на языках С, С++
и структуры данных»
для студентов 1 курса ФРТК, 3 ч. лекций + 4 ч. семинаров в неделю


И. Р. Дединский, ст. преп. каф. информатики МФТИ

Пояснительная записка


Курс разработан для студентов 1 курса ФРТК МФТИ, обучающихся в лаборатории Intel1.

Цель курса – научить студентов современным методам программирования и разработки программных систем на языках С и С++, привить навыки надежного, промышленного программирования, работы в команде, подготовить их для участия в тематических проектах второго курса ILab.

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

Первая (5-6 занятий) – быстрое практическое введение в С через разбор и решение большого количества небольших задач, заканчивающееся потоковой контрольной работой с автоматической проверкой.

Вторая (11-12 занятий) – введение в структуры данных и алгоритмы, практическая часть которой содержит меньшее число задач, но большего объема.

Задачи второй части подобраны по большей части таким образом, что в конце курса каждый студент самостоятельно реализует примитивную модель вычислительной системы (стековой виртуальной машины), инструментальные средства низкоуровневой разработки для него (ассемблер и дизассемблер), а также примитивный высокоуровневый транслятор (проект «нано-GCC»), совместимый с трансляторами других студентов на уровне AST. Это дает возможность использовать кросс-компиляцию программ одного студента для виртуальной машины другого (ngcc program.alice -m bob) затем выполнение на соответствующей виртуальной машине (vm_bob program.bob), а также перевод в исходный текст в формате языка другого студента (ngcc program.alice --translate bob, ngcc program.bob --translate alice).

Третья часть курса (6-10 занятий) представляет собой введение в язык С++ в терминах различий С и С++, методом рефакторинга ряда решений на языке С, рассматривавшихся в осеннем семестре.

Четвертая часть (6-10 занятий) посвящена технологии применения С++ (ООД, ООП, компонентное программирование) в многомодульном проекте, использующем программный код группы разработчиков в виде динамически подключаемых библиотек.

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



Сложность задач курса легко регулируется их функциональным наполнением (простейший вариант – транслятор формул, используемый для построения графиков элементарных функций).

Для обучения используются следующие принципы:



  1. Во главу угла ставится задача, ее решение и, главное, путь от задачи к решению. Во всякой задаче подчеркивается разделение на идею решения и технологию реализации.

  2. Самостоятельность решения является ключевым условием.

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

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

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

  1. Зачем это надо,

  2. Что это такое,

  3. На чем основано и с чем связано,

  4. Как это применять,

  5. Где это можно и где нель­зя использовать,

  6. Чем придется пожертвовать,

  7. Что будет, если этого не делать,

  8. Какие в этом «подводные камни» (чего опасаться).

Лекционная часть занятий не ставит перед собой цели повторить или механически расширить ни курс лекций по информатике для 1-2 курсов МФТИ, ни классические учебники по языку Си (Б. Кернигана и Д. Ритчи и другие). Наоборот, в лекционной части делается акцент на границах применимости знаний, методик и примеров их практического применения, особенно тех, которые отсутствуют в академической литературе, с учетом принципов и реалий промышленного программирования. Теоретические и практические сведения тесно переплетаются с советами по их использованию и анализом побочных эффектов, даются в тесной связи с примерами их практического удачного и неудачного применения. Это существенно отличает данный курс от множества других. В начале курса этот акцент наиболее выражен, так как формирует необходимую систему ценностей, в дальнейшем активно использующуюся. По мере выработки этой системы способ изложения материала становится более традиционным, хотя все равно остается его направленность на решения конкретных задач, но со значительным уровнем обязательного обобщения и рефлексии после изучения темы, что не позволяет курсу превратиться в натаскивание на типовые рабочие приемы кодирования. Во втором семестре значительное время уделяется разбору конкретных примеров объектно-ориентированного дизайна разного качества проектирования, что занимает значительное учебное время.

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

Сдача работ студентами осуществляется через помещение его на серверный репозиторий курса. Основная форма проверки кода менторами – детальный code review с разбором типичных случаев на групповых занятиях. Со второй части курса вводится peer review.

Результатом согласованной работы лектора, менторов и студентов должно стать не только изучение теоретического материала и отработка его на практических задачах, но и формирование современной методологии разработки программ и профессиональной системы ценностей у студентов, что позволит им успешно участвовать в тематических курсах второго года обучения в Лаборатории.
  1   2   3   4


База данных защищена авторским правом ©infoeto.ru 2016
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница