Проект спецкурса по Python3 для факультета Психологии МГУ
Цель: выявление и подготовка студентов для научно-исследовательской работы.
Задачи первого семестра:
- Обучение основам программирования и составления алгоритмов
 - Обучение основам ЯП Python3
 - Закладка базы для решения прикладных задач
 
Методика:
- Первая половина курса — азы программирования и сильно урезанное подмножество Python
 - Вторая половина курса — повторение с объяснениями и дополнениями
 - Ссылаться на лекциях на документацию, давать её в Д/З
 - Изрядное число простых упражнений по каждой теме
 - Некоторое количество домашних заданий (возможно, в конце) 
Часть заданий — с использованием EJudge (как зарегистрироваться)
 
Материалы
Базовый учебник Think Python: How to Think Like a Computer Scientist (возможно, изучим оттуда не всё)
Учебник для начинающих Введение в программирование на Python
- Спецкурсы ВМК:
 
Введение в ЯП Python3
(по мере составления планов лекций / домашних заданий план на этой странице будет превращаться в ссылки на страницы лекций)
- … 
- Составление алгоритмов на условные операторы в цикле и вложенные циклы
 Много упражнений
 - Методы объектов 
- Метод как функция: 
- Уже существующая для данного объекта
 - Заведомо применимая к данному объекту
 - Имеющая доступ к внутренностям объекта
 
 - Инкапсуляция
 Примеры числовых и строковых методов (не все!)
dir(объект)
 - Метод как функция: 
 - Кортежи 
- Понятие индексируемой последовательности
 - Операции над последовательностями
 - Индексирование (в т. ч. с отрицательным индексом)
 - Секционирование
 операция in
- операции поэлементного сравнения
 
 - Списки 
- Понятие модифицируемой последовательности, списки
 - append(), pop(), insert(), del
 - Замена элемента списка
 - Если у списка несколько имён, он всё равно один, и замена «видна» отовсюду
 Уникальный идентификатор объекта id(объект), сравнение is
- удаление/вставка/замена секций
 Операции изменения (вида имя операция= выражение, отличие в работе += для списков и кортежей
- Алгоритмы, использующие модифицированные последовательности
 … TODO а какие?
 - Строки 
- Задание, операции над
 Особенности индексирования и in; секционирование
форматирование (в первую очередь f"", но и .format(); не всё)
- Некоторые методы (не все)
 
 
Программирование на Python3
- Открытая разработка и сообщество, свободное лицензирование
 Цикл for
- Проход последовательности циклом
 использование range()
использование enumerate()
- Алгебра логики, пустые объекты Python
 - Модули 
- Стандартные модули (некоторые)
 - Написание своих модулей
 PyPI, установка модулей с помощью pip
 - Словари 
- ...
 
 - Работа с файлами 
- ...
 
 
...
TODO
- циклические конструкторы
 - запуск программы из командной строки и перенаправление В/В
 - распаковка последовательности 
- в =
 - в функции
 в for (если это последовательность последовательностей)
 - стоимость append(), pop(), insert() и del
 ??? функции-генераторы (с yield и next(генератор)), это просто!
- примерно так: 
1 >>> def gen(): 2 ... yield 10 3 ... yield 20 4 ... print("QQ") 5 ... yield 30 6 ... 7 >>> gen 8 <function gen at 0x7fca87231488> 9 >>> generator = gen() 10 >>> generator 11 <generator object gen at 0x7fca8722cd00> 12 >>> next(generator) 13 10 14 >>> next(generator) 15 20 16 >>> next(generator) 17 QQ 18 30 19 >>> next(generator) 20 Traceback (most recent call last): 21 File "<stdin>", line 1, in <module> 22 StopIteration
 
- примерно так: 
 
