Во всех видео-лекциях есть оговорки. Я
знаю о них, но давайте я оставлю их выявление вам в качестве развлечения J . Можете даже
не сообщать мне о них.
Темы
реальных лекций курса Работы на ЭВМ. Мехмат МГУ. 2026 г.
I семестр (весна)
07.02.26
1. Понятие виртуальной памяти. Основы реализации.
Представление чисел в ЭВМ. Стандартные представления (целое
без знака).
14.02.26
2.
Little/big-endian. Целое со знаком (прямой, обратный,
дополнительный код). Вещественные числа с фиксированной точкой. Currency.
Вещественные
числа с плавающей точкой: нормализованное и ненормализованное
представления. Язык C: union. assert.
21.02.26
21.02.26
3. Вещественные числа с плавающей
точкой.
IEEE стандарт
представления. Не числа.
Точность представления вещественного числа.
Машинное эпсилон (два определения). Связь
машинного эпсилон с точностью представления вещественных чисел с плавающей
точкой.
Абсолютные и относительные ошибки. Теоремы
об ошибках сложения/вычитания/умножения/деления.
Написание примеров программ на тему битового представления вещественных
чисел.
Какие числа можно точно представить в виде
вещественного числа с плавающей точкой.
Задача о том, что можно ли представить точно в
виде числа типа float все целые числа от 0 до миллиона.
Задача о нахождении корней уравнения ax2+bx+c=0.
28.02.26
4. Задача о нахождении корней уравнения ax2+bx+c=0. Понятия корректных
и некорректных задач.
Нестандартные представления чисел в ЭВМ. Number из СУБД Oracle.
Язык C. Что больше: минус два или два? Чему равно минус два поделить на два?
Чему равно минус два умножить на два? Чему равно ((char)50)*((char)50) ?
Типы переменных в
языке С, в том числе size_t, структуры,
объединения. Соответствующие форматы для работы с функциями ввода/вывода и
литералы, соответствующие типам переменных. Константы. Макроопределения.
07.03.26
5. Понятие алгоритма. Время работы алгоритма.
Сведение задач и алгоритмов.
Определения верхних и нижних оценок времени
работы алгоритма.
Теоремы о верхних и нижних оценках при сведении
задач.
Понятие сложности (по времени выполнения
и по памяти) /средней сложности/амортизационной сложности алгоритма.
14.03.26
6. Сортировки.
Определение. Существование и единственность сортировки.
Достаточность использования
(определения) одной операции меньше
для осуществления сортировки.
Сортировка
пузырьком. Случай оптимальности сортировки пузырьком. Верхняя и нижняя
оценки времени решения задачи сортировки для случая, когда время сравнения
элементов=0, время обмена местами двух элементов=Θ(|i-j|).
Директива препроцессора #define.
Правила хорошего тона при оформлении #define.
Сортировка
слиянием с рекурсией.
21.03.26
7. Сортировки,
основанные на сравнениях. Дерево решения. Теорема о нижней оценке времени
решения задачи сортировки алгоритмами, основанными на сравнениях.
Введение в OpenMP.
Распараллеливание сортировки слиянием с рекурсией. Распараллеливание секций.
Сортировка
слиянием без рекурсии.
Распараллеливание
сортировки слиянием без рекурсии. Распараллеливание циклов. Теоремы о времени работы
алгоритмов сортировки слиянием с рекурсией и без рекурсии и о количестве
требуемой памяти.
Сортировка в языке C
стандартной функцией qsort().
Дополнительная полезная лекция с семинара: всё, что нужно знать про язык
С++ в этом семестре.
28.03.26
8. Написание кода функции HeapSort.
Теорема о времени приведения массива к *-упорядоченному состоянию (к пирамиде).
Теорема о времени работы алгоритма HeapSort и требованиях к дополнительной памяти.
QSort.
Идея. Теорема о верхней оценке времени работы алгоритма QSort. Требования к памяти QSort.
Реализация QSort.
04.04.26
9. Теорема об оценке времени
работы алгоритма QSort
в среднем.
Цикл выполнения команды.
Возможные различия реализации if/else
if и switch.
goto/call/rtn в терминах регистра с адресом
текущей команды и регистра стека. Команды на компьютере, выходящие за рамки
элементарных операций в рамках алгоритмов, основанных на сравнениях.
Устойчивые сортировки.
Сортировки с временем работы O(n). Сортировка
подсчетом.
11.04.26
10. Цифровая сортировка.
Поиск элемента в
отсортированном массиве. Понятие структур данных. Плоские множества.
Понятие lower_bound, upper_bound. Почему и когда left+(right-left)/2 лучше, чем (left+right)/2 ?
Язык С: Статические,
динамические, автоматические переменные. Время жизни и область видимости
переменных в языке С.
Отведение памяти в куче
(malloc,…) и в стеке (alloca). _malloca()/_freea().
Лекции с семинарских занятий.
Первая
дополнительная лекция по работе с изображениями BMP (общие понятия + работа BMP в формате TrueColor).
Вторая
дополнительная лекция по работе с изображениями BMP (формат с палитрой).
18.04.26
11. Связь автоматических переменных
с системным стеком. Немного про ассемблер. Расшифровка ассемблерного кода
простейшей функции.
Локальные автоматические
массивы переменного размера в языке C.
VLA. Преобразование
типов с использованием VLA.
Механизмы передачи параметров в
функции языка C
через стек и регистры.
Принцип работы в языке C
функций с переменным количеством параметров в случае
различных механизмов передачи параметров в функцию. Пример аналога printf() (с использованием стандартных
макросов va_list, va_start, va_arg, va_end) с несколькими форматными
строками.
25.04.26
12. Язык C. Работа
со структурами. Работа с массивами структур. Работа с массивами указателей на
структуры. Работа с объектами, содержащими подобъекты различной природы, без
структур.
Полезно зайти в семинарские
видео I-го
курса и посмотреть видео
с написанием примера списка студентов.
Плавный переход на C++. Простые классы. Инкапсуляция. Полиморфизм. Отведение памяти (создание объектов). Конструкторы. [Деструкторы]. Inline-функции.
Задание функций вне класса.
02.05.26
13. C++. Переопределение операторов. Методы по умолчанию (=default). Параметры по умолчанию. Ссылки (&). const. Сложные преобразования типа. Конструктор копирования. Создание временных объектов в формулах.
Конструктор копирования. Задание функций вне класса. Создание временных объектов в формулах.
Оператор преобразования типа. Кратко про использование ввода/вывода в языке C++.
istream/ostream ,
“iostream”, cin, cout, fstream
Очень коротко про шаблоны.
Несколько слов про алгоритмы. Очень коротко про простейшие лямбда-функции.
16.05.26
14. Порядковые статистики. Простой
алгоритм поиска порядковой статистики (алгоритм Stat0).
Поиск порядковой статистики за линейное время в среднем
(алгоритм QStat1).
Поиск порядковой статистики последовательности целых чисел {ai} (i=1,…,n) за линейное время для случая ai=O(n) (алгоритм CStat).
Теоремы о времени работы алгоритмов Stat0, CStat, QStat.Теорема о времени работы в
среднем алгоритма QStat.
Поиск порядковой статистики в общем случае с верхней оценкой
времени работы алгоритма Θ(n). Доказательство
оценки.
Медианная
фильтрация изображений.
23.05.26
15. Язык C++. Структуры данных. Работа со
списками. Однонаправленный список с фиктивным элементом.
Хеширование. Метод многих
списков (закрытая адресация?). Оценки на максимальное и среднее время
добавления, поиска, удаления элементов в структуре данных на основе хеширования
методом многих списков. Стратегия работы с подобной структурой данных для
обеспечения среднего времени выполнения основных операций за время = O(1).
II семестр (осень)
Хеширование. Открытая
адресация.