Введение ....................................................................................................................................................... 4
Глава 1. Современные методы и алгоритмы интеллектуального статического анализа программных систем для выявления реализованных алгоритмов ..................................................... 11
1.1. Программные системы для гетерогенных вычислительных платформ ............................... 11
1.2. Поиск реализаций алгоритмов при разработке программных систем ................................. 13
1.3. Задача классификации текстов программ для определения реализованного алгоритма ... 15
1.4. Методы и алгоритмы преобразования текстов программ в векторные представления...... 16
1.4.1. Метод на основе word2vec............................................................................................ 16
1.4.2. Метод на основе code2vec ............................................................................................ 18
1.4.3. Метод на основе гистограмм кодов операций............................................................ 20
1.4.4. Метод на основе гистограмм типов вершин деревьев абстрактного синтаксиса ... 24
1.5. Оценка качества классификаторов........................................................................................... 26
1.6. Методы и алгоритмы классификации векторных представлений текстов программ......... 29
1.6.1. Метод k ближайших соседей........................................................................................ 29
1.6.2. Метод опорных векторов.............................................................................................. 30
1.6.3. Алгоритм случайного леса ........................................................................................... 32
1.6.4. Искусственные нейронные сети .................................................................................. 35
1.6.5. Машины экстремального обучения............................................................................. 38
1.7. Методы и алгоритмы кластеризации векторных представлений текстов программ.......... 40
1.8. Оценка качества разбиения набора объектов на кластеры.................................................... 41
1.9. Алгоритмы поиска наилучших значений параметров методов и алгоритмов..................... 42
1.9.1. Генетические алгоритмы.............................................................................................. 42
1.9.2. Роевые алгоритмы......................................................................................................... 44
1.10. Выводы по главе 1 ................................................................................................................... 46
Глава 2. Методы и алгоритмы повышения качества анализа текстов программ ..................... 48
2.1. Методы и алгоритмы преобразования текстов программ в векторные представления
на основе цепей Маркова.......................................................................................................... 48
2.2. Определение решаемой задачи по тексту программы ........................................................... 54
2.2.1. Многоклассовая классификация для определения решаемой программой задачи 54
2.2.2. Оценка качества классификаторов программ ............................................................ 58
2.2.3. Чувствительность векторных представлений программ к классификатору ........... 69
2.3. Бинарная классификация для обнаружения семантического сходства программ .............. 72
2.4. Выявление подходов к решению задач в наборе текстов программ .................................... 74
2.4.1. Разбиение набора программ на кластеры на основе реализованных алгоритмов .. 74
3
2.4.2. Оценка качества разбиений набора текстов программ на кластеры........................ 77
2.5. Алгоритм непрерывной оптимизации параметров методов и алгоритмов.......................... 79
2.5.1. Модифицированный алгоритм оптимизации на основе поиска косяком рыб ........ 79
2.5.2. Оценка качества алгоритмов непрерывной оптимизации......................................... 86
2.6. Выводы по главе 2 ..................................................................................................................... 89
Глава 3. Методы и алгоритмы вынесения рекомендаций по ускорению программ.................. 91
3.1. Методика вынесения рекомендаций по повышению скорости выполнения программ..... 91
3.2. Методы и алгоритмы поиска фрагментов текстов программ по программе-примеру ....... 93
3.2.1. Алгоритм сравнения текстов программ на основе вычисления расстояния между
их векторными представлениями на основе цепей Маркова для деревьев абстрактного синтаксиса и графов «определение-использование» и оценки их цикломатической сложности........................................................................................................... 93
3.2.2. Оценка качества векторных представлений текстов программ на основе цепей
Маркова для деревьев абстрактного синтаксиса и графов «определение-использование»............................................................................................................................ 100
3.2.3. Алгоритм поиска фрагментов текстов программ по программе-примеру ............ 102
3.2.4. Оценка качества алгоритма поиска фрагментов текстов программ....................... 104
3.3. Результаты применения методики вынесения рекомендаций по ускорению программ .... 108
3.4. Выводы по главе 3 ..................................................................................................................... 113
Глава 4. Методы и алгоритмы учёта учебных достижений в курсах по программированию115
4.1. Методика учёта учебных достижений в массовых курсах по программированию ............ 115
4.2. Методы и алгоритмы выявления и определения способов решения учебных задач.......... 118
4.2.1. Выявление способов решения задач на основе кластеризации программ ............ 118
4.2.2. Определение способов решения задач на основе классификации программ........ 126
4.2.3. Автоматический учёт учебных достижений............................................................. 130
4.3. Выводы по главе 4 ..................................................................................................................... 133
Заключение.............................................................................................................................................. 135
Список сокращений и условных обозначений ................................................................................. 138
Список литературы ............................................................................................................................... 141
Список рисунков .................................................................................................................................... 162
Список таблиц ........................................................................................................................................ 166
Приложение А. Типы задач, генерируемых Цифровым ассистентом преподавателя ............. 168
Приложение Б. Параметры классификаторов и результаты оценки их качества ................... 169
Приложение В. Свидетельства о государственной регистрации программ для ЭВМ............. 171
Приложение Г. Акты о внедрении результатов диссертации ....................................................... 174


