Как выбрать тему
В программировании контрольная работа обычно опирается на учебную и техническую литературу, документацию языка, спецификации технологий и результаты выполнения программных задач. Если в формулировке есть сравнение алгоритмов или оценка эффективности, материалом служат исходные тексты программ, наборы входных данных и измерения времени работы или памяти.
Узкая тема позволяет разобрать один алгоритм, механизм языка или типовую задачу и показать его на небольшом примере программы. При согласовании обычно проверяют соответствие теме дисциплины, наличие теоретического вопроса и возможность выполнить практическое задание без доступа к данным организации.
- Формулировка относится к разделу, который изучается в вашей дисциплине и текущем модуле.
- В теме указан конкретный алгоритм, структура данных, технология или класс задач.
- Для пояснения можно подобрать небольшой программный пример и тестовые данные.
- Объект сравнения задан явно: скорость, память, надёжность, читаемость или область применения.
- Тема не требует доступа к закрытому коду, инфраструктуре или данным организации.
Формулировку темы утверждает кафедра, а перечень тем в методичке вашего вуза или колледжа важнее этого списка.
Алгоритмы и вычислительная сложность
-
Сортировка массивов методом быстрой сортировки и оценка её сложности
Исследуют принцип разбиения массива, случаи работы алгоритма и зависимость времени выполнения от размера тестовых наборов данных.
С практической частью -
Сравнение алгоритмов сортировки вставками, слиянием и быстрой сортировки
Сопоставляют асимптотическую сложность и результаты запуска реализаций на массивах случайных, упорядоченных и обратных данных.
С практической частью -
Двоичный поиск в отсортированном массиве: реализация и анализ эффективности
Разбирают условия применимости двоичного поиска и сравнивают число операций с последовательным поиском на тестовых массивах.
С практической частью -
Алгоритмы поиска кратчайшего пути в графе
Исследуют алгоритмы для взвешенных и невзвешенных графов на учебных примерах графовых моделей.
С практической частью -
Рекурсивные алгоритмы: область применения и ограничение глубины вызовов
Рассматривают рекурсивные решения задач обхода, вычисления и обработки структур данных на примерах программного кода.
С практической частью -
Динамическое программирование при решении задач оптимизации
Исследуют построение таблицы промежуточных результатов на типовой задаче выбора оптимального решения.
С практической частью -
Жадные алгоритмы и границы их применимости
Сравнивают жадный выбор с точным решением на задачах выбора интервалов, построения маршрута или распределения ресурсов.
С практической частью -
Оценка временной и пространственной сложности алгоритмов
Разбирают нотацию O-большое и оценивают число операций и объём памяти для нескольких фрагментов программного кода.
Структуры данных
-
Односвязные и двусвязные списки: операции и особенности реализации
Исследуют добавление, удаление и поиск элементов в собственных реализациях списков на наборе тестовых данных.
С практической частью -
Стек и очередь как структуры данных для обработки последовательностей
Рассматривают операции LIFO и FIFO на примерах проверки скобочных выражений, обработки заявок или обхода графа.
С практической частью -
Деревья поиска: построение, обход и поиск элементов
Исследуют двоичное дерево поиска на числовых ключах и сравнивают способы его прямого, симметричного и обратного обхода.
С практической частью -
Хеш-таблицы: коллизии и методы их разрешения
Разбирают хеширование ключей и сравнивают цепочки и открытую адресацию на тестовом наборе записей.
С практической частью -
Графы в программировании: способы представления и алгоритмы обхода
Сопоставляют матрицу смежности и списки смежности, а также реализуют обход в глубину или ширину на учебном графе.
С практической частью -
Приоритетная очередь и двоичная куча
Исследуют операции добавления и извлечения минимального или максимального элемента на примере обработки набора задач.
С практической частью -
Выбор структуры данных для хранения и поиска записей
Сравнивают массив, список, дерево и хеш-таблицу по скорости типовых операций на одинаковых тестовых данных.
С практической частью -
Абстрактные типы данных и их реализация в объектно-ориентированном языке
Рассматривают разделение интерфейса и реализации на примерах стека, очереди или словаря в выбранном языке программирования.
С практической частью
Объектно-ориентированное программирование
-
Инкапсуляция, наследование и полиморфизм в объектно-ориентированном программировании
Исследуют базовые принципы ООП на примере иерархии классов для условной предметной области.
С практической частью -
Абстрактные классы и интерфейсы: выбор способа описания поведения объектов
Сравнивают возможности абстрактных классов и интерфейсов в программе с несколькими взаимозаменяемыми реализациями.
С практической частью -
Композиция и наследование в проектировании классов
Исследуют два способа повторного использования кода на примере модели объектов условной информационной системы.
С практической частью -
Обработка исключений в прикладных программах
Разбирают возникновение, перехват и передачу исключений на примерах ошибок ввода, преобразования данных и файловых операций.
С практической частью -
Принципы SOLID в проектировании объектно-ориентированных программ
Рассматривают каждый принцип на небольших фрагментах кода и анализируют последствия нарушения связности классов.
С практической частью -
Шаблоны проектирования «Стратегия» и «Фабричный метод»
Исследуют назначение двух шаблонов и реализуют их на примере выбора алгоритма и создания объектов.
С практической частью -
Перегрузка методов и операторов в объектно-ориентированном языке
Рассматривают правила перегрузки и ограничения выбранного языка на примере класса для обработки числовых или текстовых значений.
С практической частью -
Управление жизненным циклом объектов и освобождением памяти
Исследуют создание объектов, автоматическое управление памятью или явное освобождение ресурсов в выбранном языке.
С практической частью
Базы данных и работа с данными
-
Проектирование реляционной базы данных для учёта заявок организации
Исследуют выделение сущностей, атрибутов и связей на примере условной системы учёта заявок.
С практической частью -
Нормализация реляционных баз данных до третьей нормальной формы
Разбирают функциональные зависимости и преобразование исходной таблицы на учебном наборе записей.
С практической частью -
SQL-запросы для выборки, группировки и объединения данных
Исследуют операторы SELECT, JOIN, GROUP BY и агрегатные функции на созданной учебной базе данных.
С практической частью -
Индексы в реляционных базах данных и их влияние на выполнение запросов
Сравнивают планы или время выполнения запросов с индексами и без них на тестовой таблице записей.
С практической частью -
Транзакции и обеспечение целостности данных в реляционной базе данных
Рассматривают свойства транзакций, ограничения целостности и обработку ошибок на примере операций изменения данных.
С практической частью -
Сравнение реляционного и документного подходов к хранению данных
Сопоставляют структуру данных, запросы и области применения на модели каталога, заявок или пользовательских профилей.
-
Обработка файлов CSV и JSON средствами выбранного языка программирования
Исследуют чтение, проверку, преобразование и сохранение структурированных данных на учебных файлах.
С практической частью -
Валидация входных данных в программах обработки информации
Рассматривают проверку типов, диапазонов, обязательных полей и форматов на примере формы или файла с записями.
С практической частью
Разработка, тестирование и безопасность программ
-
Модульное тестирование программных компонентов
Исследуют структуру тестовых случаев, проверки граничных значений и запуск тестов для функций или классов учебного проекта.
С практической частью -
Тестирование программ на граничных значениях и некорректных данных
Разбирают методику выбора тестов для условий, диапазонов и обработки ошибочного ввода на примере программы.
С практической частью -
Отладка программ: поиск и устранение логических ошибок
Исследуют применение точек останова, трассировки и журналирования на фрагментах кода с заранее подготовленными ошибками.
С практической частью -
Системы контроля версий в командной разработке программного обеспечения
Рассматривают фиксацию изменений, ветвление, слияние и разрешение конфликтов на учебном репозитории.
С практической частью -
Рефакторинг программного кода и оценка его читаемости
Исследуют преобразование дублирующегося или сложного кода с сохранением поведения и проверкой тестами.
С практической частью -
Защита программ от некорректного пользовательского ввода
Рассматривают проверку данных, обработку ошибок и предотвращение аварийного завершения на примере консольного или веб-приложения.
С практической частью -
Основные уязвимости веб-приложений и способы их предотвращения
Исследуют типовые ошибки обработки пользовательского ввода и механизмы защиты на учебных примерах без использования реальных систем.
-
Документирование программного кода и пользовательских функций
Разбирают требования к комментариям, описанию интерфейсов и примерам использования на материале учебной программы.
С практической частью
