# Вопросы к зачету по предмету "Введение в программирование с использованием языка Python"
1. Введение в git
- Как работать с системой контроля версий
- Основные команды
- Текст коммитов
- Выдача прав на проект
- *Решение конфликтов
- *Бранчинг
2. Введение в Python
- Установка
- Запуск программы из консоли
- Базовые элементы синтаксиса
- Переменные
- Циклы
- Ветвления
- Основные структуры
- list
- dict
- tuple
- Настройка зависимостей
- Установка библиотек с `pip`
- *Настройка виртуального окружения
- Работа с jupyter notebook
3. Построение кода
- Функциональный подход
- Область видимости переменных: `global`
- Передача переменных в функцию
- Значение по умолчанию
- Синтаксис функции
- *`*args/**kwargs`
- Классовый подход
- Что такое класс
- Синтаксис класса
- Основной метод класса `__init__`
- *Магические методы
- *Статичные методы класса
- Метод класса типа `method(self, ...):`
- Разбиение функционала
- Насследование
4. Построение проекта
- Документация кода
- docstring
- shebang comments `# comment`
- Документация проекта
- UML диаграммы
- `README.md`
- `requirements.txt`
- Разбиение кода на модули
- Один класс -- одна ответственность
- Распределение кода по директориям
- *MVC
- Распределение ролей в проекте
Список может дополняться, но это не факт. Отмеченные звездочкой вопросы не являются обязательными, но показывают, что вы хоть что-то усвоили больше нужного.
В качестве задачи возможно получить что-то на подобии:
- Как реализовать определенный проект, какие классы понадобяться, UML-диаграмма
- Описать документацию к чему-либо
- Моделирование физического процесса
### План действий
```graphviz
digraph hierarchy {
nodesep=1.0 // increases the separation between nodes
node [color=Blue,fontname=Courier,shape=box] //All nodes will this shape and colour
edge [color=Blue, style=bold] //All the lines look like this
I1 [shape=box,color=blue,label="Студент"];
I2 [shape=box,color=blue,label="Работа в\nсеместре\n0.45"];
I6 [shape=box,color=blue,label="Посещение\n0.1"];
I3 [shape=box,color=blue,label="Проект\n0.5"];
I4 [shape=box,color=blue,label="Доп. зачет\n-1..+1"];
I5 [shape=box,color=blue,label="Зачет"];
I1->{I2 I3 I6}
I2->I5 [color=darkgreen,style=dashed]
I3->I5 [color=darkgreen,style=dashed]
I2->I4 [color=red,style=dashed]
I3->I4 [color=red,style=dashed]
I4->I5 [color=darkgreen,style=dashed]
I6->I5
{rank=same; I2 I3 I6}
}
```