УТВЕРЖДАЮ
Проректор по учебной работе
Д. А. Зубцов
1 июня 2012 г.
Программа
по дисциплине ИНФОРМАТИКА (алгоритмы и алгоритмические языки). Основной курс
по направлению подготовки:
010900 «Прикладные математика и физика»
факультеты: ФОПФ, ФМБФ
кафедра: информатики
курс: I
семестр: 1
Зачетные единицы – 4
Трудоемкость: базовая часть – 2 зач. ед.;
вариативная часть – 2 зач. ед.,
часть по выбору студента – 0 зач. ед.:
лекции: – 34 (час.) Экзамен – нет
практические (семинарские) Зачет дифф. – 1 сем.
занятия: – 34 (час.) Две контрольные работы
лабораторные занятия: – 34 (час.) Самостоятельная работа
Всего аудиторных часов – 102
Программу составили: академик РАН В. П. Иванников,
к.ф.-м.н., доцент П. Н. Коротин
д.ф.-м.н., профессор В. В. Прут
Программа обсуждена на
заседании кафедры информатики
29 мая 2012 г.
Заведующий кафедрой,
чл.-корр. РАН И. Б. Петров
Компетенции обучающегося, формируемые в результате освоения дисциплины: ОК-10, ОК-11, ОК-12, ОК-13, ПК-6, ПК-12, ПК-14
Структура преподавания дисциплины.
Язык программирования С. История языка. Объекты языка. Константы. Переменные. Типы данных. Массивы. Указатели. Массивы указателей. Указатели и многомерные массивы. Наборы символов ASCII, Unicode; кодовые страницы. Символьные и строковые типы данных. Структуры. Битовые поля. Объединения. Инициализация всех типов переменных. Преобразование типов. Определение размера данных. Операции: арифметические, логические, отношения. Приоритеты операций. Операторы присваивания, условных и безусловных переходов, цикла, дополнительные. Структура программы. Функции. Способы передачи параметров. Прототипы функций. Указатели на функции. Рекурсия. Библиотечные функции. Функции ввода-вывода. Файлы. Классы памяти. Области действия переменных. Динамическое распределение памяти. Динамические матрицы. Оператор определения типа. Препроцессор. Включение файлов. Макроподстановка. Среды программирования (Microsoft Visual Studio и др.). Методы отладки программ.
Рекурсивные и итеративные алгоритмы. Индукция и рекурсия. Рекурсивные методы в программировании. Примеры рекурсивных подпрограмм.
Классические алгоритмы. Перебор и методы его сокращения, перебор с возвратом. Динамическое программирование. «Жадные» алгоритмы.
Алгоритмы арифметики. Системы счисления. Наибольший общий делитель. Простые числа: генерация и проверка на простоту. Каноническое разложение. Алгоритмы для больших чисел.
Алгоритмы сортировки данных. Сортировки: включением, выбором, обменом. Быстрая сортировка. Пирамидальная сортировка. Сортировка слиянием. Сравнение методов сортировки.
Структуры данных. Основные определения и функции. Представление в памяти. Связанные списки. Сортировка списков. Стеки. Очереди. Деревья. Способы обхода двоичного дерева, их рекурсивные и итеративные реализации. Сортировка с помощью дерева.
Алгоритмы поиска. Последовательный поиск. Поиск в бинарном дереве поиска. Сбалансированные деревья. АВЛ-дерево. Базовые операции и их реализация. Хеширование. Методы построения хеш-функций. Разрешение коллизий. Сравнение скоростей поиска.
Алгоритмы алгебры логики. Элементарные логические операции. Таблицы истинности. Алгебраические свойства элементарных операций. Нормальные формы. Полные системы функций. Базисы.
Комбинаторные алгоритмы. Генерация комбинаторных объектов: перестановок, сочетаний, размещений. Генерация разбиений числа.
Алгоритмы на графах. Представление графов. Поиск в глубину и в ширину. Кратчайшие пути. Циклы: эйлеров и гамильтонов.
Алгоритмы вычислений на строках. Точное совпадение: классические методы. Приближенный поиск подстрок.
Учебно-методическое и информационное обеспечение дисциплины.