-
Цель
Курс «Основы программирования и алгоритмизации» призван предоставить студентам специальности "Математика и компьютер науки - Направление: Математическое обеспечение и администрирование информационных систем» теоретические и технические основы, необходимые для будущей реализации передовых алгоритмов и структур данных, внедрения решений в области программной инженерии, а также глубокое понимание парадигмы объектно-ориентированной разработки на языке C++ как шлюза к разработке на языках высокого уровня, таких как Java, Python, C#, Go и Ruby. -
Организации предмед
- Каждые 2 недели изучаем новые темы (теория + практическая лабораторная работа - список упражнений);
- В конце изучения новой темы, надо решать домашний задания задается список из 2 упражнений;
- Домашнее задание выполняется в группах по 2 студенты. Задания публикуются в личных аккаунтах Github каждого студента. Срок: 2 недели на каждое задание;
- Оценка курса состоит из: домашнее заданий + 1 теоретического экзамена (преп. Глазунов) и 2 лабораторных экзаменов (экзамен 1: 7-го неделя и экзамен 2: 15-го неделя, преп. Хольгер) + курсовая работа (программа + отчет).
-
Оценки по Лаборатории практики:
- Результаты лабораторной работы можно проверить в файле Final_Scores_Algorithms_Programming.xlsx
-
Список выдающихся студентов:
Поздравляем с вашим профессионализмом и усердной работой!!! Особое признание тем студентам, которые работали серьезно и очень профессионально!
В этот список вошли лучшие студенты из каждой группы:---- *Группа 40001:* -----
Чеботарев Сергей Александрович
-
Тихонов Андрей Русланович
-
Киричек Мария Романовна
---- *Группа 40002:* ---- -
Сикорский Александр Владимирович
-
Мартьянов Иван Константин
-
Чиканге Майкл
-
Инструкции:
Тема: Упрощенное моделирование системы транзакций BlockChain
- Время: Согласно расписанию экзаменационной сессии
- В группах по 4 студента разработайте систему BlockChain транзакций между клиентскими кошельками;
- Следуйте инструкциям и сведениям о системе через диаграмму UML и инструкциям, определенным в документы, расположенном в папке GitHub kursovaya_rabota/;
- В день презентации (определенной в сессия экзаменов) все 4 участника каждой группы должны представить:
- систему на C++ OOP, запущенную на локальном компьютере, следуя указаниям документа kursovaya_rabota/project_end_course_ru.pdf
- отчет в формате pdf, следуя инструкциям документа kursovaya_rabota/kursovaya_requirements.pdf
- Отчет каждой группы должен быть представлен в печатном виде в день доклада курсовая работа.
Главные Подтемы:
- Отношения композиция и агрегация
- Структура данных Двоичные деревья (tree)
- Структура данных Связанные списки (list)
Теории и Синтаксис С++
Ключевые различия между композицией и агрегацией
| Аспект | Композиция | Агрегация |
|---|---|---|
| Владение | "Целое" исключительно владеет "частью". | "Целое" не владеет "частью" исключительно; "часть" может существовать независимо. |
| Зависимость жизненного цикла | "Часть" не может существовать без "целого". Если "целое" уничтожено, "часть" тоже уничтожается. | "Часть" может существовать независимо от "целого". Уничтожение "целого" не обязательно влечёт уничтожение "части". |
| Сцепление | Тесное сцепление между "целым" и "частью". | Слабое сцепление между "целым" и "частью". |
| Примеры | Дом и его комнаты (комнаты не могут существовать без дома). | Библиотека и её книги (книги могут существовать независимо и быть частью нескольких библиотек). |
| Символ UML | Залитая (сплошная) ромбовидная фигура. | Неполная (открытая) ромбовидная фигура. |
| Повторное использование | Низкая повторная используемость "части" вне "целого". | Высокая повторная используемость "части" среди нескольких "целиков". |
- Структура данных Двоичные деревья (Binary Tree Search - BST)
- Cтруктура данных Связанный список (Linked List)
- Структура данных Двойной связанный список (Double Linked List)
Новости:
- Время: 14.04.25 (понедельник) ==> Контрольная работа!!! (Обязательное присутствие)
Группа 01: 10:00 am - 11:30 am;
Группа 02: 14:00 am - 15:30 am - Оценка: между [0, 100] ==> минимальное надо получить 65/100 для доступен на курсовая работа
- Уровень сложности: Легкий/средний - Время: для 1:30 час (без интернет и без LLMs)
- темы: от урок 01 до урок 04
- Экзамен будет состоять из 2 упражнения по программированию ООП на С++ с 2 подвопросами по каждому
- Студенты должны принести свой ноутбук (если нету, возьмите с собой бумагу и ручку и напишите код от руки)
- Можно пользовать исходный код из GitHub
Результаты:
-
Экзамен группа 01: Проверьте решение в папке exam_group_01
- Вариант 01
- Вариант 02
- Вариант 03
-
Экзамен группа 02: Проверьте решение в папке exam_group_02
- Вариант 01
- Вариант 02
- Вариант 03
Главные Подтемы:
- Привилегии доступа в ООП: public, protected, private и friend
- методы типа friend
- классы типа friend
- Работать с объектами с вызов по ссылка и по значеню
- перегрузка операции +, -, +=, -=, [], <<
- Разработка базы данных «ключ-значение»
Теории и Синтаксис С++
Характеристики передачи объектов в функциях
| Тип параметра | Создаются копии? | Можно изменять? | Может связываться с временными объектами? |
|---|---|---|---|
const Point &p |
Нет | Нет | Да |
Point &p |
Нет | Да | Нет |
Point p |
Да | Да | Да |
Операции с объектами с использованием вызова по ссылке и вызова по значению
| Характеристика | вызов по ссылки (Point&) |
Вызов по ссылки (Point) |
|---|---|---|
| Передача параметров | по ссылки (Point &p) |
по ссылки (копия Point p) |
| Изменяет исходный объект | Да (напрямую изменяет вызывающий объект) | Нет (изменяет только локальную копию) |
| Тип возвращаемого значения | Ссылка (Point&) |
Новый объект (Point) |
| Поддержка цепочек | Да (например, a -= b -= c работает) |
Нет (возвращает временное значение, прерывает цепочку) |
| Производительность | Эффективность (без копий) | Неэффективность (создает копии) |
| Ожидаемое использование | Стандарт для составного присваивания (-=) |
неожидаемое |
Главные Подтемы:
- наследование классов и типы наследования
- преопределение методов и виртуальные функции
- многоуровневое наследование
- многократное наследование
- абстрактные классы
Теории и Синтаксис С++
- простой наследования
- типы наследования
Домашнее Задание:
- Срок поставки: от 16.03.25 - до 27.03.25
- Разработать список Массив объектов и указателей на объекты ДЗ-02 из 2 упражнений из файла task02/list_dz02_ru.pdf
- разработать исходный код + публикация на GitHub (группы из 2 студентов)
Главные Подтемы:
- Вектор объектов класса
- Вектор указателей на объекты
- Операции CRUD на вектор объектов
- Автоматическая компиляция и сборка программ с помощью Makefile
Теории и Синтаксис С++
Домашнее Задание:
- Срок поставки: от 24.02.25 - до 07.03.25
- Разработать список Классы и объектов ДЗ-01 из 2 упражнений из файла task01/list_dz01_ru.pdf
- разработать исходный код + публикация на GitHub (группы из 2 студентов)
Главные Подтемы:
- Введение ООП (объектно-ориентирование программирование)
- классы и объекты
- Парадигма общей теории объектов
- Инкапсуляция, Наследование, Полиморфизм
- Перегрузка функций/процедур
- Конструктор и Деконструктор
Теории и Синтаксис С++












