Бакалавриат
2021/2022
Алгоритмизация и программирование
Статус:
Курс обязательный (Информатика и вычислительная техника)
Направление:
09.03.01. Информатика и вычислительная техника
Кто читает:
Департамент компьютерной инженерии
Когда читается:
1-й курс, 1-4 модуль
Формат изучения:
с онлайн-курсом
Онлайн-часы:
20
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
12
Контактные часы:
140
Программа дисциплины
Аннотация
Курс «Алгоритмизация и программирование» предназначен для студентов бакалавриата по направлениям «Информатика и вычислительная техника». Курс направлен на изучение, освоение и умение применять в рамках своей специализации технологии структурного программирования, изучение базовых элементов языков C и C++,а также стандартных алгоритмов обработки различных структур данных. В курсе рассматриваются такие темы как: Введение. Основы алгоритмизации. Основные алгоритмические конструкции. Циклы и примеры их использования Алгоритмы обработки одномерных массивов Алгоритмы обработки матриц Алгоритмы с досрочным выходом из цикла. Основные сведения о языке C. Конструкции языка C. Форматный ввод и вывод данных. Использование указателей при обработке массивов и матриц. Распределение памяти. Классы памяти. Функции в языке C. Символьный и строковый тип данных. Алгоритмы обработки строк. Динамическое распределение памяти. Динамические структуры. Основные сведения о языке C++ Потоковый ввод и вывод данных. Структуры. Файлы. Строковый тип данных. Связанные списки. Бинарные деревья. Алгоритмы обработки связанных списков Предложена тематика лабораторных и контрольных работ, лекций, семинарских занятий. Все материалы доступны студентам в форме презентаций.
Цель освоения дисциплины
- Освоение технологии структурного программирования;
- Изучение базовых элементов языков C и C++;
- Изучение стандартных алгоритмов обработки различных структур данных;
- Изучение приёмов разработки алгоритмов для обработки различных структур данных.
Планируемые результаты обучения
- Знает базовые конструкции (структуры) и базовые операции псевдокода.
- Знает кодирование всех алгоритмических конструкций на языке С.
- Знает основные приемы и особенности потокового ввода и вывода данных
- Знает основные приемы работы со строками в языке С++
- Знает основные приемы работы со структурами и файлами в языке С++
- Знает основные сведения о языке С++.
- Знает основные способы записи алгоритмов. Умеет записать постановку задачи
- Знает основные типы связанных списков. Умеет формировать и обрабатывать линейные однонаправленные списки - стек и очередь, т.е применяет стандартные алгоритмы для работы с этим типом данных.
- Знает понятие и назначение типа "указатель". Умеет использовать указатели при решении задач обработки массивов и матриц.
- Знает понятие функции. Умеет передавать параметры по значению и по адресу. Умеет использовать указатель на указатель.
- Знает понятия структуры и файлового типа. Умеет применять стандартные алгоритмы для решения задач обработки файлов и структур.
- Знает структуру простой программы на языке С. Знает основные типы данных, базовые операции (арифметические, логические и операции присваивания). Умеет кодировать арифметические выражения на языке С.
- Знает типы циклов и умеет правильно записать их на псевдокоде .Может выбрать тип цикла, который подходит для решения данной задачи. Может составить итерационный алгоритм и закодировать его.
- Знает характеристики классов памяти и основные отличия между ними.
- Умеет использовать алгоритмы с досрочным выходом из цикла для обработки массивов и матриц.
- Умеет использовать алгоритмы сортировки, удаления, вставки элементов , поиска минимума или максимума , формирования нового массива для решения задач обработки одномерного массива.
- Умеет использовать стандартные функции ввода и вывода данных
- Умеет использовать стандартные функции для обработки символьных строк при решении задач. Умеет использовать алгоритмы обработки символьных сток при решении задач. Умеет использовать указатели для обработки символьных строк.
- Умеет использовать функции выделения и освобождения памяти. Умеет формировать и обрабатывать связанные списки различных типов - линейные, циклические, одно и двунаправленные.
- умеет осуществлять ввод и вывод матриц, а также использовать алгоритмы, изученные в теме 4 для обработки матриц.
- Умеет формировать и обрабатывать бинарные деревья.
Содержание учебной дисциплины
- Введение. Основы алгоритмизации.
- Основные алгоритмические конструкции.
- Циклы и примеры их использования.
- Алгоритмы обработки одномерных массивов
- Алгоритмы обработки матриц
- Алгоритмы с досрочным выходом из цикла.
- Основные сведения о языке C.
- Конструкции языка C.
- Форматный ввод и вывод данных.
- Использование указателей при обработке массивов и матриц
- Распределение памяти. Классы памяти.
- Функции в языке C.
- Символьный и строковый тип данных. Алгоритмы обработки строк
- Структуры. Файлы в языке С.
- Основные сведения о языке C++
- Динамическое распределение памяти. Динамические структуры.
- Потоковый ввод и вывод данных.
- Структуры. Файлы в языке С++.
- Строковый тип данных
- Связанные списки. Алгоритмы обработки связанных списков
- Бинарные деревья. Алгоритмы обработки бинарных деревьев
Элементы контроля
- Лабораторная работа 1Решение задачи на компьютере с последующей защитой отчета. При несвоевременной защите отчета баллы за работу снижаются.
- Контрольная работа 1Письменная работа 80 минут
- Семинар5
- Семинар 1
- Тест лекция 6 2 модуль
- Экзамен 2Экзаменационная оценка не является блокирующей. Если итог первого полугодия менее 4 баллов, студент не может продолжить изучение курса. Если итог второго полугодия менее 4 баллов, студент не получает итоговую оценку за курс до пересдачи на положительную оценку за второе полугодие. Решение о сдаче экзамена студент принимает самостоятельно. Необходимо до начала проведения экзамена сообщить лектору через старосту намерен ли студент сдавать экзамен. Экзамен сдается по подгруппам. Первая подгруппа сдает экзамен по времени, обозначенному в расписании как начало экзамена. Каждый студент первой подгруппы должен зайти в аудиторию в jitsi за 15 минут до начала приема экзамена. Вторая подгруппа входит в аудиторию через 1,5 часа после начала экзамена первой подгруппы. Сдать экзамен в другой группой или подгруппой нельзя. Нужно включить камеру и микрофон показать на камеру паспорт, студенческий билет (при его наличии) и назвать ФИО. Затем микрофон нужно выключить, оставив камеру включенной. Включать микрофон далее можно только если нужно задать вопрос. После того как будет открыт тест, нужно поделиться экраном, чтобы преподаватель видел что вы не нарушаете правила сдачи экзамена. Во время прохождения теста должен быть открыт только тест в LMS, никаких других окон открывать нельзя. Можно пользоваться чистыми листами бумаги и ручкой. Никакими источниками литературы, поиском в интернете пользоваться нельзя. Нельзя общаться с другими студентами, в т.ч. посредством мессенджеров. Мобильный телефон на время проведения экзамена следует выключить. Сохранять результаты теста не нужно, я увижу их в LMS. Тест будет доступен строго в течение одного часа для каждой подгруппы. Итог первого полугодия будет доступен через пять рабочих дней после проведения экзамена. Оценка будет выставлена в журнал. Итоговая оценка второго полугодия не может превышать 10 баллов.
- Coursera
- Лабораторная работа 2
- Тест Лекции 7 2 модуль
- Семинар 2
- Лекции 3
- Лабораторная работа 3
- Лабораторная работа 4
- Лабораторная работа 5
- Лабораторная работа 6
- Лабораторная работа 7
- Лабораторная работа 8
- Лабораторная работа 9
- Лабораторная работа 10
- Лабораторная работа 11
- Контрольная работа 2
- Лекции 5 3 модуль
- Семинар 7 3 модуль
- Семинар 1 3 модуль
- Контрольная работа 3Письменная работа 80 минут
- Лекция 3 4 модуль
- Семинар2 4 модуль
- семинар 3 4 модуль
- Экзамен
- Лабораторная работа 2
- Семинары 2
- Лабораторная работа 3
- Лекция 3 4 модуль
Промежуточная аттестация
- 2021/2022 учебный год 2 модуль0.02 * Тест лекция 6 2 модуль + 0.2 * Coursera + 0.04 * Лабораторная работа 5 + 0.08 * Лабораторная работа 2 + 0.06 * Лабораторная работа 1 + 0.024 * Семинар 1 + 0.04 * Семинар5 + 0.02 * Лекции 3 + 0.08 * Лабораторная работа 4 + 0.02 * Тест Лекции 7 2 модуль + 0.016 * Семинар 2 + 0.12 * Контрольная работа 1 + 0.2 * Экзамен + 0.08 * Лабораторная работа 3
- 2021/2022 учебный год 4 модуль0.12 * Контрольная работа 3 + 0.04 * Лекция 3 4 модуль + 0.02 * семинар 3 4 модуль + 0.08 * Лабораторная работа 7 + 0.12 * Контрольная работа 2 + 0.059 * Лабораторная работа 11 + 0.02 * Семинар 7 3 модуль + 0.059 * Лабораторная работа 10 + 0.02 * Семинар 1 3 модуль + 0.04 * Лекции 5 3 модуль + 0.02 * Семинар2 4 модуль + 0.082 * Лабораторная работа 9 + 0.08 * Лабораторная работа 8 + 0.2 * Экзамен 2 + 0.04 * Лабораторная работа 6
Список литературы
Рекомендуемая основная литература
- Ресурсно - эффективные компьютерные алгоритмы. Разработка и анализ : учеб. пособие для вузов, Ульянов, М. В., 2008
Рекомендуемая дополнительная литература
- Искусство программирования. Т. 4, А: Комбинаторные алгоритмы, часть 1, Кнут, Д. Э., 2013
- Искусство программирования. Т.1: Основные алгоритмы, Кнут, Д. Э., 2011
- Искусство программирования. Т.2: Получисленные алгоритмы, Кнут, Д. Э., 2012
- Искусство программирования. Т.3: Сортировка и поиск, Кнут, Д. Э., 2012