Перейти к содержанию

Основы алгоритмизации и программирования

Тема 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), pathlib vs os.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. Основные принципы объектно-ориентированного программирования

Тема 7. Среда разработки: Visual Studio Code

Тема 8. Этапы разработки приложения

Тема 9. Иерархия классов

Тема 10. Стандартные модули Python

Тема 11. Разработка приложений

Тема 12. Качество кода и тестирование

Тема 13. Основы Go (Golang Basics)

Тема 14. Продвинутый Go (Golang Advanced)

Задание на практику — большой сквозной проект «распределённая система оплаты услуг» с GUI, HTTP, БД, логированием и тестами.

Дополнительно: шпаргалка по типам и scope, системы контроля версий и Git.

Экзаменационные билеты