Skip to content

demist/techprog2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 

Repository files navigation

year status progress

Summary

2 модуль, 2021/2022 учебный год, ВШЭ ВШБ ДБИ

Ссылки

Аннотация

Курс про все, что связано с созданием ПО, кроме непосредственно написания программного кода

Курс состоит из лекций и семинарских занятий.

Лекционный материал включает краткий обзор важных с точки зрения процесса разработки понятий: методы отладки и этапы исправления дефектов ПО, критерии хорошей и неудачной архитектуры, этапы проектирования и разработки, методологии разработки. Семинарский материал состоит из рассказа о важных инструментах программиста: системы контроля версий, системы сборки, gdb, valgrind, развертывание и настройка систем непрерывной интеграции.

Цель курса — дать слушателям, которые параллельно изучают языки программирования, алгоритмы и т. п., информацию и дополнительные знания, какими инструментами можно пользоваться и на что обращать внимание при создании рыночного программного продукта.

План лекций

Лекция №0 (неделя 1)

  • План курса
  • Правила оценки
  • Информация о заданиях
  • Контрольные мероприятия

Лекция №1 (неделя 1)

Принципы проектирования ПО, часть 1

  • Что такое архитектура ПО
  • Что такое "Проектирование ПО"?
  • По каким критериям можно оценить архитектуру?
    • Критерии хорошей архитектуры
      • Эффективность
      • Гибкость
      • Расширяемость
      • Масштабируемость, тестируемость, возможность повторного использования, сопровождаемость
    • Критерии неудачной архитектуры
      • Жесткость
      • Хрупкость
      • Неподвижность
  • Принцип High Cohesion / Low Coupling

Отличный ресурс про паттерны проектирования

Лекция №2 (неделя 1)

Принципы проектирования ПО, часть 2

  • Принципы SOLID
    • Single responsibility principle
    • Open-closed principle
    • Liskov substitutional principle
    • Interface segregation principle
    • Dependency inversion principle
  • Закон Деметры
  • YAGNI
  • DRY / DIE
  • KISS

Лекция Роберта Uncle Bob Мартина про SOLID

Лекция №3 (неделя 2)

Основные диаграммы UML

  • Что такое UML?
    • Базовое понятие о нотации UML
  • Диаграмма вариантов использования
    • Понятие о вариантах использования
    • Понятие об акторах
    • Нотация диаграммы вариантов использования
  • Диаграмма классов
    • Понятие о классах
    • Нотация диаграммы классов
    • Выделение сущностей
      • Карточки CRC
      • Метод Аббота
  • Диаграмма последовательности
    • Нотация диаграммы последовательности
  • Диаграмма состояний
    • Нотация диаграммы состояний
  • Диаграмма деятельности
    • Нотация диаграммы деятельности

UML Cheat Sheet

Лекция №4 (неделя 2)

Этапы развития проекта

  • Основные этапы жизненного цикла проектирования, реализации и внедрения ПО
  • Формирование требований
  • Разработка концепции
  • Техническое задание
  • Эскизный проект
    • Понятие о MVP и примеры MVP
  • Технический проект
  • Рабочая документация
  • Поставка / ввод в действие
  • Сопровождение
  • Вывод из эксплуатации

Лекция №5 (неделя 3)

Методологии разработки ПО

  • Основные понятия
  • Факторы, оказывающие влияние на процесс разработки
    • Внешние факторы
    • Внутренние факторы
  • Каскадная модель
  • V-модель
  • Инкрементная модель
  • Итерационная модель
  • Спиральная модель
  • RAD-модель
  • Семейство гибких методологий
    • Agile-манифест
    • Scrum
    • Kanban

Статья про методологии разработки

Лекция №6 (неделя 3)

Отладка ПО, ч.1: работа с ошибками ПО

  • Основные этапы отладки ПО
  • Воспроизведение дефекта
    • Необходимая информация для воспроизведения
  • Анализ дефекта
    • Понятие root-cause
    • Условия возникновения
    • Область повреждения
    • Необходимые выводы
  • Дизайн исправления
    • Технический
    • Архитектурный
    • Технологический
  • Исправление дефекта
  • Валидация исправления
  • Интеграция исправления в код или целевую систему
  • Дополнительные валидации после интеграции

Лекция №7 (неделя 4)

Отладка ПО, ч.2: техники отладки

  • Запуск программ в отладчике (трассировка)
    • Софтверный дебаггер
    • "Железный" дебаггер
    • Удаленный дебаггер
  • Логирование
    • Работы системы
    • Программного кода
  • Анализ программного кода без исполнения программы
    • "Метод пристального взгляда"
    • Статические анализаторы
  • Анализ поведения системы
    • Упрощение сценария
    • Ограничение объема данных
    • Упрощение данных / запроса
  • UNIT-тестирование
  • Прототипирование
  • Отладка с помощью дампов
  • Отладка с помощью перехватов
  • Профилирование кода
  • Выполнение кода в другой среде
  • Отладка методом RPC (Remote procedure call)
  • Отладка путем анализа документации
  • Отладка трансляцией кода
    • Трансляция "вниз"
    • Трансляция "вверх"
  • Отладка разработкой интерпретатора
  • Метод индукции
  • Метод дедукции
  • Обратное движение по алгоритму

Лекция №8 (неделя 4)

Управление качеством ПО, ч.1

  • Понятие о качестве ПО
  • Характеристики и атрибуты качества ПО
  • Основые аспекты качества ПО
  • Парадокс тестировщика
  • Соответствие ожиданиям stakeholder'ов
  • Качество и деньги
    • Десятичное правило качества
    • Важные аспекты
  • Ручное тестирования
    • Класс эквивалентности
    • Граничные значения
  • 7 ключевых инструментов качества
    • Причинно-следственная диаграмма Исикавы
    • Блок-схема
    • Контрольный листок

Лекция №9 (неделя 5)

Лекционную контрольную по итогу решено проводить отдельно в дополнительное время

Управление качеством ПО, ч.2

  • 7 ключевых инструментов качества (продолжение)
    • Контрольная карта (карта Шухарта)
      • Примеры
    • Гистограмма
    • Диаграмма Парето
    • Диаграмма разбрасывания
  • Ручное тестирование. Практические советы
  • Автоматизированное тестирование
    • Основные аспекты
    • Жизненный цикл автотеста
    • Практические советы
    • Как на практике?

Лекция №10 (неделя 5)

CI/CD/CD

  • CI/CD/CD
  • Понятие о Continuous Integration
  • Понятие о Continuous Delivery
  • Понятие о Continuous Deployment
  • Пример организации процесса разработка из индустрии
    • Этап проектирования
    • Этап реализации
    • Этап сдачи задачи
    • Подготовка к выпуску версии

TravisCI

TeamCity

GitHub Actions

Jenkins

Лекция №11 (неделя 6)

Архитектурные паттерны

  • Классификация архитектуры ПО
    • Локальные
    • Распределенные
      • Файл-серверные
      • Клиент-серверные
        • Двухзвенные
        • Трехзвенные
        • Многозвенные
  • Локальные приложения
    • MVC (Model-View-Controller)
  • Клиент-серверная архитектура
    • Тонкий и толстый клиент
    • Трехзвенная архитектура
  • Оценка нагрузки на систему
  • Тип проекта и влияние на нагрузку
  • Ресурсы для обеспечения производительности
  • Масштабирование
    • Горизонтальное
    • Вертикальное
    • Функциональное разбиение
    • Шардинг
  • Типичная архитектура веб-сервиса
  • Типичная архитектура нагруженной информационной системы

Лекция №12 (неделя 6)

Базовые понятия о языках программирования

  • Парадигмы программирования
    • Императивное программирование
      • Описание
      • Примеры
      • "Вложенные парадигмы"
        • Процедурное программирование
        • Структурное программирование
        • Аспектно-ориентированное программирование
        • Объектно-ориентированное программирование
        • Обобщенное программирование
    • Декларативное программирование
      • Пример-объяснение
      • "Вложенные парадигмы"
        • Логическое программирование
        • Функциональное программирование
    • Общая схема парадигм
    • Метапрограммирование
    • Реализация парадигм в языках программирования
  • Компилируемые и интерпретируемые языка
    • Определения
    • Примеры
  • Типизация
    • Сильная / слабая типизация
    • Статическая / динамическая типизация
    • Явная / неявная типизация

План семинаров

✅ Семинар 1 (неделя 1)

Базовые инструменты разработки ПО

Системы контроля версий, git, git-flow (опционально).

Bash и основные команды.

План семинара:

  • показываем bash (на лекции предупрежу, что надо иметь Linux / macOS или WSL)
  • базовые команды bash: touch, rm, cd, mkdir, rmdir, ls, cp, mv, cat, echo, ...
  • пишем простой скрипт на bash (Например, считаем количество файлов в директории)
  • рассказываем про системы контроля версий в целом (зачем нужно, какие есть)
  • рассказываем основы git: что такое репозиторий, что такое ветки, что такое коммиты, pull-request'ы
  • показываем: создание репозитория на github, клонирование локально, создание файла, коммит, push origin

bash commands cheatsheet

bash script cheatsheet

✅ Семинар 2 (неделя 2)

Диаграммы UML

Отработка на семинаре навыков построения диаграмм, решение небольших задач. Диаграммы классов пока не рассматриваем.

План семинара:

  • решаем задачку на диаграмму вариантов использования (например, "варианты использования сайта аэропорта")
  • решаем задачку на диаграмму последовательности (например, "снимаем деньги в банкомате")
  • решаем задачку на диаграмму деятельности (например, "поступаем в университет")
  • решаем задачку на диаграмму состояний ("рассматриваем сдачу курса: изучается-сдан-пересдача-не сдан")

✅ Семинар 3 (неделя 3)

Основы Python

  • понятие о python и интерпретаторе
  • запускаем интерпретатор и считаем парочку арифметических выражений
  • показываем переменные
  • пишем скрипт на сложение чисел
  • пишем скрипт "Hello world"
  • показываем условные переходы и циклы
  • пишем простую функцию расчета факториала

✅ Семинар 4 (неделя 4)

Инструменты отладки

Показываем дебаггер в IDE, точки останова, как с этим работать. (опционально) показываем gdb & valgrind

План семинара:

  • запускаем любимую IDE
  • пишем простую программу (лучше на питоне), запускаем дебагер
  • показываем точки останова, шаг вперед / шаг с заходом / шаг с обходом
  • показываем значения переменных
  • опционально показываем профилировщик
  • опционально показываем gdb - как работать из консоли (опять же, на простом примере)
  • опционально показываем valgrind в простейших сценариях (память не освобождена, переменная не инициализирована, используется неинициализированная переменная в условном переходе)

✅ Семинар 5 (неделя 5)

Тестирование ПО

Отработка на семинаре простейших примеров написания тестов на python, демонстрация разных видов тестов

План семинара:

  • пишем на питоне пару простых функций (например, сложение и умножение чисел)
  • показываем юнит-тесты (каждую функцию)
  • показываем нагрузочное тестирование (запускаем много итераций теста, смотрим производительность)
  • показываем сценарное тестирование (на уровне "посчитаем значения выражения")

✅ Семинар 6 (неделя 6)

Практика проектирования

Отрабатываем практические навыки проектирования (без погружения в программный код) понятных предметных задач: заказ такси через приложение, покупка в интернет-магазине...Рисуем диаграммы классов UML

План семинара:

  • решаем простую задачу на проектирование локального приложения (мобильного или десктопного), без взаимодействия с сервером. Например, проектируем простейшее приложение для создания и хранения заметок. Жетально проектировать на уровне классов. Если идет сложно - сначала пытаемся выделить варианты использования и придумать, как их реализовать. Даже если получится по итогу криво, главное, чтобы получилось хоть что-то..
  • решаем задачу посложнее на проектирование клиент-серверного приложения. Например, приложение для заказа такси. Обязательно надо подстветить проблему, что запрос от клиента до сервера может не дойти (или от сервера до клиента), как это можно решать (спойлер - таймлимитом)

Контрольные мероприятия

✅ Контрольная работа (КР)

  • Пройдет 23 ноября в 20:00
  • Продолжительность контрольной - 30 минут
  • Вопросы будут только по материалам лекций №1 - №8
  • Не нужно задавать уточняющие вопросы по вопросам контрольной в общем чате по курсу и т.п. Для уточнений пишите лектору в личные сообщения в Teams
  • Контрольная проходит на базе Google Forms
    • Вы можете указать любую удобную вам почту (на нее придет письмо с копией ответов) - необязательно корпоративную
    • При нажатии кнопки "Отправить" на последней странице контрольной Google выведет капчу - так что имейте в виду, что нужно иметь 30-60 секунд в запасе, чтобы ее пройти
    • Если у вас сломался интернет - не закрывайте и не перезагружайте страницу. В целом Google сохраняет промежуточные стадии заполнения формы, но при перезагрузке страницы иногда содержание все же теряется. Если интернет оборвался - дождитесь восстановления и продолжайте работу
    • Если у вас технические сложности - обязательно сообщите об этом лектору до конца контрольной работы (после окончания никакие вопросы не принимаются)
  • Вы можете использовать любые материалы, как и те, которые есть в этом репозитории, так и те, которые найдете в интернете. Запрещено только коллективное творчество с однокурсниками и списывание друг у друга
  • Прокторинга не будет
  • Контрольная состоит из 4 блоков
    • 1-ый блок - организационный. Нужно заполнить ФИО и номер группы. Номер группы, пожалуйста, указывайте просто числом (без букв)
    • 2-ой блок - тестовые вопросы. Нужно выбрать только один вариант ответа. Это проверка базовых знаний. 17 вопросов, 16 из них "стоят" 1 балл, 1 вопрос "стоит" 2 балла. Всего можно набрать 18 баллов
    • 3-ий блок - вопросы со свободным ответом. Постарайтесь отвечать лаконично. Это проверка понимания полученных знаний. Всего можно набрать 6 баллов
    • 4-ый блок - вопросы на оценку отлично. Это также вопросы со свободным ответом. Тут проверяется уже ваше умение применять полученные знания и умение рассуждать. Постарайтесь, опять же, отвечать лаконично, но обязательно аргументируйте ваши ответы. Просто тезисы без аргументации приниматься не будут. За этот блок можно набрать 10 баллов
  • Всего на контрольной вы можете набрать 34 балла. Оценка за работу (КР) = (Баллы за работу) / 3.4 (без округления)
  • Важно: если мы обнаружим в ваших работах просто скопированный текст из интернета или идентичные ответы у разных студентов - все причастные получат 0 баллов за КР. Даже если вы что-то прочитали в интернете - осознайте это и напишите ответ своим текстом, а не копируйте.

✅ Техническое задание №1 (ТЗ1)

🔚 Дедлайн: 21 ноября, 23:59

Задание:

Вам необходимо написать bash-скрипт, который работает с файлами.

  • (1 балл) скрипт умеет принимать 3 аргумента: имя директории для обработки, имя директории для сохранения результатов работы, имя архива
  • (2 балла) скрипт может рекурсивно обойти директорию для обработки и вывести на экран статистику: общее количество вложенных директорий, общее количество файлов, размер директории (сколько памяти занимает)
  • (2 балла) скрипт может скопировать все файлы директории для обработки (любого уровня вложенности) в корень директории для сохранения результатов (обратите внимание, повторение иерархии вложенных папок директории для обработки в директории для сохранения результатов не только не требуется, но и противоречит заданию)
  • (1 балл) скрипт может создать архив с именем имя архива, в который добавлены все файлы из директории для обработки
  • (2 балла) скрипт при копировании файлов из директории для обработки в директорию для сохранения результатов умеет корректно (без потери информации) обрабатывать ситуации, когда в директории для обработки имеются файлы с одинаковым именем
  • (1 балл) скрипт при передаче параметра -h (help) выводит краткую справку о том, что он делает, и какие параметры принимает
  • (1 балл) скрипт при передаче параметра -s (silence) продолжает выполнять все те же действия, но ничего не выводит в консоль

Пример работы:

input_dir:

  • A

    • test.txt
    • readme.md
  • B

    • test.txt

my_script input_dir output_dir archive_name

2 dirs, 3 files, 1,5Kb

output_dir

  • test.txt
  • test_2.txt
  • readme.md

Правила сдачи

Отправьте выполненное задание в формате скрипта (в формате .sh) на электронную почту вашего семинариста.

Обязательно укажите тему письма в формате ТП2_ТЗ1_ГРУППА_ФАМИЛИЯ (например, ТП2_ТЗ1_292_ПЕТРОВ)

✅ Техническое задание №2 (ТЗ2)

Составлять диаграммы можно в любом удобном для вас ПО или с помощью любого веб-сервиса. Мы предлагаем варианты: draw.io, Miro, plantuml

🔚 Дедлайн: 28 ноября, 23:59

Задание:

Вам необходимо составить несколько UML-диаграмм для описания процесса снятия денег в банкомате. Обратите внимание на описание пунктов задания. Ничего "сверх" описанного делать не нужно, баллы за это, конечно, не снимаются, но и дополнительные баллы не начисляются. Также обратим внимание, что от вас не требуется знание того, как этот процесс устроен в действительности в реальных банкоматах (и проверять это мы не будем). Ваша задача описать процесс таким, каким вы его себе представляете (но тем не менее, он должен был логичным, последовательным и не противоречить здравому смыслу). Все диаграммы, выполненные в рамках задания, должна быть согласованы между собой (не должны противоречить друг другу).

  • (2 балла) Составьте диаграмму вариантов использования (предполагаем, что банкомат умеет только выдавать деньги, больше ничего - ни платежей, ни внесения наличных). Не забудьте, что банкомат действует не сам по себе, а взаимодействует с серверами банка. При этом мы говорим именно о вариантах использования банкомата. Правильно расставьте границы системы.
  • (3 балла) Составьте диаграмму последовательности для процесса снятия денег. Не забудьте, что любые операции, производимые на банкомате, требуют согласованности с серверами банка. Также не забудьте о том, что связь между банкоматом и серверами банка может работать нестабильно, либо вообще не работать - в таком случае можно и отказать в выполнении операции.
  • (2 балла) Составьте диаграмму состояний банкомата в процессе работы, с учетом выполнения операции выдачи денег. Обязательно укажите внутренние состоятия процесса выдачи денег (например, проверка пин-кода, ожидание ответа сервера). Решения с одним состоянием выдает деньги приниматься не будут.
  • (2 балла) Составьте диаграмму деятельности для процесса получения денег в банкомате.
  • (1 балл) Подумайте, как обеспечить возможность работы банкомата в случае отсутствия связи с серверами банка (например, для выдачи небольших сумм денег). Отразите предлагаемое решение на диаграмме деятельности. Обратите внимание, не нужно вносить изменения в уже сделанную диаграмму - сделайте копию, и внесите необходимые корректировки. Т.е. вы будете присылать семинаристу на проверку две диаграммы деятельности: 1) обычный режим работы 2) работа в случае отсутствия связи с серверами банка.

Правила сдачи

Отправьте выполненное задание в формате изображений (jpg, png) или pdf-файла на электронную почту вашего семинариста.

Обязательно укажите тему письма в формате ТП2_ТЗ2_ГРУППА_ФАМИЛИЯ (например, ТП2_ТЗ2_293_ИВАНОВ)

✅ Техническое задание №3 (ТЗ3)

🔚 Общий дедлайн: 19 декабря, 23:59

Часть №1 Тестирование (стоит 5 баллов из 10)

Задание

Реализуйте на Python простейшую программу, которая будет считывать из файла числа, а далее отдельными функциями искать среди этих чисел минимальное число, максимальное число, считать их общую сумму и произведение. Для этой программы подготовьте тесты:

  • проверяющие корректность работы функций поиска минимума и максимума
  • проверяющие корректность работы функций сложения и умножения
  • проверяющие скорость работы программы при увеличении размера входного файла

Пример работы

В файле: 1 4 2 3

Минимальное: 1

Максимальное: 4

Сумма: 10 (1+2+3+4)

Произведение: 24 (1*2*3*4)

Критерии оценки

Для получения оценки "1": реализуйте функции чтения из файла, поиска минимального числа, поиска максимального числа, сложения и умножения всех чисел из файла

Для получения оценки "2": реализуйте тесты для проверки корректности функций поиска минимума, максимума, сложения и умножения

Для получения оценки "3": реализуйте тесты для проверки скорости работы программы при увеличении размера входного файла

Для получения оценки "4": реализуйте любой другой тест на ваше усмотрение

Для получения оценки "5": реализуйте программу так, чтобы не возникало аварийного завершения работы программы из-за ошибки переполнения (что может легко случиться, если чисел в файле много, и они все достаточно большие - произведение будет очень быстро расти).

Часть №2 (стоит 5 баллов из 10)

Github Actions

Travis CI

Circle CI

Задание

Теперь вам необходимо настроить CI-систему для своего мини-проекта.

Критерии оценки

Для получения оценки "1": заведите репозиторий для своего проекта на GitHub. Оформите простейший README.md (туториал по markdown (файлы формата .md)). Загрузите в репозиторий файлы своего мини-проекта (код, тесты, README.md).

Для получения оценки "2": подключите к вашему проекту любую CI-систему (выше есть подсказки с вариантами систем, но мы крайне рекомендуем использовать GitHub Actions в рамках этого задания, только если Ваш семинарист не демонстрировал вам другую систему). Обеспечьте возможность запуска тестов в ручном режиме (например, по щелчку кнопки в веб-интерфейсе CI-системы)

Для получения оценки "3": настройте CI таким образом, чтобы прогон тестов запускался автоматически при любом новом коммите в репозиторий вашего проекта

Для получения оценки "4": сделайте интеграцию CI-системы и вашего репозитория на GitHub: сделайте бэйдж в README.md, который будет показывать текущий статус тестов. Для информации смотрите тут, тут или в аналогичном доке для выбранной вами CI-системы. Как выглядят бэйджи в целом, можно посмотреть в любом проекте на GitHub, где они сделаны, например, в репозитории Telegram.

Для получения оценки "5": сделайте любую интеграцию CI-системы и какого-либо мессенджера (например, telegram, slack, msteams и т.п.). Настройте систему так, чтобы при успешном прохождении теста посылалось сообщение "все ок", при неуспешном - посылалась информация, какие именно тесты не пройдены

Правила сдачи

Отправьте выполненное задание на электронную почту вашего семинариста. В письме должно быть:

  • Часть 1:
    • Файл с кодом (*.py)
    • Файл(ы) с тестами
  • Часть 2:
    • Ссылка на репозиторий вашего проекта на GitHub (не забудьте сделать репозиторий публичным)
    • Ссылка на страницу вашего проекта в CI-системе (не забудьте сделать ее публичной)
    • Если сделали интеграцию с мессенджером - запишите короткое видео, что после коммита-сборки-тестов вам приходит сообщение от CI
    • Ваш семинарист может попросить дополнительную информацию для проверки (например, доступ к репозиторию на GitHub, чтобы сделать проверочный коммит, или конфигурационный файл CI-системы)

Обязательно укажите тему письма в формате ТП2_ТЗ3_ГРУППА_ФАМИЛИЯ (например, ТП2_ТЗ3_293_ИВАНОВ)

✅ Письменный экзамен (ЭКЗ)

  • Пройдет 21 декабря в 11:00 (сначала в Teams подключение, вводные слова, начнем сам экзамен строго в 11:10)
  • Продолжительность экзамена - 80 минут (1 час 20 минут)
  • Вопросы будут только по материалам лекций (лекция №12 в экзамен не входит)
  • Не нужно задавать уточняющие вопросы по вопросам экзамена в общем чате по курсу и т.п. Для уточнений пишите лектору в личные сообщения в Teams
  • Экзамен проходит на базе Google Forms
    • Вы можете указать любую удобную вам почту (на нее придет письмо с копией ответов) - необязательно корпоративную
    • При нажатии кнопки "Отправить" на последней странице контрольной Google выведет капчу - так что имейте в виду, что нужно иметь 30-60 секунд в запасе, чтобы ее пройти
    • Если у вас сломался интернет - не закрывайте и не перезагружайте страницу. В целом Google сохраняет промежуточные стадии заполнения формы, но при перезагрузке страницы иногда содержание все же теряется. Если интернет оборвался - дождитесь восстановления и продолжайте работу
    • Если у вас технические сложности - обязательно сообщите об этом лектору до конца экзамена (после окончания никакие вопросы не принимаются)
  • Вы можете использовать любые материалы, как и те, которые есть в этом репозитории, так и те, которые найдете в интернете. Запрещено только коллективное творчество с однокурсниками и списывание друг у друга
  • Прокторинга не будет
  • Экзамен состоит из 4 блоков
    • 1-ый блок - организационный. Нужно заполнить ФИО и номер группы. Номер группы, пожалуйста, указывайте просто числом (без букв)
    • 2-ой блок - тестовые вопросы. Нужно выбрать только один вариант ответа. Это проверка базовых знаний. 5 вопросов, 1 балл за каждый, всего 5 баллов
    • 3-ий блок - вопросы со свободным ответом. Постарайтесь отвечать лаконично. Это проверка понимания полученных знаний. Всего можно набрать 46 баллов
    • 4-ый блок - вопросы на оценку 9 и 10. Это также вопросы со свободным ответом. Тут проверяется уже ваше умение применять полученные знания и умение рассуждать. Постарайтесь, опять же, отвечать лаконично, но обязательно аргументируйте ваши ответы. Просто тезисы без аргументации приниматься не будут. За этот блок можно набрать 14 баллов
  • Всего на экзамене вы можете набрать 65 баллов. Оценка за работу (ЭКЗ) = (Баллы за работу) / 6.5 (без округления)
  • Важно: если мы обнаружим в ваших работах просто скопированный текст из интернета или идентичные ответы у разных студентов - все причастные получат 0 баллов за экзамен. Даже если вы что-то прочитали в интернете - осознайте это и напишите ответ своим текстом, а не копируйте.

Правила оценивания

Оценка = Округление (0,25*(ТЗ1 + ТЗ2 + ТЗ3)/3 + 0,25*КР + 0,5*ЭКЗ)

About

Материалы по курсу "Технологии программирования", 2 курс, БИ ВШБ ВШЭ, 2 модуль 2021/2022

Topics

Resources

Stars

Watchers

Forks