О курсе - mipt-cs/course-site-python3 GitHub Wiki

Цель курса информатики

Цель дисциплины — научить студентов программировать на языке Python 3 на уровне, достаточном для использования ИКТ в курсе вычислительной математики, в исследовательской научной и в последующей профессиональной деятельности.

В нашем понимании информатика — это обучение программированию. Пользовательские и сисадминские навыки в данном курсе идут лесом.

Целевая аудитория

1-й курс ФМФХ (три учебных группы), 1-й курс ФАКИ направления САУ (две учебных группы) и 2-й курс ФБМФ (пять учебных групп). Кто это такие? Вчерашние школьники, которые не сдавали ЕГЭ по информатике, не учились программировать (или почти), не участвовали в олимпиадах по программированию. Часть из них знает язык Pascal, но расчитывать даже на это нельзя. Примерно половина студентов — девушки.

Мы не занимаемся обучением лучших на "отл++"! Задача — научить всех на "хор".

Из чего состоит курс

Лекции и лабораторные работы.

Домашних заданий как отдельной сущности в этом году не будет. Дома студенты доделывают последнюю лабу.

Лекции

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

Лабораторные работы

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

Методика преподавания лабораторных работ

Программированию безусловно учатся на практике. Однако, существует две методики:

  1. Задачный подход
  • Методика опирается на нарешивание простых задач, которые проверяются на входных и выходных данных автоматически или полуавтоматически. Главное — правильный ответ, качество программного кода вторично.
  • Плюсы подхода: ученик не боится писать программы, хорошо "набивает руку" на решении задач и умеет "с закрытыми глазами" написать любой известный ему алгоритм.
  • Минусы подхода: ученик не умеет работать в команде, порождает трудно читаемый и трудно поддерживаемый код, не умеет спроектировать относительно большой программный продукт.
  1. Проектный подход
  • Методика опирается на создание проекта, который созидается продолжительное время (несколько недель), развивается от версии к версии, отлаживается и тестируется под руководством опытного тьютора. Тьютор подходит к ученику многократно, вычитывая код, объясняя как надо было сделать. При этом программа может не работать или работать не всегда правильно. Самое важное — программа должна быть качественно спроектирована и красиво написана.
  • Плюсы подхода: ученик обучается хорошему стилю программирования, понимает что такое Coding Style, система контроля версий, модульное тестирование, рефакторинг.
  • Минусы подхода: ученик пишет красивый код, но очень медленно и неуверенно; не умеет быстро добиваться правильного решения задач, не имеет практики в написании простых алгоритмов.

Эти две методики практического обучения у нас комбинируются: лабораторные работы делятся на два вида (контесты и практика) и чередуются создания баланса.

Система оценки

Если студент зудит "что сделать, чтобы получить оценку", значит это лукавый и ленивый студент.

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

Практика на лабах является не оцениваемой, но много трубить об этом студентам не нужно.