О курсе - mipt-cs/course-site-python3 GitHub Wiki
Цель курса информатики
Цель дисциплины — научить студентов программировать на языке Python 3 на уровне, достаточном для использования ИКТ в курсе вычислительной математики, в исследовательской научной и в последующей профессиональной деятельности.
В нашем понимании информатика — это обучение программированию. Пользовательские и сисадминские навыки в данном курсе идут лесом.
Целевая аудитория
1-й курс ФМФХ (три учебных группы), 1-й курс ФАКИ направления САУ (две учебных группы) и 2-й курс ФБМФ (пять учебных групп). Кто это такие? Вчерашние школьники, которые не сдавали ЕГЭ по информатике, не учились программировать (или почти), не участвовали в олимпиадах по программированию. Часть из них знает язык Pascal, но расчитывать даже на это нельзя. Примерно половина студентов — девушки.
Мы не занимаемся обучением лучших на "отл++"! Задача — научить всех на "хор".
Из чего состоит курс
Лекции и лабораторные работы.
Домашних заданий как отдельной сущности в этом году не будет. Дома студенты доделывают последнюю лабу.
Лекции
На лекциях — теория, алгоритмы, примеры их реализации на доске. Лекции являются основой данного курса, костяком, их пропуск существенно усложняет выполнение лабораторных работ.
Лабораторные работы
Преподаватели! Помните, что вы — лабники, а не лекторы! Вы должны только пояснять то, что нужно для выполнения лабы и рассказывать какие-то фишки практики программирования. Если студенты просят вас много рассказывать того, что было на лекции, отправляйте их "в баню" — т.е. на лекцию (или пусть смотрят видеозаписи лекций, ссылки на сайте).
Методика преподавания лабораторных работ
Программированию безусловно учатся на практике. Однако, существует две методики:
- Задачный подход
- Методика опирается на нарешивание простых задач, которые проверяются на входных и выходных данных автоматически или полуавтоматически. Главное — правильный ответ, качество программного кода вторично.
- Плюсы подхода: ученик не боится писать программы, хорошо "набивает руку" на решении задач и умеет "с закрытыми глазами" написать любой известный ему алгоритм.
- Минусы подхода: ученик не умеет работать в команде, порождает трудно читаемый и трудно поддерживаемый код, не умеет спроектировать относительно большой программный продукт.
- Проектный подход
- Методика опирается на создание проекта, который созидается продолжительное время (несколько недель), развивается от версии к версии, отлаживается и тестируется под руководством опытного тьютора. Тьютор подходит к ученику многократно, вычитывая код, объясняя как надо было сделать. При этом программа может не работать или работать не всегда правильно. Самое важное — программа должна быть качественно спроектирована и красиво написана.
- Плюсы подхода: ученик обучается хорошему стилю программирования, понимает что такое Coding Style, система контроля версий, модульное тестирование, рефакторинг.
- Минусы подхода: ученик пишет красивый код, но очень медленно и неуверенно; не умеет быстро добиваться правильного решения задач, не имеет практики в написании простых алгоритмов.
Эти две методики практического обучения у нас комбинируются: лабораторные работы делятся на два вида (контесты и практика) и чередуются создания баланса.
Система оценки
Если студент зудит "что сделать, чтобы получить оценку", значит это лукавый и ленивый студент.
Контесты и контрольные работы дают базовую оценку, от которой мы отталкиваемся на устном зачёте.
Практика на лабах является не оцениваемой, но много трубить об этом студентам не нужно.