Основы алгоритмизации и программирования¶
Тема 1. Основные принципы алгоритмизации и программирования¶
- Лекция 1. Основные понятия алгоритмизации
Понятие алгоритма. Свойства алгоритма. Формы записи алгоритмов. Общие принципы построения алгоритмов. Определение сложности работы алгоритмов. - Лекция 2. Основные алгоритмические конструкции
Линейные, разветвляющиеся, циклические алгоритмы. Программы для графического отображения алгоритмов. -
Лекции 3 и 4. Логические основы алгоритмизации (4 часа)
Основы алгебры логики. Логические операции с высказываниями: конъюнкция, дизъюнкция, инверсия. Законы логических операций. Таблицы истинности. -
Лабораторная работа 1
Разработка алгоритмов для конкретных задач. - Лабораторная работа 2
Использование программ для графического отображения алгоритмов. - Лабораторная работа 3
Определение сложности работы алгоритмов.
Тема 2. Языки и методы программирования¶
- Лекция 1. Языки и системы программирования
Эволюция и классификация языков программирования. Компиляция и интерпретация. Понятие системы программирования. Исходный, объектный и загрузочный модули. IDE (Visual Studio Code). - Лекция 2. Методы программирования и SDLC
Структурный, модульный, объектно-ориентированный методы. Общие принципы разработки ПО. Жизненный цикл программного обеспечения. Типы приложений.
Тема 3. Программирование на Python (Python Basics)¶
- Лекция 1. Синтаксис, переменные и типы данных
Лексика, отступы, идентификаторы, ключевые слова; простые типы (int,float,str,bool,None); операторы и приоритет; параллель Go — статическая типизация, фиксированные размеры целых. - Лекция 2. Управляющие конструкции и ввод-вывод
if/elif/else, тернарный,match;while,for+range;break/continue/else;input/print; в Go —ifс инициализацией,switch,forкак единственный цикл. - Лекция 3. Коллекции: списки, кортежи, словари, множества
Списки и генераторы списков, кортежи и распаковка, словари (get/setdefault/defaultdict/Counter), множества и математические операции; в Go — slices, maps, structs,map[T]struct{}как set. -
Лекция 4. Машинное представление: числа, кодировки, байты
Системы счисления, дополнительный код, IEEE 754; ASCII/Unicode/UTF-8/UTF-16;bytes/bytearray/memoryviewв Python;string/[]byte/runeв Go. -
Лабораторная работа 1
Работа в среде программирования. Реализация построенных алгоритмов. - Лабораторная работа 2 (4 часа)
Составление программ линейной структуры. Составление программ разветвляющейся структуры. - Лабораторная работа 3 (4 часа)
Составление программ циклической структуры. Обработка одномерных и двумерных массивов. - Лабораторная работа 4
Работа со строковыми переменными. Работа с данными типа множество.
Тема 4. Подпрограммы и работа с файлами¶
- Лекция 1. Функции и область видимости
Подпрограммы;def; аргументы (позиционные, именованные,*args/**kwargs, default); LEGB;global/nonlocal;lambda, замыкания; передача по ссылке/значению; в Go — multiple return, variadic, functional options. - Лекция 2. Строки и рекурсия
Методы строк, f-strings, кодировки; рекурсия (факториал, Фибоначчи, бинарный поиск, обход дерева), мемоизация, ограничения стека. - Лекция 3. Работа с файлами и форматами данных
Открытие/закрытие (with/defer),pathlibvsos.path, обход каталогов; форматы CSV/JSON/YAML/TOML/INI;pickleи его опасности. -
Лекция 4. Бинарные файлы и произвольный доступ
seek/tell,struct(Python) иencoding/binary(Go), чтение заголовка WAV,mmapдля больших файлов. -
Лабораторная работа 1 (4 часа)
Организация и использование процедур. - Лабораторная работа 2 (4 часа)
Организация и использование функций. - Лабораторная работа 3 (4 часа)
Работа с файлами последовательного и произвольного доступа.
Тема 5. Библиотеки и модули¶
-
Лекция 1. Модули, пакеты и управление зависимостями (4 часа)
Модули и пакеты Python (__init__.py,__main__.py,if __name__ == "__main__");sys.path;pipи современныйuv;pyproject.toml, lock-файлы; виртуальные окружения; в Go —go mod,go.sum, vendoring; FFI черезctypesиcgo. -
Лабораторная работа 1 (4 часа)
Программирование модуля. Создание библиотеки подпрограмм.
Тема 6. Основные принципы объектно-ориентированного программирования¶
- Лекция 1. Базовые понятия ООП. Инкапсуляция, наследование, полиморфизм
История ООП. Класс, объект, интерфейс. Принципы инкапсуляции, наследования, полиморфизма. Реализация ООП в Python и Go. - Лекция 2. Событийно-управляемая модель и компонентно-ориентированный подход
Генераторы и yield в Python,asyncio. Горутины и каналы в Go. Компонентно-ориентированное программирование. - Лекция 3. SOLID-принципы
SRP, OCP, LSP, ISP, DIP — антипримеры и рефакторинг на Python и Go. Связь с шаблонами проектирования.
Тема 7. Среда разработки: Visual Studio Code¶
- Лекция 1. VS Code: установка, расширения, отладка
Переносной режим, русификация, расширение Python (Pylance, Ruff, debugpy), расширение Go (gopls, dlv), горячие клавиши. - Лекция 2. Параметры командной строки
sys.argvиos.Args,argparse/typer,flag/cobra, отладка сargsвlaunch.json. -
Лекция 3. Ошибки, исключения и декораторы
try/except/finally,raise from, собственные исключения, декораторы;errorкак значение в Go,errors.Is/As,panic/recover, middleware. -
Лабораторная работа 1 (10 часов)
Создание простого проекта по индивидуальным заданиям.
Тема 8. Этапы разработки приложения¶
- Лекция 1. GUI на Tkinter
Встроенный модульtkinter, виджеты, упаковщики (pack/grid/place), события,ttk. Параллель: Fyne в Go. - Лекция 2. GUI на PyQt и Qt Designer
PyQt6/PySide6, визуальный редактор Qt Designer, сигналы и слоты,.ui-файлы. - Лекция 3. Web-обёртка как UI: pywebview, CEF Python, Wails
Встроенный браузер как окно приложения, биндинги Python/Go ↔ JavaScript.
Тема 9. Иерархия классов¶
- Лекция 1. Стандартная библиотека Python и Go
Встроенные функции, основные модулиsys,os,datetime,collections,contextlib,re,json,sqlite3; параллели в Go. -
Лекция 2. Шаблоны проектирования (4 часа)
Порождающие, структурные, поведенческие шаблоны с примерами на Python и Go. -
Лабораторная работа 1 (6 часов)
Создание объектно-ориентированного приложения по индивидуальным заданиям.
Тема 10. Стандартные модули Python¶
- Лекция 1. HTTP-клиент и HTTP-сервер
urllib,requests,net/httpв Go. - Лекция 2. Регулярные выражения
Модульreв Python,regexpв Go. - Лекция 3. SQLite
Встраиваемая БД, защита от SQL-инъекций, миграции. -
Лекция 4. Конкурентность и потоки
GIL,threading,asyncio, горутины и каналы в Go. -
Лабораторная работа 1 (4 часа)
Создание проекта с использованием компонентов для работы с текстом. - Лабораторная работа 2 (6 часов)
Создание проекта с использованием компонентов стандартных диалогов и системы меню.
Тема 11. Разработка приложений¶
- Лекция 1. Логирование
Модульloggingв Python,log/slogв Go. - Лекция 2. Django — основы фреймворка
MVT, модели и миграции, ORM, маршруты, views, шаблоны, готовая админка. - Лекция 3. Django — формы, сигналы и REST API
ModelForm, аутентификация, сигналы, DRF, JWT. -
Лекция 4. Компиляция в standalone
PyInstaller, Nuitka, Briefcase для Python;go buildи кросс-компиляция; Docker. -
Лабораторная работа 1 (4 часа)
Разработка оконного приложения. - Лабораторная работа 2 (4 часа)
Разработка оконного приложения с несколькими формами.
Тема 12. Качество кода и тестирование¶
- Лекция 1. Качество кода и тестирование
unittestиpytestв Python, встроенныйtestingв Go, параметризация, fixtures, табличные тесты, покрытие. -
Лекция 2. Продвинутое тестирование
Моки (unittest.mock,gomock), property-based (Hypothesis,rapid), интеграционные тесты с testcontainers, линтеры/security-сканеры/coverage gates в CI. -
Лабораторная работа 2 (4 часа)
Оформление, отладка кода программы.
Тема 13. Основы Go (Golang Basics)¶
- Лекция 1. Знакомство с Go
История, установка,go mod, первая программа, инструментарий (gofmt,golangci-lint, VS Code). - Лекция 2. Переменные, типы и управляющие конструкции
var/const/iota, базовые типы,if/for/switch,defer, указатели. - Лекция 3. Функции, ошибки и
panic/recover
Multiple return, variadic, functional options,errorкак значение,errors.Is/errors.As. - Лекция 4. Композитные типы
Массивы, срезы (slice header), карты, структуры, теги, embedding. - Лекция 5. Методы и интерфейсы
Receiver, structural typing,any, type switch, канонические интерфейсы stdlib, дженерики. - Лекция 6. Пакеты и тестирование
internal/,go mod,go.sum,testing, табличные тесты, бенчмарки, fuzz.
Тема 14. Продвинутый Go (Golang Advanced)¶
- Лекция 1. Конкурентность
Горутины, каналы,select,sync.WaitGroup/Mutex/Once,sync/atomic, worker pool, fan-in/fan-out, pipeline. - Лекция 2. Context
context.Context,WithCancel/WithTimeout/WithDeadline/WithValue, распространение и отмена. - Лекция 3. HTTP-клиент и HTTP-сервер
net/http, production-клиент сTimeout, роутинг Go 1.22+, middleware, graceful shutdown. - Лекция 4. Файлы, JSON и БД
os/io/bufio,embed.FS,encoding/jsonс тегами,database/sql, транзакции. - Лекция 5. Бенчмарки и pprof
Benchmark*,benchstat,pprof,net/http/pprof,-race, escape analysis,sync.Pool.
Задание на практику — большой сквозной проект «распределённая система оплаты услуг» с GUI, HTTP, БД, логированием и тестами.
Дополнительно: шпаргалка по типам и scope, системы контроля версий и Git.