2. Курс http://bit.ly/konturcourses
Тестовое задание http://bit.ly/konturtest
Стажировка http://bit.ly/konturintern
Блог на хабре http://bit.ly/konturhabr
Тусовочка http://bit.ly/konturlife
Бонус http://bit.ly/nerickroll
3. Программа курса
Первый семестр
• Введение в C#
• Начало работы: работа в Visual Studio, типы данных, методы
• Ошибки компиляции, выполнения, стилистические. Рефакторинг
• Ветвления
• Циклы while, for
• Массивы, особенности работы с ссылочными типами и типами-значениями, цикл
foreach
• Коллекции List и Dictionary, строки, работа с файлами - понемногу о самом важном
• Тестирование: модульное и функциональное, написание тестов, покрытие тестами
• Алгоритмы
• Сложность алгоритма: основные понятия, О-символика.
• Рекурсивные алгоритмы. Стратегия “разделяй и властвуй”. Перебор подмножеств,
перестановок и сочетаний. Переборное решение задачи коммивояжера и задачи
разбиение.
• Линейный и бинарный поиск, сортировка пузырьком, слиянием и быстрая: алгоритмы,
оценка сложности, экспериментальное сравнение быстродействия.
• Основы ООП
• Классы и объекты, динамические и статические поля и методы
• Наследование, идеология базовых классов, интерфейсы, начала полиморфизма
• Целостность данных: свойства, readonly поля, конструкторы
• Структуры: особенности работы собственных ссылочных типов
Второй семестр
• Структуры данных
• Стэки и очереди, примеры алгоритмов, дженерик-реализация
• Конструкция yield return
• Тонкости реализации классов List и Dictionary: Equals, GetHashCode, хэширующие
функции и их применение в алгоритмах
• Элементы функционального программирования
• Делегаты
• Функциональный подход к программированию. Внутренняя реализация LINQ
• LINQ
• Алгоритмы
• Понятия графа, основные определения, обход в ширину и глубину, алгоритмы Кана и
Тарьяна
• Жадные алгоритмы: планирование встреч, алгоритм Краскала, алгоритм Дейкстры
• Динамическое программирование: планирование встреч, расстояние Левенштейна,
алгоритм Форда-Баллмана, подсчет количества комбинаторных объектов
• Очередь с приоритетами, модифицированный алгоритм Дейкстры, бинарное дерево
поиска, двоичные кучи
• Оконные приложения
• Событийная модель и события
• Оконные приложения на Windows Forms
• Начала асинхронного программирования
• Дополнительные главы
• Рефлексия типов
4.
5.
6. Курс
• 2 семестра;
• 1 видеолекция в неделю (смотрите когда хотите);
• Онлайн-проверка практических заданий (делайте когда хотите);
• 1 практика в неделю со сдачей практических задач;
• 1 семинар раз в 2 недели с разбором лекций и задач;
• 150 человек и Екатеринбурге (Мат.Мех. УрФУ);
• 20 человек в Ижевске (ИжГТУ);
7. Стажировка
• 6 лет программе стажировки;
• Стажировка в Екатеринбурге или в Ростове;
• Полная занятость на время стажировки;
• Зарплата зависит от навыков стажера, их соответствия
требованием команды и варьируется от 20 000 до 30 000 р.;
• Безлимитные плюшки, булочки, фрукты, чай и кофе;
• Приём заявок с 1 февраля;
8.
9. Тестовое задание. Тетрис
Кратко
Нужно смоделировать игру в тетрис на языке C#. На вход мы подадим размеры стакана (игрового поля), последовательность падающих фигурок и
последовательность команд по управлению фигурками. Твоя программа должна эффективно моделировать передвижение фигурок по правилам
тетриса и уметь считать заработанные очки.
Но задача была бы слишком стандартной в таком виде! Поэтому вот дополнительные требования — все классы в решении должны быть
неизменяемыми. В частности, все поля должны быть помечены модификатором readonly, а сеттеры свойств закрыты. Из сторонних библиотек
используй System.Collections.Immutable для моделирования игрового поля и Newtonsoft.Json для чтения входных данных. Разберись самостоятельно с
этими библиотеками и концепцией неизменяемости.
Наши приоритеты при оценке:
• Корректность решения;
• Скорость работы и чистота кода.
Проверка автоматизирована, поэтому строго соблюдай все требования, описанные ниже.
Бонусом будет использование LINQ там, где это уместно. Это встроенный в C# язык манипулирования данными, познакомиться с которым можно в этом
онлайн практикуме. Рекомендуем пройти его, даже если ты знаком с LINQ, это займет пару часов и точно будет полезно!