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

Programming

2019/2020
Academic Year
RUS
Instruction in Russian
10
ECTS credits
Course type:
Compulsory course
When:
1 year, 1-4 module

Instructors


Dudarev, Victor


Куликов Михаил Александрович


Шадрин Михаил Дмитриевич

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

Аннотация

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

Цель освоения дисциплины

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

Планируемые результаты обучения

  • Представлять историю развития языков программирования и основные парадигмы
  • Знать принципы работы управляемого кода в .Net
  • Знать базовые типы и основные операции
  • Уметь применять условные операторы и операторы циклов
  • Уметь использовать процедурную парадигму для решения задач
  • Уметь решать задачи с использованием массивов
  • Знать синтаксис определения методов и их параметров
  • Уметь разрабатывать определение класса, как шаблона для создаваемых объектов
  • Уметь применять наследование классов для изменения их функциональности
  • Уметь проектировать приложения на основе Windows Forms
  • Знать механизм исключений и уметь его использовать
  • Уметь решать задачи по обработке текстовой информации с использованием строк
  • Применять делегаты для организации безопасных ссылок на методы
  • Уметь использовать анонимные методы и лямбда-выражения
  • Овладеть событийно-ориентированной разработкой приложений
  • Уметь использовать различные структуры данных (стек, очередь, словарь, список) для решения практических задач
  • Знать основные отношения между классами
  • Уметь создавать и применять интерфейсы для построения приложений со слабой связностью между типами
  • Знать особенности структур и перечислений как значимых типов
  • Уметь использовать обобщенную парадигму программирования
  • Применять потоки для работы с файловой системой
  • Уметь применять сериализацию и десериализацию графов объектов
  • Знать возможности препроцессора и уметь использовать рефлексию
  • Уметь перегружать операции для пользовательских типов
  • Создавать и применять итераторы в задачах обработки коллекций данных
  • Применять язык интегрированных запросов (LINQ)
  • Овладеть парадигмой многопоточного и асинхронного программирования
  • Уметь применять регулярные выражения для обработки текстовой информации
  • Знать основы программного доступа к реляционным данным
  • Знать основы проектирования Web-приложений
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение. О языках программирования и дисциплине (классификация языков, парадигмы программирования)
    Задачи, цели, содержание и порядок прохождения дисциплины. Данные и их типы. Тип в математике и в программировании. Парадигмы программирования. Абстракция классов и абстракция функциональная, декларативный и императивный подходы. Алгоритм и программа. Структурный подход к разработке алгоритмов. Процедурно-ориентированное программирование. Языки высокого уровня, поддерживающие процедурно-ориентированный подход. Объектно-ориентированное программирование. Типы, классы, объекты. Языки высокого уровня, поддерживающие объектно-ориентированный подход. Типы приложений. О языках программирования и дисциплине (классификация языков, парадигмы программирования). Первая программа на C#.
  • Принципы программирования на основе платформы .Net
    Основные компоненты платформы .Net: общеязыковая исполняющая среда (CLR) и библиотека классов (FCL). Управляемый код. Общая система типов (CTS) и общеязыковая спецификация (CLS). Типы значений, ссылочные типы и базовые типы в CLR и в языке C#. Виды приложений среды .NET. Интегрированная среда для разработки приложений. Проекты и решения, их создание и применения. Средства навигации (проводник решений). Структура исходного кода консольного приложения. Кодирование, трансляция, синтаксический анализ, отладка и исполнение простой программы.
  • Данные и типы
    Понятие типа данных. Пространство имен. Типы значений и типы ссылок. Базовые типы: предельные значения, свойства и методы. Константы, переменные, именованные константы. Типы С# как классы платформы .NET. Понятие переменной. Проблема преобразования типов. Явное преобразование типов. Присваивание простое и составное. Проблема преобразования типов при присваивании. Инициализация переменных.
  • Операции и операторы
    Операнды и операции. Арифметические операции и выражения. Целочисленные арифметические выражения. Переполнения при операциях с целыми. Особые ситуации в арифметических выражениях. Логические операции и операции отношения. Логические выражения. Условная (тернарная) операция. Операции сдвигов. Особенности выполнения операции сдвига применительно к знаковым и беззнаковым типам. Битовые операции. Применение битовых операций для проверки состояния битов и установки битов в заданное значение. Приоритеты операций. Управляющие структуры. Блок операторов. Условные операторы. Вложенность управляющих структур. Множественное ветвление (переключатели). Циклы и средства управления итерациями.
  • Процедурная парадигма программирования
    Определение собственных классов. Статические члены класса. Доступность статических членов (полей и методов) из других классов. Статические поля только для чтения. Поля классов (статические поля). Статические константы. Статические методы. Статический конструктор. Правила инициализации статических полей. Методы–процедуры и методы-функции. Соотношение фиксированных параметров и аргументов. Время жизни параметров. Локальные переменные и локальные константы. Ключевое слово static для реализации класса, как контейнера для статических методов.
  • Массивы и их виды
    Одномерные массивы: объявление и инициализация. Доступ к элементу массива. Операции с массивом и элементами массива. Основные свойства и методы класса System.Array. Особенности операции присваивания применительно к ссылкам. Проблема потери ссылок. Сборка мусора. Многомерные массивы: объявление и инициализация. Доступ к элементу многомерного массива. Операции с массивом и элементами массива. Основные свойства и методы. Массивы ссылок на массивы. Объявление, создание и инициализация. Доступ к элементу. Операции с элементами массива ссылок на массивы. Массив с элементами типа object. Упаковка и распаковка значений. Динамическая идентификация типов.
  • Методы как основа реализации функциональных членов класса
    Параметры, передаваемые в методы: по значению и по ссылке. Параметры с типами ссылок. Выходные параметры. Умалчиваемые значения параметров. Именованные аргументы. Модификатор params для методов с переменным числом аргументов. Перегрузка методов. Сигнатура метода при перегрузке. Рекурсивные методы. Стековые фреймы. Хвостовая рекурсия. Особенности применения метода Array.Sort().
  • Класс как тип. Объекты и их члены
    Объявление класса. Поля объектов. Объявления методов объектов. Инкапсуляция полей и методов. Средства определения доступности полей и методов из других классов. Поля только для чтения. Конструктор экземпляров класса. Конструктор умолчания. Конструктор с параметрами. Перегрузка конструкторов. Поверхностное и глубокое копирование объектов. Конструктор копирования. Свойства классов как средство доступа к закрытым полям. Определение свойств, доступных по чтению и по записи. Ссылка this. Деструкторы и финализаторы. Принцип инкапсуляции и методы объектов. Автореализуемые свойства. Индексаторы. Индексаторы, имитирующие наличие в объекте контейнера. Массивы объектов классов, определяемых программистом. Частичные классы и методы.
  • Наследование классов
    Доступность членов класса при наследовании. Методы при наследовании. Копирование полей при присваивании. Конструктор умолчания. Абстрактные методы и абстрактные классы. Опечатанные классы и методы. Применение абстрактных классов. Наследование полей и методов. Порядок вызова конструкторов при создании объекта класса наследника. Служебное слово base. Передача аргументов конструктору базового класса. Переопределение полей. Переопределение методов. Виртуальные методы. Полиморфизм и его виды.
  • Визуальное проектирование приложений Windows Forms
    Формы, компоненты и элементов управления. Визуальное проектирование формы. Стандартные активные элементы графического пользовательского интерфейса: кнопки, флажки с зависимой фиксацией, флажки с независимой фиксацией, полосы прокрутки, панель индикации. Добавление элементов управления. Позиционирование элементов управления. Установка свойств формы и ее элементов. Связывание элементов формы со стандартными обработчиками событий. События от элементов формы, события клавиатуры и знако-координатных устройств (мышь). Программное изменение свойств элементов. Неотображаемые элементы (компоненты): таймер, всплывающие подсказки. Обработка событий от неотображаемых элементов. Многооконный интерфейс. Меню. Создание и отображение формы. Передача данных в подчиненную форму. Прием данных из подчиненной формы. Диалоговые окна.
  • Исключения
    Классификация ошибок. Классические способы обработки ошибок. Предварительная проверка параметров методов. Проверка кодов возвратов методов. О механизме исключений. Системные исключения и их обработка. Свойства исключений. Исключения при арифметических операциях. Перехват исключения. Блок обработки исключения. Использование нескольких блоков обработки исключения. Передача исключений во вложенных блоках. Передача исключений между методами. Управление программой с помощью исключений. Создание собственных исключений. Понятие объекта-исключения. Пользовательские классы исключений. Ретрансляция исключения.
  • Cтроки
    Строка символов – объект типа string. Операции присваивания, сравнения и конкатенации строк. Преобразование строки в значение базового типа и преобразование значения базового типа в строку. Строки при вводе-выводе. Схема ввода данных с помощью средств библиотеки .NET. Возможности библиотечного метода System.TryParse(). Контроль правильности вводимых данных. Объявление и инициализация строк. Доступ к элементу строки. Постоянство строк. Форматирование строки. Использование форматирования при выводе строк. Основные методы обработки строк: сравнение, поиск в строке, замена символов, вставка строк, удаление, разбиение строки на слова, формирование строки из слов, преобразование символов строки к заданному виду. Преобразование строки в массив символов и обратное преобразование. Массив строк. Параметры метода Main(). Запуск программы с передачей аргументов в метод Main().
  • Делегаты
    Синтаксис делегатов. Массивы делегатов. Многоадресные экземпляры делегатов. Делегаты и обратные вызовы.
  • Анонимные методы, лямбда-выражения
    Синтаксис делегатов. Массивы делегатов. Многоадресные экземпляры делегатов. Делегаты и обратные вызовы. Анонимные методы. Лямбда-выражения.
  • События
    Объявление cобытия. Генерация и обработка событий. Стандартный паттерн обработки событий и типы EventHandler и EventArgs. Этапы проектирования взаимодействия на основе событий. Типовая структура приложения, управляемого событиями.
  • Абстрактные типы данных
    Массивы объектов разных типов. Упаковка и распаковка. Массивы-списки на примере ArrayList и List. Дек, стек, очередь: основные понятия об абстрактных типах данных. Коллекции и их отличие от массивов. Стандартные интерфейсы. Итераторы и оператор foreach. Динамический массив: объявление, доступ к элементам, методы добавления и удаления элементов. Стек: объявление, доступ к элементам, методы добавления и удаления элементов. Очередь: объявление, доступ к элементам, методы добавления и удаления элементов. Хэш-таблица: объявление, доступ к элементам, методы добавления и удаления элементов. Использование коллекций при решении прикладных задач.
  • Отношения между классами: вложение, композиция, агрегация
    Независимость классов и наследование. Включение объектов классов. Отношение агрегации между классами. Отношение композиции. Вложение классов.
  • Интерфейсы
    Два вида наследования в ООП. Понятие интерфейса. Объявления интерфейсов. Реализация интерфейсов. Интерфейс как тип. Интерфейсы и наследование. Члены интерфейса: методы, свойства, события, индексаторы. Доступ к членам интерфейса. Реализация интерфейса в классе. Использование интерфейсов как альтернатива множественному наследованию.
  • Перечисления и структуры – типы значений
    Перечисления. Базовый класс перечислений. Структуры: определение типа, объявление переменных, операции над структурами. Отличие структур от классов. Упаковка и распаковка. Реализация структурами интерфейсов. Перегрузка операций в структурах.
  • Обобщенное программирование
    Декларация обобщенных классов, интерфейсов и структур. Типизирующие параметры и список ограничений типизирующих параметров. Обобщенные методы и их сигнатуры. Виртуальные и абстрактные обобщенные методы. Вызовы обобщенных методов. Обобщенные коллекции. Обобщенные делегаты. Перегрузка операций в обобщенных классах. Использование обобщенных методов с делегатами.
  • Потоковый ввод-вывод. Работа с файловой системой
    Понятие потока данных. Стандартные потоки: стандартный поток ввода, стандартный поток вывода, стандартный поток вывода сообщений об ошибках. Символьные потоки данных, связанные с файлами. Открытие и закрытие потока. Методы чтения и записи текстовых данных. Методы чтения и записи двоичных данных. Кодировка символов в потоках: кодовые страницы, кодировка UNICODE, кодировка в текстовых потоках, кодировка текстовых строк в двоичных потоках. Буферизация потоков: буферизация двоичных потоков, буферизация текстовых потоков, принудительный сброс буферов. Потоки, ориентированные на байты. Открытие и закрытие потока. Методы чтения и записи данных. Потоки в основной памяти: создание потока, методы чтения и записи данных. Классы-адаптеры и стандартные потоки. Двоичные, текстовые и XML-адаптеры. Перенаправление стандартных потоков.
  • Сериализация
    Сериализация на основе атрибутов. Открытие потока. Определение объекта форматирования. Двоичное форматирование и XML-форматирование (двоичная сериализация и XML-сериализация). JSON-сериализация.
  • Небезопасный код и препроцессорные директивы C#. Рефлексия и атрибуты
    Небезопасный код. Указатели и адресная арифметика. Препроцессорная обработка. Препроцессорные директивы. Метаданные, тип Type, понятие атрибута, примеры библиотечных атрибутов. Пользовательские атрибуты, указание цели атрибута.
  • Перегрузка операций
    Декларации операций в классах и структурах. Синтаксис перегрузки унарных и бинарных операций. Перегрузка парных операций, перегрузка true и false.
  • Коллекции и итераторы
    Коллекции и их интерфейсы. Использование коллекций при решении прикладных задач. Итераторы и нумераторы. Интерфейсы IEnumerator / IEnumerable. Использование yield return.
  • Язык интегрированных запросов LINQ и элементы функционального программирования
    Потоковые последовательности данных. Операции (директивы) языка LINQ. LINQ-провайдеры. Методы, используемые в LINQ-запросах. Две формы записи LINQ-запроса. Переменные запросов и разделы LINQ-запросов. Отложенное выполнение LINQ-запросов. Анонимные типы в LINQ-запросах. Операции стандартных запросов. Делегаты как параметры методов, представляющих операции запросов. Предопределенные типы делегатов в .NET. Лямбда-выражения в качестве аргументов. Функции высших порядков.
  • Асинхронные методы и параллельные программы
    Процессы операционной системы и потоки исполнения. Многопоточность. Пул потоков исполнения. Класс Thread и его члены. Создание потоков. Синхронизация потоков. Передача данных в поток и из потока. Обмены между потоками. Патерны асинхронного программирования: патерн опроса (polling), патерн ожидания, патерн ответного вызова. Механизм async/await. Возможности делегатов в параллельном программировании. Таймеры.
  • Регулярные выражения
    Регулярные выражения в командных языках и в языках программирования. Метасимволы и терминальные символы. Экранирование метасимволов. Подмножества метасимволов Директивы нулевой ширины. Квантификаторы жадные и ленивые. Группы регулярных выражений. Замены в тексте и деление текста на части. Особенности параметров метода Replace.
  • Введение в базы данных
    Программные интерфейсы для доступа к данным. Основы ADO.Net для работы с реляционной СУБД.
  • Введение в Web-приложения
    Введение в Web-разработку. Основные понятия: HTTP, HTML, CSS. Средства ASP.Net для построения Web-приложений.
Элементы контроля

Элементы контроля

  • неблокирующий Работа на семинаре (СР1_1)
    Применение операций языка (включая тернарную операцию) для решения простейших задач
  • неблокирующий Работа на семинаре (СР1_2)
    Применение циклов (в том числе вложенных) и других операторов языка.
  • неблокирующий Работа на семинаре (СР1_3 )
    Использование различных видов массивов (одномерные, многомерные, массивы массивов).
  • блокирующий Экзамен 1 (ЭО1)
  • неблокирующий Работа на семинаре (СР2_1)
    Применение класса, как контейнера для статических членов, декомпозиция на методы.
  • неблокирующий Работа на семинаре (СР2_2)
    Применение наследования для расширения и/или изменения поведения объектов классов.
  • неблокирующий Работа на семинаре (СР2_3)
    Применение виртуальных методов
  • неблокирующий Домашнее задание (КДЗ2)
    Контрольное домашнее задание на проектирование Windows Forms на три недели с взаимным оцениванием.
  • неблокирующий Контрольная работа (КР2)
    Контрольная работа по первому семестру
  • блокирующий Экзамен (ЭО2)
  • неблокирующий Работа на семинаре (СР3_1)
    Создание собственного класса исключений и его использование в библиотеке классов
  • неблокирующий Работа на семинаре (СР3_2)
    Использование лямбда-выражений и анонимных методов
  • неблокирующий Работа на семинаре (СР3_3)
    Использование стандартной модели обработки событий.
  • неблокирующий Работа на семинаре (СР3_4 )
    Использование обобщений
  • неблокирующий Домашнее задание (КДЗ3)
    Контрольное домашнее задание на проектирование Windows Forms / WPF на три недели.
  • неблокирующий Контрольная работа (КР3)
    Контрольная работа по материалам третьего модуля
  • неблокирующий Работа на семинаре (СР4_1)
    Использование сериализации
  • неблокирующий Работа на семинаре (СР4_2)
    Интерфейс IEnumerable и использование итераторов
  • неблокирующий Работа на семинаре (СР4_3)
    Использование LINQ
  • неблокирующий Контрольная работа (КР4)
    Контрольная работа по материалу четвертого модуля
  • блокирующий Экзамен (ЭО4)
    ТЕСТ в Microsoft и Moodle- с АСИНХРОННЫМ ПРОКТОРИНГОМ. затем контрольная работа на 1,5 часа (со сдачей в ЛМС ВШЭ). Технические требования: web-камера, микрофон, наушники / колонки
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (1 модуль)
    По всем видам работ выставляется 10-балльная оценка. Используются следующие условные обозначения: НО – накопленная оценка i-го модуля; ТП = (сумма баллов по проверкам i-го модуля) / (количество проверок в i-м модуле); текущая проверка может быть компьютерным тестом (до 10 вопросов) или самостоятельной работой по решению задач на компьютере; СР_ – оценка самостоятельной работы j в i-м модуле; КР – оценка контрольной i-го модуля; КДЗ – оценка контрольного домашнего задания i-го модуля; ЭК – оценка за экзаменационную контрольную работу (первая часть экзамена) i-го модуля; ЭТ – оценка за экзаменационный тест (вторая часть экзамена) i-го модуля; ЭО – экзаменационная оценка (является блокирующей) i-го модуля (задача и/или тест); ИО – итоговая оценка i-го модуля; Десятибалльная итоговая оценка в конце 1-го модуля (1-го семестра): ИО1 = Округление(0,6*ЭО1 + 0,4*НО1). НО1 = Округление(CP1_1 / 3 + CP1_2 / 3 + CP1_3 / 3). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО1 = Округление(0,5*ЭК1 + 0,5*ЭТ1), если min(ЭК1; ЭТ1)>3; иначе ЭО1 = min(ЭК1; ЭТ1). Здесь ЭК1 - экзаменационная контрольная первого модуля; ЭТ1 - экзаменационный тест первого модуля. ЭО1 = Округление(0,5*ЭК1 + 0,5*ЭТ1), если min(ЭК1; ЭТ1)>3; иначе ЭО1 = min(ЭК1; ЭТ1). Десятибалльная итоговая оценка семестра в конце 2-го модуля (1-го семестра): ИО2 = Округление(0,6*ЭО2 + 0,4*НО2). НО2 = Округление(0,3*(CP2_1 / 3 + CP2_2 / 3 + CP2_3 / 3) + 0,5*КP2 + 0,2*КДЗ). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО2 = Округление(0,5*ЭК2 + 0,5*ЭТ2), если min(ЭК2; ЭТ2)>3; иначе ЭО2 = min(ЭК2; ЭТ2). Здесь ЭК2 - экзаменационная контрольная второго модуля; ЭТ2 - экзаменационный тест второго модуля. ЭО2 = Округление(0,5*ЭК2 + 0,5*ЭТ2), если min(ЭК2; ЭТ2)>3; иначе ЭО2 = min(ЭК2; ЭТ2). Десятибалльная итоговая оценка семестра в конце 4-го модуля (2-го семестра): ИО4 = Округление(0,6*ЭО4 + 0,1*ЭО2 + 0,3*НО4). НО4 = Округление(0,1*(CP3_1 / 4 + CP3_2 / 4 + CP3_3 / 4 + CP3_4 / 4) + 0,2*КР3 + 0,15*(CP4_1 / 3 + CP4_2 / 3 + CP4_3 / 3) + 0,25*КР4 + 0,3*КДЗ3). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО4 = Округление(0,5*ЭК4 + 0,5*ЭТ4), если min(ЭК4; ЭТ4)>3; иначе ЭО4 = min(ЭК4; ЭТ4). Здесь ЭК4 - экзаменационная контрольная четвертого модуля; ЭТ4 - экзаменационный тест четвертого модуля. ЭО4 = Округление(0,5*ЭК4 + 0,5*ЭТ4), если min(ЭК4; ЭТ4)>3; иначе ЭО4 = min(ЭК4; ЭТ4). Экзаменационный тест (ЭТ) состоит из 40 вопросов и оценивается исходя из максимального количества правильных ответов (NMAX), полученных при прохождении теста всеми студентами курса. Оценка вычисляется по следующим правилам (N – количество правильных ответов): Если студент предоставил 10 и менее правильных ответов, то оценка за тест N/4. Если N>10 и 31<=NMAX<=40 то N*10/NMAX Если N>10 и 26<=NMAX<=30 то N*9/NMAX Если N>10 и 21<=NMAX<=25 то N*8/NMAX Если N>10 и 16<=NMAX<=20 то N*7/NMAX Если N>10 и 14<=NMAX<=15 то N*6/NMAX Если N>10 и 12<=NMAX<=13 то N*5/NMAX Если N>10 и NMAX=11 то 4 При пересдаче экзамена ИО = 0,6*ЭО + 0,4*НО. ЭО = Округление(0,5*ЭК + 0,5*ЭТ), если min(ЭК; ЭТ)>3; иначе ЭО = min(ЭК; ЭТ). Положительный результат, показанный на сдаче экзамена во втором модуле, может быть зачтен за результат пересдачи экзамена в первом модуле. Округление оценок, проставляемых в ведомости (ЭО, ИО), выполняется до целых значений по правилам математики (до ближайшего целого). При выставлении итоговых оценок по 5-балльной шкале используется правило: Если ИО >= 8, то ИО = 5 (“отлично”); Если 6 <= Оит < 8, то ИО = 4 (“хорошо”); Если 4 <= Оит < 6, то ИО = 3 (“удовлетворительно”); Если ИО < 4, то ИО = 2 (“неудовлетворительно”). Если экзамен состоит их двух частей (ЭК и ЭТ), то при отсутствии студента на одной из частей экзамена по уважительной причине – оценка, полученная по другой части экзамена, сохраняется. Отдельно, в специально выделенное время, пересдается только та часть экзамена, которая пропущена по уважительной причине. Итоговая оценка за второй семестр (ИО4) выставляется в диплом.
  • Промежуточная аттестация (2 модуль)
    По всем видам работ выставляется 10-балльная оценка. Используются следующие условные обозначения: НО – накопленная оценка i-го модуля; ТП = (сумма баллов по проверкам i-го модуля) / (количество проверок в i-м модуле); текущая проверка может быть компьютерным тестом (до 10 вопросов) или самостоятельной работой по решению задач на компьютере; СР_ – оценка самостоятельной работы j в i-м модуле; КР – оценка контрольной i-го модуля; КДЗ – оценка контрольного домашнего задания i-го модуля; ЭК – оценка за экзаменационную контрольную работу (первая часть экзамена) i-го модуля; ЭТ – оценка за экзаменационный тест (вторая часть экзамена) i-го модуля; ЭО – экзаменационная оценка (является блокирующей) i-го модуля (задача и/или тест); ИО – итоговая оценка i-го модуля; Десятибалльная итоговая оценка в конце 1-го модуля (1-го семестра): ИО1 = Округление(0,6*ЭО1 + 0,4*НО1). НО1 = Округление(CP1_1 / 3 + CP1_2 / 3 + CP1_3 / 3). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО1 = Округление(0,5*ЭК1 + 0,5*ЭТ1), если min(ЭК1; ЭТ1)>3; иначе ЭО1 = min(ЭК1; ЭТ1). Здесь ЭК1 - экзаменационная контрольная первого модуля; ЭТ1 - экзаменационный тест первого модуля. ЭО1 = Округление(0,5*ЭК1 + 0,5*ЭТ1), если min(ЭК1; ЭТ1)>3; иначе ЭО1 = min(ЭК1; ЭТ1). Десятибалльная итоговая оценка семестра в конце 2-го модуля (1-го семестра): ИО2 = Округление(0,6*ЭО2 + 0,4*НО2). НО2 = Округление(0,3*(CP2_1 / 3 + CP2_2 / 3 + CP2_3 / 3) + 0,5*КP2 + 0,2*КДЗ). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО2 = Округление(0,5*ЭК2 + 0,5*ЭТ2), если min(ЭК2; ЭТ2)>3; иначе ЭО2 = min(ЭК2; ЭТ2). Здесь ЭК2 - экзаменационная контрольная второго модуля; ЭТ2 - экзаменационный тест второго модуля. ЭО2 = Округление(0,5*ЭК2 + 0,5*ЭТ2), если min(ЭК2; ЭТ2)>3; иначе ЭО2 = min(ЭК2; ЭТ2). Десятибалльная итоговая оценка семестра в конце 4-го модуля (2-го семестра): ИО4 = Округление(0,6*ЭО4 + 0,1*ЭО2 + 0,3*НО4). НО4 = Округление(0,1*(CP3_1 / 4 + CP3_2 / 4 + CP3_3 / 4 + CP3_4 / 4) + 0,2*КР3 + 0,15*(CP4_1 / 3 + CP4_2 / 3 + CP4_3 / 3) + 0,25*КР4 + 0,3*КДЗ3). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО4 = Округление(0,5*ЭК4 + 0,5*ЭТ4), если min(ЭК4; ЭТ4)>3; иначе ЭО4 = min(ЭК4; ЭТ4). Здесь ЭК4 - экзаменационная контрольная четвертого модуля; ЭТ4 - экзаменационный тест четвертого модуля. ЭО4 = Округление(0,5*ЭК4 + 0,5*ЭТ4), если min(ЭК4; ЭТ4)>3; иначе ЭО4 = min(ЭК4; ЭТ4). Экзаменационный тест (ЭТ) состоит из 40 вопросов и оценивается исходя из максимального количества правильных ответов (NMAX), полученных при прохождении теста всеми студентами курса. Оценка вычисляется по следующим правилам (N – количество правильных ответов): Если студент предоставил 10 и менее правильных ответов, то оценка за тест N/4. Если N>10 и 31<=NMAX<=40 то N*10/NMAX Если N>10 и 26<=NMAX<=30 то N*9/NMAX Если N>10 и 21<=NMAX<=25 то N*8/NMAX Если N>10 и 16<=NMAX<=20 то N*7/NMAX Если N>10 и 14<=NMAX<=15 то N*6/NMAX Если N>10 и 12<=NMAX<=13 то N*5/NMAX Если N>10 и NMAX=11 то 4 При пересдаче экзамена ИО = 0,6*ЭО + 0,4*НО. ЭО = Округление(0,5*ЭК + 0,5*ЭТ), если min(ЭК; ЭТ)>3; иначе ЭО = min(ЭК; ЭТ). Положительный результат, показанный на сдаче экзамена во втором модуле, может быть зачтен за результат пересдачи экзамена в первом модуле. Округление оценок, проставляемых в ведомости (ЭО, ИО), выполняется до целых значений по правилам математики (до ближайшего целого). При выставлении итоговых оценок по 5-балльной шкале используется правило: Если ИО >= 8, то ИО = 5 (“отлично”); Если 6 <= Оит < 8, то ИО = 4 (“хорошо”); Если 4 <= Оит < 6, то ИО = 3 (“удовлетворительно”); Если ИО < 4, то ИО = 2 (“неудовлетворительно”). Если экзамен состоит их двух частей (ЭК и ЭТ), то при отсутствии студента на одной из частей экзамена по уважительной причине – оценка, полученная по другой части экзамена, сохраняется. Отдельно, в специально выделенное время, пересдается только та часть экзамена, которая пропущена по уважительной причине. Итоговая оценка за второй семестр (ИО4) выставляется в диплом.
  • Промежуточная аттестация (4 модуль)
    По всем видам работ выставляется 10-балльная оценка. Используются следующие условные обозначения: НО – накопленная оценка i-го модуля; ТП = (сумма баллов по проверкам i-го модуля) / (количество проверок в i-м модуле); текущая проверка может быть компьютерным тестом (до 10 вопросов) или самостоятельной работой по решению задач на компьютере; СР_ – оценка самостоятельной работы j в i-м модуле; КР – оценка контрольной i-го модуля; КДЗ – оценка контрольного домашнего задания i-го модуля; ЭК – оценка за экзаменационную контрольную работу (первая часть экзамена) i-го модуля; ЭТ – оценка за экзаменационный тест (вторая часть экзамена) i-го модуля; ЭО – экзаменационная оценка (является блокирующей) i-го модуля (задача и/или тест); ИО – итоговая оценка i-го модуля; Десятибалльная итоговая оценка в конце 1-го модуля (1-го семестра): ИО1 = Округление(0,6*ЭО1 + 0,4*НО1). НО1 = Округление(CP1_1 / 3 + CP1_2 / 3 + CP1_3 / 3). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО1 = Округление(0,5*ЭК1 + 0,5*ЭТ1), если min(ЭК1; ЭТ1)>3; иначе ЭО1 = min(ЭК1; ЭТ1). Здесь ЭК1 - экзаменационная контрольная первого модуля; ЭТ1 - экзаменационный тест первого модуля. ЭО1 = Округление(0,5*ЭК1 + 0,5*ЭТ1), если min(ЭК1; ЭТ1)>3; иначе ЭО1 = min(ЭК1; ЭТ1). Десятибалльная итоговая оценка семестра в конце 2-го модуля (1-го семестра): ИО2 = Округление(0,6*ЭО2 + 0,4*НО2). НО2 = Округление(0,3*(CP2_1 / 3 + CP2_2 / 3 + CP2_3 / 3) + 0,5*КP2 + 0,2*КДЗ). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО2 = Округление(0,5*ЭК2 + 0,5*ЭТ2), если min(ЭК2; ЭТ2)>3; иначе ЭО2 = min(ЭК2; ЭТ2). Здесь ЭК2 - экзаменационная контрольная второго модуля; ЭТ2 - экзаменационный тест второго модуля. ЭО2 = Округление(0,5*ЭК2 + 0,5*ЭТ2), если min(ЭК2; ЭТ2)>3; иначе ЭО2 = min(ЭК2; ЭТ2). Десятибалльная итоговая оценка семестра в конце 4-го модуля (2-го семестра): ИО4 = Округление(0,6*ЭО4 + 0,1*ЭО2 + 0,3*НО4). НО4 = Округление(0,1*(CP3_1 / 4 + CP3_2 / 4 + CP3_3 / 4 + CP3_4 / 4) + 0,2*КР3 + 0,15*(CP4_1 / 3 + CP4_2 / 3 + CP4_3 / 3) + 0,25*КР4 + 0,3*КДЗ3). Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО4 = Округление(0,5*ЭК4 + 0,5*ЭТ4), если min(ЭК4; ЭТ4)>3; иначе ЭО4 = min(ЭК4; ЭТ4). Здесь ЭК4 - экзаменационная контрольная четвертого модуля; ЭТ4 - экзаменационный тест четвертого модуля. ЭО4 = Округление(0,5*ЭК4 + 0,5*ЭТ4), если min(ЭК4; ЭТ4)>3; иначе ЭО4 = min(ЭК4; ЭТ4). Экзаменационный тест (ЭТ) состоит из 40 вопросов и оценивается исходя из максимального количества правильных ответов (NMAX), полученных при прохождении теста всеми студентами курса. Оценка вычисляется по следующим правилам (N – количество правильных ответов): Если студент предоставил 10 и менее правильных ответов, то оценка за тест N/4. Если N>10 и 31<=NMAX<=40 то N*10/NMAX Если N>10 и 26<=NMAX<=30 то N*9/NMAX Если N>10 и 21<=NMAX<=25 то N*8/NMAX Если N>10 и 16<=NMAX<=20 то N*7/NMAX Если N>10 и 14<=NMAX<=15 то N*6/NMAX Если N>10 и 12<=NMAX<=13 то N*5/NMAX Если N>10 и NMAX=11 то 4 При пересдаче экзамена ИО = 0,6*ЭО + 0,4*НО. ЭО = Округление(0,5*ЭК + 0,5*ЭТ), если min(ЭК; ЭТ)>3; иначе ЭО = min(ЭК; ЭТ). Положительный результат, показанный на сдаче экзамена во втором модуле, может быть зачтен за результат пересдачи экзамена в первом модуле. Округление оценок, проставляемых в ведомости (ЭО, ИО), выполняется до целых значений по правилам математики (до ближайшего целого). При выставлении итоговых оценок по 5-балльной шкале используется правило: Если ИО >= 8, то ИО = 5 (“отлично”); Если 6 <= Оит < 8, то ИО = 4 (“хорошо”); Если 4 <= Оит < 6, то ИО = 3 (“удовлетворительно”); Если ИО < 4, то ИО = 2 (“неудовлетворительно”). Если экзамен состоит их двух частей (ЭК и ЭТ), то при отсутствии студента на одной из частей экзамена по уважительной причине – оценка, полученная по другой части экзамена, сохраняется. Отдельно, в специально выделенное время, пересдается только та часть экзамена, которая пропущена по уважительной причине. Итоговая оценка за второй семестр (ИО4) выставляется в диплом.
Список литературы

Список литературы

Рекомендуемая основная литература

  • Биллиг В.А. - Основы программирования на C# - Национальный Открытый Университет "ИНТУИТ" - 2016 - 574с. - ISBN: - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100319
  • Тюкачев Н.А., Хлебостроев В.Г. - C#. Основы программирования: учебное пособие - Издательство "Лань" - 2018 - 272с. - ISBN: 978-5-8114-2567-9 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/104962

Рекомендуемая дополнительная литература

  • Марченко А.Л. - Введение в программирование на C# 2.0 - Национальный Открытый Университет "ИНТУИТ" - 2016 - 642с. - ISBN: 5-94774-628-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100697
  • Тюкачев Н.А., Хлебостроев В.Г. - C#. Алгоритмы и структуры данных: учебное пособие - Издательство "Лань" - 2018 - 232с. - ISBN: 978-5-8114-2566-2 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/104961