Бакалавриат
2021/2022
Программирование на C#
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 1-3 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Горденко Мария Константиновна,
Дударев Виктор Анатольевич,
Степанов Андрей Николаевич,
Чуйкин Николай Константинович
Язык:
русский
Кредиты:
7
Контактные часы:
200
Программа дисциплины
Аннотация
Курс является базовым для последующих курсов, посвященных созданию современных информационных систем и направлен на формирование у студентов основных знаний в области разработки программных продуктов. С использованием современного языка программирования происходит знакомство с базовыми аспектами различных парадигм программирования. На практических занятиях с использованием современных интегрированных инструментальных сред закрепляются основные приемы программирования и вырабатывается навыки, необходимые для успешного решения задач.
Цель освоения дисциплины
- Обеспечить студентов базовыми знаниями в области разработки программных продуктов.
- Заложить основы для последующих курсов, посвященных созданию современных информационных систем.
- Познакомить студентов с прогрессивными парадигмами программирования и механизмами их реализации в программных продуктах.
- Обучить студентов применению современных интегрированных инструментальных сред, предназначенных для разработки программ в интерактивном режиме.
- Привить студентам навыки исследовательской работы, предполагающей самостоятельное изучение специфических инструментов и средств, необходимых для решения именно той конкретной проблемы, которая в качестве задачи поставлена перед ними.
Планируемые результаты обучения
- Знать базовые типы и основные операции
- Знать возможности препроцессора и уметь использовать рефлексию
- Знать механизм исключений и уметь его использовать
- Знать основные отношения между классами
- Знать основы программного доступа к реляционным данным
- Знать основы проектирования Web-приложений
- Знать особенности структур и перечислений как значимых типов
- Знать принципы работы управляемого кода в .Net
- Знать синтаксис определения методов и их параметров
- Овладеть парадигмой многопоточного и асинхронного программирования
- Овладеть событийно-ориентированной разработкой приложений
- Представлять историю развития языков программирования и основные парадигмы
- Применять делегаты для организации безопасных ссылок на методы
- Применять потоки для работы с файловой системой
- Применять язык интегрированных запросов (LINQ)
- Создавать и применять итераторы в задачах обработки коллекций данных
- Уметь использовать анонимные методы и лямбда-выражения
- Уметь использовать обобщенную парадигму программирования
- Уметь использовать процедурную парадигму для решения задач
- Уметь использовать различные структуры данных (стек, очередь, словарь, список) для решения практических задач
- Уметь перегружать операции для пользовательских типов
- Уметь применять наследование классов для изменения их функциональности
- Уметь применять регулярные выражения для обработки текстовой информации
- Уметь применять сериализацию и десериализацию графов объектов
- Уметь применять условные операторы и операторы циклов
- Уметь проектировать приложения на основе Windows Forms
- Уметь разрабатывать определение класса, как шаблона для создаваемых объектов
- Уметь решать задачи с использованием массивов
- Уметь создавать и применять интерфейсы для построения приложений со слабой связностью между типами
Содержание учебной дисциплины
- Введение. О языках программирования и дисциплине (классификация языков, парадигмы программирования)
- Принципы программирования на основе платформы .Net
- Данные и типы
- Операции и операторы
- Процедурная парадигма программирования
- Массивы и их виды
- Методы как основа реализации функциональных членов класса
- Класс как тип. Объекты и их члены
- Наследование классов
- Визуальное проектирование приложений Windows Forms
- Исключения
- Делегаты
- Анонимные методы, лямбда-выражения
- События
- Абстрактные типы данных
- Отношения между классами: вложение, композиция, агрегация
- Интерфейсы
- Перечисления и структуры – типы значений
- Обобщенное программирование
- Потоковый ввод-вывод. Работа с файловой системой
- Сериализация
- Небезопасный код и препроцессорные директивы C#. Рефлексия и атрибуты
- Перегрузка операций
- Коллекции и итераторы
- Язык интегрированных запросов LINQ и элементы функционального программирования
- Асинхронные методы и параллельные программы
- Регулярные выражения
- Введение в базы данных
- Введение в Web-приложения
Элементы контроля
- Работа на семинаре (СР1_1)Применение операций языка (включая тернарную операцию) для решения простейших задач
- Работа на семинаре (СР1_2)Применение циклов (в том числе вложенных) и других операторов языка.
- Работа на семинаре (СР1_3 )Использование различных видов массивов (одномерные, многомерные, массивы массивов).
- Экзамен 1 (ЭО1)Дистанционный экзамен в форме контеста.
- Работа на семинаре (СР2_1)Применение класса, как контейнера для статических членов, декомпозиция на методы.
- Работа на семинаре (СР2_2)Применение наследования для расширения и/или изменения поведения объектов классов.
- Работа на семинаре (СР2_3)Применение виртуальных методов
- Экзамен (ЭО2)Тест в LMS Moodle (et.hse.ru) с асинхронным прокторингом, затем контрольные задачи (контест). Технические требования: web-камера, микрофон, наушники / колонки.
- Работа на семинаре (СР3_1)Создание собственного класса исключений и его использование в библиотеке классов
- Работа на семинаре (СР3_2)Использование лямбда-выражений и анонимных методов
- Работа на семинаре (СР3_3)Использование стандартной модели обработки событий.
- Работа на семинаре (СР3_4 )Использование обобщений
- Работа на семинаре (СР3_5)Использование сериализации
- Работа на семинаре (СР3_6)Интерфейс IEnumerable и использование итераторов
- Работа на семинаре (СР3_7)Использование LINQ
- Экзамен (ЭО3)Тест в LMS Moodle (et.hse.ru) с асинхронным прокторингом, затем контрольные задачи (контест). Технические требования: web-камера, микрофон, наушники / колонки.
- Работа на семинаре (СР1_4)Использование одномерных массивов для хранения значимых и ссылочных типов.
- Работа на семинаре (СР1_5)Особенности применения сложных массивов (многомерных, вложенных) для решения задач.
- Работа на семинаре (СР1_6)Применение простейших статических методов для записи и чтения текстовых и бинарных файлов. Понятие кодировки.
- Работа на семинаре (СР2_4)Использование иерархии наследования в исключениях. Обработка ошибок времени исполнения
- Работа на семинаре (СР2_5)Разработка приложений с графическим пользовательским интерфейсом на основе технологии Windows Forms
- Работа на семинаре (СР2_6)Разработка приложений с графическим пользовательским интерфейсом на основе технологии Windows Presentation Foundation c использованием декларативной XAML-разметки
Промежуточная аттестация
- 2021/2022 учебный год 1 модульПо всем видам работ выставляется 10-балльная оценка. Используются следующие условные обозначения: НО – накопленная оценка i-го модуля; СР_
– оценка самостоятельной работы j в i-м модуле (может быть дана в форме контеста, письменного задания cо взаимным оцениванием или теста); ЭК – оценка за экзаменационную контрольную работу (первая часть экзамена) i-го модуля; ЭТ – оценка за экзаменационный тест (вторая часть экзамена) i-го модуля; ЭО – экзаменационная оценка (является блокирующей после 1-го модуля) i-го модуля (задача и/или тест); ИО – итоговая оценка i-го модуля; Десятибалльная итоговая оценка в конце 1-го модуля (1-го семестра): ИО1 = Округление(0,5*ЭО1 + 0,5*НО1). НО1 = (CP1_1 + CP1_2 + CP1_3 + CP1_4 + CP1_5 + CP1_6) / 6. Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО1 = 0,5*ЭК1 + 0,5*ЭТ1, если min(ЭК1; ЭТ1)>=3,5; иначе ЭО1 = min(ЭК1; ЭТ1). Здесь ЭК1 - экзаменационная контрольная первого модуля; ЭТ1 - экзаменационный тест первого модуля. Допускается добавление в накопленную оценку студента бонусных баллов за проявление активности на занятиях (решение доп. задач, подготовка докладов и т.п.). Виды активностей и цели могут быть определены преподавателем практических занятий самостоятельно, однако, суммарный вклад бонусных баллов не может поднять накопленную оценку более чем на 2 балла (при этом накопленная оценка не может превысить 10 баллов). При пересдаче экзамена ИО = Округление(0,5*ЭО + 0,5*НО). ЭО = 0,5*ЭК + 0,5*ЭТ, если min(ЭК; ЭТ)>=3,5; иначе ЭО = min(ЭК; ЭТ). Округление оценок, проставляемых в ведомости (ИО), выполняется до целых значений по правилам математики (до ближайшего целого). При выставлении итоговых оценок по 5-балльной шкале используется правило: Если ИО <= 8, то ИО = 5 (“отлично”); Если 6 <= ИО < 8, то ИО = 4 (“хорошо”); Если 4 <= ИО < 6, то ИО = 3 (“удовлетворительно”); Если ИО < 4, то ИО = 2 (“неудовлетворительно”). Если экзамен состоит их двух частей (ЭК и ЭТ), то при отсутствии студента на одной из частей экзамена по уважительной причине – оценка, полученная по другой части экзамена, сохраняется. Отдельно, в специально выделенное время, пересдается только та часть экзамена, которая пропущена по уважительной причине. Итоговая оценка за третий модуль (ИО3) выставляется в диплом. Возможно проведение контрольных и экзаменационных мероприятий в дистанционном режиме в соответствии с текущей эпидемиологической ситуацией и соответствующими нормативными актами. - 2021/2022 учебный год 2 модульПо всем видам работ выставляется 10-балльная оценка. Используются следующие условные обозначения: НО – накопленная оценка i-го модуля; СР_
– оценка самостоятельной работы j в i-м модуле (может быть дана в форме контеста, письменного задания cо взаимным оцениванием или теста); ЭК – оценка за экзаменационную контрольную работу (первая часть экзамена) i-го модуля; ЭТ – оценка за экзаменационный тест (вторая часть экзамена) i-го модуля; ЭО – экзаменационная оценка (является блокирующей после первого модуля) i-го модуля (задача и/или тест); ИО – итоговая оценка i-го модуля; Десятибалльная итоговая оценка семестра в конце 2-го модуля (1-го семестра): ИО2 = Округление(0,5*ЭО2 + 0,5*НО2). НО2 = (CP2_1 + CP2_2 + CP2_3 + CP2_4 + CP2_5 + CP2_6) / 6. Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО2 = 0,5*ЭК2 + 0,5*ЭТ2, если min(ЭК2; ЭТ2)>=3,5; иначе ЭО2 = min(ЭК2; ЭТ2). Здесь ЭК2 - экзаменационная контрольная второго модуля; ЭТ2 - экзаменационный тест второго модуля. Допускается добавление в накопленную оценку студента бонусных баллов за проявление активности на занятиях (решение доп. задач, подготовка докладов и т.п.). Виды активностей и цели могут быть определены преподавателем практических занятий самостоятельно, однако, суммарный вклад бонусных баллов не может поднять накопленную оценку более чем на 2 балла (при этом накопленная оценка не может превысить 10 баллов). Экзаменационный тест (ЭТ) состоит из 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,5*ЭО + 0,5*НО). ЭО = 0,5*ЭК + 0,5*ЭТ, если min(ЭК; ЭТ)>=3,5; иначе ЭО = min(ЭК; ЭТ). Положительный результат, показанный на сдаче экзамена во втором модуле, может быть зачтен за результат пересдачи экзамена в первом модуле. Округление оценок, проставляемых в ведомости (ИО), выполняется до целых значений по правилам математики (до ближайшего целого). При выставлении итоговых оценок по 5-балльной шкале используется правило: Если ИО <= 8, то ИО = 5 (“отлично”); Если 6 <= ИО < 8, то ИО = 4 (“хорошо”); Если 4 <= ИО < 6, то ИО = 3 (“удовлетворительно”); Если ИО < 4, то ИО = 2 (“неудовлетворительно”). Если экзамен состоит их двух частей (ЭК и ЭТ), то при отсутствии студента на одной из частей экзамена по уважительной причине – оценка, полученная по другой части экзамена, сохраняется. Отдельно, в специально выделенное время, пересдается только та часть экзамена, которая пропущена по уважительной причине. Итоговая оценка за третий модуль (ИО3) выставляется в диплом. Возможно проведение контрольных и экзаменационных мероприятий в дистанционном режиме в соответствии с текущей эпидемиологической ситуацией и соответствующими нормативными актами. - 2021/2022 учебный год 3 модульПо всем видам работ выставляется 10-балльная оценка. Используются следующие условные обозначения: НО – накопленная оценка i-го модуля; СР_
– оценка самостоятельной работы j в i-м модуле (может быть дана в форме контеста, письменного задания cо взаимным оцениванием или теста); ЭК – оценка за экзаменационную контрольную работу (первая часть экзамена) i-го модуля; ЭТ – оценка за экзаменационный тест (вторая часть экзамена) i-го модуля; ЭО – экзаменационная оценка (является блокирующей после первого модуля) i-го модуля (задача и/или тест); ИО – итоговая оценка i-го модуля; Десятибалльная итоговая оценка в конце модуля: ИО = Округление(0,5*ЭО + 0,5*НО). НО = (CP3_1 + CP3_2 + CP3_3 + CP3_4 + CP3_5 + CP3_6 + CP3_7) / 7. Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО = 0,5*ЭК + 0,5*ЭТ, если min(ЭК; ЭТ)>=3,5; иначе ЭО = min(ЭК; ЭТ). Здесь ЭК - экзаменационная контрольная модуля; ЭТ - экзаменационный тест модуля. Допускается добавление в накопленную оценку студента бонусных баллов за проявление активности на занятиях (решение доп. задач, подготовка докладов и т.п.). Виды активностей и цели могут быть определены преподавателем практических занятий самостоятельно, однако, суммарный вклад бонусных баллов не может поднять накопленную оценку более чем на 2 балла (при этом накопленная оценка не может превысить 10 баллов). При пересдаче экзамена ИО = Округление(0,5*ЭО + 0,5*НО). ЭО = 0,5*ЭК + 0,5*ЭТ, если min(ЭК; ЭТ)>=3,5; иначе ЭО = min(ЭК; ЭТ). Округление оценок, проставляемых в ведомости (ИО), выполняется до целых значений по правилам математики (до ближайшего целого). При выставлении итоговых оценок по 5-балльной шкале используется правило: Если ИО <= 8, то ИО = 5 (“отлично”); Если 6 <= ИО < 8, то ИО = 4 (“хорошо”); Если 4 <= ИО < 6, то ИО = 3 (“удовлетворительно”); Если ИО < 4, то ИО = 2 (“неудовлетворительно”). Если экзамен состоит их двух частей (ЭК и ЭТ), то при отсутствии студента на одной из частей экзамена по уважительной причине – оценка, полученная по другой части экзамена, сохраняется. Отдельно, в специально выделенное время, пересдается только та часть экзамена, которая пропущена по уважительной причине. Итоговая оценка за третий модуль (ИО3) выставляется в диплом. Возможно проведение контрольных и экзаменационных мероприятий в дистанционном режиме в соответствии с текущей эпидемиологической ситуацией и соответствующими нормативными актами.
Список литературы
Рекомендуемая основная литература
- C# 4.0. Полное руководство, Шилдт, Г., 2014
- Биллиг, В. А. Основы программирования на C# : учебное пособие / В. А. Биллиг. — 2-е изд. — Москва : ИНТУИТ, 2016. — 574 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100319 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Тюкачев Н.А., Хлебостроев В.Г. - C#. Основы программирования: учебное пособие - Издательство "Лань" - 2018 - 272с. - ISBN: 978-5-8114-2567-9 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/104962
Рекомендуемая дополнительная литература
- Марченко, А. Л. Введение в программирование на C# 2.0 : учебное пособие / А. Л. Марченко. — 2-е изд. — Москва : ИНТУИТ, 2016. — 642 с. — ISBN 5-94774-628-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100697 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- С#: программирование для профессионалов, Скит, Дж., 2011
- Тюкачев Н.А., Хлебостроев В.Г. - C#. Алгоритмы и структуры данных: учебное пособие - Издательство "Лань" - 2018 - 232с. - ISBN: 978-5-8114-2566-2 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/104961