Программирование на .NET
Санкт-Петербург, осень 2017
Описание
Курс имеет целью дать общее представление о программировании под .NET: что такое вообще .NET и зачем он нужен, что он работает не только на Windows, про язык C#, его особенности и отличия от других языков, кратко про язык F# (потому что не только на C# можно программировать под .NET). Будет немного про известные библиотеки и технологии, будут также практические занятия и домашние работы. Будут лекции приглашённых докладчиков – опытных .NET-программистов, которые расскажут об особенностях и тонкостях использования технологии.
Курс ориентирован на людей, владеющих ООП и освоивших хотя бы один объектно-ориентированный язык программирования (С++ и/или Java). Также очень желательно представление о функциональном программировании, чтобы часть курса про F# была понятна.
Оценка за курс выставляется по формуле сумма баллов за домашние задания, приведённая в диапазон от 0 до 5 + оценка за экзамен, приведённая в диапазон от 0 до 2
. За каждую домашнюю работу выставляются баллы от 0 до 10, баллы за задания, сданные после дедлайна, ополовиниваются. Решения можно исправлять и после дедлайна, повышая баллы, но максимальный балл определяется состоянием решения на момент дедлайна (например, если на момент дедлайна реализована только половина функциональности, за задачу нельзя получить больше 5 баллов). Таким образом, если сдать все домашние задания идеально и в срок, на экзамен идти не надо, если не делать домашних заданий вообще, курс не сдать.
Преподаватели
Список лекций
Базовые знания о C#, чтобы можно было начать программировать. - краткое введение о платформе .NET и языке C# - Hello, world на C# - Особенности синтаксиса, элементраные типы - Ссылочные типы и типы-значения, объявление классов и структур, разница с Java - Модификаторы видимости классов и членов класса, наследование, интерфейсы и абстрактные классы, base, касты. - virtual, override, new method, partial, sealed - Преобразование типов
Знакомство с библиотекой, виртуальной машиной, CLI, CLR и т.д. и т.п. Mono, .NET Core. NuGet. Запуск кода, верификация, байндинг-редиректы, appConfig/webConfig, безопасность (trust), AppDomains.
Лекция приглашённого докладчика Андрея Акиньшина
Исключения. Блоки try, catch, finally. Иерархия библиотечных классов-исключений, свойства Exception. Перебрасывание исключений, best practices по поводу объявления исключений, особенности. Модульное тестирование на C#: NUnit/MS Unit Testing Framework, Mock-объекты и NSubstitute. Best Practices по написанию юнит-тестов.
Контейнеры, итераторы, стандартные контейнеры с особенностями их использования, генерики в .net, написание своих генериков: параметрический полиморфизм, вариантность.
Делегаты, мультикастинг, Func/Action, event, анонимные методы, лямбда-выражения, замыкание, каноничное объявление события, ключевые слова add и remove.
Демонстрация вживую
:
- рассказ про шаблон для WinForms-приложений в Visual Studio (там же рассказ про особенности, не встречавшиеся ранее, например, регионы или partial-классы)
- события и обработчики
- библиотечные контролы (очень кратко)
- лейауты (Anchor, Dock, TableLayout)
- невизуальные контролы (на примере таймера)
Сборка мусора в .NET: mark and sweep, поколения, роежимы сборщика мусора (workstation/server, параллельный/batch), настройка сборки мусора, управление временем жизни объектов, слабые ссылки. Финализаторы, IDisposable.
Внутреннее представление строк, интернирование. Unsafe, fixed, работа с указателями.
Введение, общий обзор концепций F#. Основные конструкции: let, типы, конструкторы типов, таплы. Подробно про функциональные типы. Рекурсия, взаимная рекурсия. Лямбда-функции. Операторы |> и >>. Частичное применение. matching. Ленивые типы данных, seq. Записи, discriminated union-ы. Хвостовая рекурсия, аккумулятор, CPS.
Типы в F#. Автоматическое обобщение, стандартные генерик-функции, словари операций, касты, вывод типов, value restriction, point-free. ООП.
Computation expressions. Workflow, Builder, монады, моноиды и эндоморфизмы. Async, операции внутри async, обработка исключений (Async.Catch), отмена операций
При подготовке к ответу можно пользоваться источниками, но будут дополнительные вопросы, которые могут быть по любому пункту из списка.
Оценку отлично
автоматом получают все, набравшие в сумме за домашние работы более 60 баллов, им на экзамен можно не приходить.
Оценку хорошо
автоматом получают все, кто набрал более 47 баллов, оценку удовлетворительно
--- более 35 баллов. Если эта оценка устраивает, на экзамен тоже можно не приходить, но экзамен даёт возможность повысить оценку. Все, у кого за домашние работы в сумме менее 10 баллов, на экзамен тоже могут не приходить, в этом случае выставляется оценка неудовлетворительно
.