• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2019/2020

Программирование

Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Статус: Курс обязательный (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 1-й курс, 1-4 модуль
Формат изучения: Full time
Учебный ассистент: Белавенцев Валерий Евгеньевич, Веселко Никита Игоревич, Герасименко Евгений Ростиславович, Глушко Александр Александрович, Дубина Наталия Андреевна, Курылев Александр Дмитриевич, Лютиков Александр Сергеевич, Молдавский Денис Александрович, Петелин Максим Олегович, Федорова Алена Валерьевна
Язык: русский
Кредиты: 10

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

Аннотация

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

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

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

Результаты освоения дисциплины

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

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

  • Введение. О языках программирования и дисциплине (классификация языков, парадигмы программирования)
    Задачи, цели, содержание и порядок прохождения дисциплины. Данные и их типы. Тип в математике и в программировании. Парадигмы программирования. Абстракция классов и абстракция функциональная, декларативный и императивный подходы. Алгоритм и программа. Структурный подход к разработке алгоритмов. Процедурно-ориентированное программирование. Языки высокого уровня, поддерживающие процедурно-ориентированный подход. Объектно-ориентированное программирование. Типы, классы, объекты. Языки высокого уровня, поддерживающие объектно-ориентированный подход. Типы приложений. О языках программирования и дисциплине (классификация языков, парадигмы программирования). Первая программа на C#.
  • Принципы программирования на основе платформы .Net Framework
    Основные компоненты платформы .Net Framework: общеязыковая исполняющая среда (CLR) и библиотека классов (FCL). Управляемый код. Общая система типов (CTS) и общеязыковая спецификация (CLS). Типы значений, ссылочные типы и базовые типы в CLR и в языке C#. Виды приложений среды .NET. Интегрированная среда для разработки приложений. Проекты и решения, их создание и применения. Средства навигации (проводник решений). Структура исходного кода консольного приложения. Кодирование, трансляция, синтаксический анализ, отладка и исполнение простой программы.
  • Данные и типы
    Понятие типа данных. Пространство имен. Типы значений и типы ссылок. Базовые типы: предельные значения, свойства и методы. Константы, переменные, именованные константы. Типы С# как классы платформы .NET Framework. Понятие переменной. Проблема преобразования типов. Явное преобразование типов. Присваивание простое и составное. Проблема преобразования типов при присваивании. Инициализация переменных.
  • Операции и операторы
    Операнды и операции. Арифметические операции и выражения. Целочисленные арифметические выражения. Переполнения при операциях с целыми. Особые ситуации в арифметических выражениях. Логические операции и операции отношения. Логические выражения. Условная (тернарная) операция. Операции сдвигов. Особенности выполнения операции сдвига применительно к знаковым и беззнаковым типам. Битовые операции. Применение битовых операций для проверки состояния битов и установки битов в заданное значение. Приоритеты операций. Управляющие структуры. Блок операторов. Условные операторы. Вложенность управляющих структур. Множественное ветвление (переключатели). Циклы и средства управления итерациями.
  • Процедурная парадигма программирования
    Определение собственных классов. Статические члены класса. Доступность статических членов (полей и методов) из других классов. Статические поля только для чтения. Поля классов (статические поля). Статические константы. Статические методы. Статический конструктор. Правила инициализации статических полей. Методы–процедуры и методы-функции. Соотношение фиксированных параметров и аргументов. Время жизни параметров. Локальные переменные и локальные константы. Ключевое слово static для реализации класса, как контейнера для статических методов.
  • Массивы и их виды
    Одномерные массивы: объявление и инициализация. Доступ к элементу массива. Операции с массивом и элементами массива. Основные свойства и методы класса System.Array. Особенности операции присваивания применительно к ссылкам. Проблема потери ссылок. Сборка мусора. Многомерные массивы: объявление и инициализация. Доступ к элементу многомерного массива. Операции с массивом и элементами массива. Основные свойства и методы. Массивы ссылок на массивы. Объявление, создание и инициализация. Доступ к элементу. Операции с элементами массива ссылок на массивы. Массив с элементами типа object. Упаковка и распаковка значений. Динамическая идентификация типов.
  • Методы как основа реализации функциональных членов класса
    Параметры, передаваемые в методы: по значению и по ссылке. Параметры с типами ссылок. Выходные параметры. Умалчиваемые значения параметров. Именованные аргументы. Модификатор params для методов с переменным числом аргументов. Перегрузка методов. Сигнатура метода при перегрузке. Рекурсивные методы. Стековые фреймы. Хвостовая рекурсия. Особенности применения метода Array.Sort().
  • Класс как тип. Объекты и их члены
    Объявление класса. Поля объектов. Объявления методов объектов. Инкапсуляция полей и методов. Средства определения доступности полей и методов из других классов. Поля только для чтения. Конструктор экземпляров класса. Конструктор умолчания. Конструктор с параметрами. Перегрузка конструкторов. Поверхностное и глубокое копирование объектов. Конструктор копирования. Свойства классов как средство доступа к закрытым полям. Определение свойств, доступных по чтению и по записи. Ссылка this. Деструкторы и финализаторы. Принцип инкапсуляции и методы объектов. Автореализуемые свойства. Индексаторы. Индексаторы, имитирующие наличие в объекте контейнера. Массивы объектов классов, определяемых программистом. Частичные классы и методы.
  • Наследование классов
    Доступность членов класса при наследовании. Методы при наследовании. Копирование полей при присваивании. Конструктор умолчания. Абстрактные методы и абстрактные классы. Опечатанные классы и методы. Применение абстрактных классов. Наследование полей и методов. Порядок вызова конструкторов при создании объекта класса наследника. Служебное слово base. Передача аргументов конструктору базового класса. Переопределение полей. Переопределение методов. Виртуальные методы. Полиморфизм и его виды.
  • Визуальное проектирование приложений Windows Forms
    Формы, компоненты и элементов управления. Визуальное проектирование формы. Стандартные активные элементы графического пользовательского интерфейса: кнопки, флажки с зависимой фиксацией, флажки с независимой фиксацией, полосы прокрутки, панель индикации. Добавление элементов управления. Позиционирование элементов управления. Установка свойств формы и ее элементов. Связывание элементов формы со стандартными обработчиками событий. События от элементов формы, события клавиатуры и знако-координатных устройств (мышь). Программное изменение свойств элементов. Неотображаемые элементы (компоненты): таймер, всплывающие подсказки. Обработка событий от неотображаемых элементов. Многооконный интерфейс. Меню. Создание и отображение формы. Передача данных в подчиненную форму. Прием данных из подчиненной формы. Диалоговые окна.
  • Исключения
    Классификация ошибок. Классические способы обработки ошибок. Предварительная проверка параметров методов. Проверка кодов возвратов методов. О механизме исключений. Системные исключения и их обработка. Свойства исключений. Исключения при арифметических операциях. Перехват исключения. Блок обработки исключения. Использование нескольких блоков обработки исключения. Передача исключений во вложенных блоках. Передача исключений между методами. Управление программой с помощью исключений. Создание собственных исключений. Понятие объекта-исключения. Пользовательские классы исключений. Ретрансляция исключения.
  • Cтроки
    Строка символов – объект типа string. Операции присваивания, сравнения и конкатенации строк. Преобразование строки в значение базового типа и преобразование значения базового типа в строку. Строки при вводе-выводе. Схема ввода данных с помощью средств библиотеки .NET Framework. Возможности библиотечного метода 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)
Промежуточная аттестация

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

  • Промежуточная аттестация (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 - ISBN: - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/100319
  • - Тюкачев Н.А., Хлебостроев В.Г. — C#. Основы программирования: учебное пособие - Издательство "Лань" - 2018 - ISBN: 978-5-8114-2567-9 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/104962

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

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