• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Algorithmization and Programming

2021/2022
Academic Year
RUS
Instruction in Russian
12
ECTS credits
Course type:
Compulsory course
When:
1 year, 1-4 module

Instructors

Программа дисциплины

Аннотация

Курс «Алгоритмизация и программирование» предназначен для студентов бакалавриата по направлениям «Информатика и вычислительная техника». Курс направлен на изучение, освоение и умение применять в рамках своей специализации технологии структурного программирования, изучение базовых элементов языков 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