Skip to content

Commit

Permalink
2024-Draft
Browse files Browse the repository at this point in the history
  • Loading branch information
Mikhail Zelenyy committed Sep 12, 2024
1 parent 28ac04c commit 2cecaa5
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 0 deletions.
1 change: 1 addition & 0 deletions source/authors.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* Татьяна Абрамова
* Анна Зелёная
* Александр Нозик
* Тимур Хамитов

## Контакты

Expand Down
121 changes: 121 additions & 0 deletions source/cards/cards.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Программа курса

## Идеология и инструменты разработки ПО

1. Инструменты разработки на Python.
2. Создание виртуальных окружений. Модули `venv`, `virtualenv`. Виртуальные окружения conda-env.
3. Сборка пакета с `setuptools` и установка пакета в режиме для разработчика.
4. Тестирование ПО. Модули `unittest`, `pytest`. Системы запуска и контроля тестов.
5. Создание документации пакета с помощью `sphinx`.
6. CI/CD. Github Actions.
7. Интерактивные среды.
8. Распространения приложений с помощью `setuptools`.

## Устройство Python

1. Трансляторы Python. Байт-код Python и модуль `dis`.
2. Синтаксис Python. Области видимости переменных.
3. ООП и объектная модель Python.
1. Семантика Python.
2. Использование модуля `inspect` для анализа объектов.
4. Система импорта Python. Импорт модулей и пакетов. Использование модуля `importlib`.
5. Работа с памятью в Python. Доступ к сборщику мусора через модуль `gc`.


## ООП в Python. Структурная типизация.

1. ООП. Создание интерфейсов и абстрактных классов с модулем `abc`.
2. Протоколы и структурная типизация с модулем `typing`. Статическая проверка типов с `mypy`.
3. Контекстные менеджеры.
4. Создание перечислений с модулем `enum`.
5. Датаклассы в Python.
6. Дескрипторы Python.

## Функциональное программирование в Python. Коллекции и дата-классы

1. Функциональное программирование в Python.
2. Итераторы и коллекции. Модули `itertools` и `collection`.
3. Функциональное программирование c модулем `functools`.
4. Декораторы функций и классов.
5. Создание дата-классов с помощью декоратора `@dataclass`.
6. Генерация и обработка исключений.

## Разработка приложений и библиотек. Создание консольных приложений. Инструменты стандартной библиотеки.

1. Логирование с модулем `logging`
2. Генерация скрипта для консольной оболочки ОС с помощью `setuptools`
3. Парсинг аргументов командной строки с модулем `argparse`
4. Создание консольного приложения с модулем `cmd`.
5. Время и дата. Модули datetime, `time`
6. Работа с операционной системой через модули `os`, `sys` и `shutil`. Запуск дочерних процессов с модулем subprocess

## Работа с файловой системой

1. Работа с путями с помощью модуля pathlib
2. Модуль io
3. Использование модуля tempfile для создания временных файлов
4. Системы конфигурация HYDRA и OmegaConf
5. Модуль appdirs

## Форматы данных и файлов. Сериализация/Дессераилизацияю

### Текстовые данные и файлы.

1. Строки: модули string и template, f-strings.
2. Форматирование таблиц с модулем tabulate
3. Формат CSV и модуль csv
4. Формат JSON, валидация с помощью JSOM Schema и модули json, jsonschema, json-schema-for-humans
5. Формат XML и модули xml, lxml
6. YAML
7. Работа с архивами с модулями zipfile и tarfile
8. Последовательная обработка нескольких файлов с помощью модуля fileinput
9. Numpy IO: работа с текстовыми файлами
10. Шаблонизатор jinja2
11. Чтение данных с помошью Pandas

### Бинарные данные и файлы.

1. Типа данных bytes
2. Чтение Си-структур с помощью модуля struct
3. Numpy nd-arrays
4. Numpy IO: файлы форматов NPY и NPZ
5. Парсинг выражений с модулем numexp
6. Консервация объектов. Модули pickle и shelve
7. Формат Google Protobuff
8. Memory mapping и модуль mmap
9. Common Data Model
10. Чтение файлов CERN ROOT с помощью модуля uproot
11. Профилировка с модулем profile

## Многопоточное, асинхронное и параллельное исполнение. GIL

1. Вытесняющая многозадачность и модуль threading
2. Кооперативная многозадачность и модуль asyncio
3. Параллельное исполнение с модулем multyprocessing

## Сетевое программирование и WEB

1. Сокеты. UPD и TCP. Модули socket и socketserver
2. HTTP. Модули http и request
3. HTML. GET и POST запросы. .
4. Асинхронный сервер с asyncio
5. Построение графиков с plotly и bokeh
6. WEB-фреймворки: Tornado, Flask, Django, aiohttp, FastAPI

## Graphical User Interface

1. Создание графических приложений с tkinter и PySide
2. Events, signal and slots. Observable property.
3. Models and Views. Файловый менеджер как пример MVC.
4. Matplotlib и его интеграция с GUI
5. Конфигурация GUI приложений

## Базы данныx

1. СУБД и ACID. DBM. DB API v2.0. SQLite. ORM, CRUD и SQLAlchemy

## Взаимодействие с нативным кодом и оборудованием

1. Взаимодействие с нативным кодом и оборудованием: Python.h, ctypes, cffi, Cython, Сборка нативных артефактов в setuptools
2. Взаимодействие с нативным кодом: Numba, SWIG, Boost.Python, Embedded Python. PyROOT и G4Py как примеры.
3. Работа с оборудованием и драйверами. Подключение Си-драйвера через ctypes. HID, FTD32, USB. Модули pyusb, pyserial, pyftdi, pylibftdi. Arduino.

0 comments on commit 2cecaa5

Please sign in to comment.