forked from x4m/x4m.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprogram.html
More file actions
111 lines (93 loc) · 44.1 KB
/
program.html
File metadata and controls
111 lines (93 loc) · 44.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta name="description" content="x4m.github.io : " />
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<script src="javascripts/jquery-2.1.1.min.js"></script>
<script src="javascripts/jquery.expander.js"></script>
<title>x4m.github.io</title>
</head>
<body>
<!-- HEADER -->
<div id="header_wrap" class="outer">
<header class="inner">
<a id="forkme_banner" href="https://github.com/x4m">View on GitHub</a>
<h1 id="project_title">x4m.github.io</h1>
<h2 id="project_tagline"></h2>
</header>
</div>
<!-- MAIN CONTENT -->
<div id="main_content_wrap" class="outer">
<section id="main_content" class="inner">
<h2>
<a name="hello-world" class="anchor" href="#hello-world"><span class="octicon octicon-link"></span></a>План</h2>
<p>
<a href="Учебный план 2015.xlsx">Общий план в XLSX</a>
</p>
<hr>
<p><h3>Лабораторные</h3></p>
<div class="expandable"><p><strong>Задание А1. Системы контроля версий</strong> <br/>Цель задания: ознакомление с системой контроля версий Git через TortoiseGit или GitHub for Windows<br/>Для выполнения задания необходимо:<br/>0. Установить tortoiseGit https://code.google.com/p/tortoisegit/ и требуемые ему компоненты (Git for Windows)или установить программу GitHub for Windows: https://windows.github.com/<br/>1. Зарегистрироваться на сайте github.com<br/>2. Найти на сайте мой аккаунт x4m<br/>3. Найти в нём репозитарий prog2015<br/>4. Создать fork репозитария<br/>5. В репозитарии создать ветку с названием, отличным от master<br/>6. Переключиться в созданную ветку (switch)<br/>7. Создать в рабочей папке файл со своим никнеймом и расширением txt в папке "List"<br/>8. Закоммитить файл в созданную вами ветку<br/>9. Слить созданную вами ветку с веткой master в репозитарии prog2015<br/>10. Синхронизовать изменения с репозитарием на сайте (push)<br/>11. Создать pull-request со сделанными вами изменениями в мой репозитарий<br/>Информация относительно регистрации:<br/>Вам не обязательно указывать свои личные данные (имя, фамилия, группа и т.п.)<br/>Вы можете сдавать лабораторные под вашим никнеймом, соответствие будет установлено непосредственно перед экзаменом.<br/>Для связи со мной проще всего использовать сервис vk.com по адресу http://vk.com/amborodin либо почту amborodin@acm.org<br/>Все лабораторные сдаются исключительно через github. <br/>Я не буду рассматривать ваши файлы, присланные электронной почтой.<br/>Код лабораторных вы коммитите в форк репозитария prog2015, я просматриваю ваши изменения и отмечаю сданные лабораторные комментарием.<br/>По возможности из комментариев буду переносить информацию в файлы, которые вы создаёте в работе А1.</p><hr/></div>
<div class="expandable"><p><strong>Задание A2. Сбор данных</strong> <br/>Цель: создание приложения сбора данных.<br/>Вам нужно создать приложение, которое позволит пользователю хранить данные выбранной вами предметной области в файле.<br/>Ваше приложение содержит главную форму, на которой располагаются средства управления и кнопки "Сохранить в файл" и "Загрузить из файла".<br/>Данные сохраняются в формате XML при помощи механизма XML-сериализации.<br/>Рекомендации по выбору предметной области:<br/>Допустим, вы выбрали предметную область "Заполнение штрафа инспектором ГИБДД". <br/>Тогда на вашей форме должен быть TextBox для ввода ФИО инспектора, ФИО нарушителя, описания нарушения и места нарушения.<br/>Также должен быть TextBox с маской для ввода номера автомобиля. DateEdit для ввода даты. ListBox для ввода свидетелей и понятых (количество не известно заранее).<br/>Ваша программа должна предусматривать возможность сохранить все эти данные в файл и считать их из файла.<br/>Допустим, вы выбрали предметную область "Карта осмотра пациента врачём".<br/>Тогда ваша программа будет собирать информацию о ФИО, СНИЛС, номере полиса и месте осмотра.<br/>Также у вас будет лист с перечислением диагнозов и назначенного по поводу диагноза лечения (и то и другое строка).<br/>Количество диагнозов заранее неизвестно.<br/>Требование к выбранной предметной области:<br/>0. В выбранной предметной области должна быть частица смысла из реального мира. Не надо собирать информацию о сепуляции сепулькариев.<br/>1. Должны быть представлены разные типы данных: строки, целые числа, дробные числа, даты, перечисления, списки. <br/>Но смысл важнее. Если в вашей предметной области нет дат и дробных чисел - так тому и быть.<br/>2. Списки должны быть в каждой предметной области. Даже если в этом нет смысла.<br/>Собираемые вами данные должны иметь динамически расширяемый набор чего-либо.<br/>Инспектор ГИБДД должен получить возможность ввести миллион разных свидетелей.<br/>Врач может ввести всю МКБ ВОЗ (классификацию болезней), при желании - по нескольку раз.<br/>3. Использование примеров в качестве предметной области не допускается.</p><hr/></div>
<div class="expandable"><p><strong>Задание А3. Печатные формы</strong> <br/>Создание печатной формы.<br/>В созданную вами программу в задании А2 нужно добавить возможность напечатать на принтере введённые пользователем данные.<br/>Для этого нужно установить компоненты создания печатных форм DevExpress с сайта https://www.devexpress.com/. В этом задании вам понадобится только XtraPrinting.<br/>На время установки DevExpress Visual Studio необходимо закрыть.<br/>0. После установки компонента, откройте Solution вашей программы.<br/>1. Создайте в проекте источник данных на основе вашего корневого класса данных.<br/>2. Создайте в проекте новую печатную форму (XtraReport).<br/>3. Выберите в качестве источника данных созданный ранее источник данных (шаг 1)<br/>4. Дабавтье секцию строк (details band) для ваших динамических данных<br/>5. Статические данные разместите в шапке отчёта (report header) и в подвале отчёта (report footer)<br/>6. Создайте на главной форме кнопку с кодом вызова печатной формы</p><hr/></div>
<div class="expandable"><p><strong>Задание B1. Запись данных в базу данных</strong> <br/>Данная лабораторная работа демонстрирует оперирование сущностями БД с применением Entity Framework 6.<br/>0. Для выполнения данной лабораторной работы перенесите код описывающий ваши классы данных в отдельный проект.<br/>1. В этом проекте добавьте ссылки на EntityFramework 6.0(через nuget, также добавится ссылка на EntityFramework.SqlServer)<br/>2. Остлаьные требуемые библиотеки при необходимости вам поможет подключить ReSharper<br/>3. Создайте секций настроек проекта (Settings) в свойствах проекта.<br/>4. В файле app.config определите соединени с базой данных<br/><?xml version="1.0" encoding="utf-8"?><br/><configuration><br/> <connectionStrings><br/> <add name="Store" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Store;Integrated Security=SSPI;" providerName="System.Data.SqlClient" /><br/> </connectionStrings><br/></configuration><br/>5. Добавьте в корневой класс идентфицирующую информацию (id, дату заполнения, название)<br/>Идентификаторы добавьте во всех классы данных.<br/>6. Создайте класс с описанием модели вашей базы данных<br/>public class StoreContext : DbContext<br/>{<br/> public StoreContext() : base("name=Store") { }<br/> public DbSet<Product> Products { get; set; }<br/>}<br/>7. Добавьте в интерфейс кнопку сохранения в БД и чтения из БД.<br/>Кнопка сохранения в БД открывает диалог ввода названия, кнопка чтения из БД открывает список сохранённых корневых объектов данных<br/>8. Создайте данные в БД и проверьте их наличие в физической СУБД через Server Explorer</p><hr/></div>
<div class="expandable"><p><strong>Задание B2. Отображение данных на WEB странице</strong> <br/>0. Создайте проект веб-сайта на MVC 5 <br/>1. Создайте контроллер для корневой сущности данных<br/>2. Создайте два представления: список и детали<br/>3. В представлении сущности отобразите всю информацию, включенную в ваш корневой класс данных<br/>4. В списке отобразите только идентифицирующую информацию и ссылку на страницу деталей сущности<br/>5. Проверьте что при вводе новых данных в БД данные отображаются на сайте без перезагрузки вебсайта</p><hr/></div>
<div class="expandable"><p><strong>Задание В3. Передача данных по сети</strong> <br/>0. Добавьте в главную форму вашего приложения кнопку "Принять данные с соседней системы" и "Отправить данные на соседнюю систему"<br/>(Названия можно придумать покороче, главное сохранить понятность)<br/>1. При нажатии кнопки "принять данные" программа вступает в мультикаст-группу UDP и ожидает получения данных из сети<br/>2. При этом присутствует кнопка "Отмена получения", которая прекращает этот режим и возвращает программу в нормальное функционирвоание<br/>3. Кнопка "Передать данные" сериализует данные из формы и отправляет их в UDP мультикаст-группу<br/>4. При отправке данных возможностью получения пакета данных длинной более макисмальной длинны UDP-датаграммы пренебречь</p><hr/></div>
<div class="expandable"><p><strong>Задание С1. Лес слов</strong> <br/>Необходимо написать консольную программу которая находит "путь" между двумя словами, с использованием словаря.<br/>"Путь" - это цепочка слов, каждое из которых отличается от сосдених только одним редактированием (заменой буквы, вставкой, удалением(, транспозицией)?)<br/>Транспозиция - по желанию автора.<br/>0. При старте программа загружает словарь английских слов (взят из TortoiseSVN, код загрузи предоставляется)<br/>1. Программа запрашивает два слова - окончания пути<br/>2. При отсутствии концов цепочки в словаре программа завершается<br/>3. Программа измеряет время поиска и футпринт памяти по завершению (GC.TotalBytesCount без GC.Collect)<br/>4. Программа не обязательно гарантирует нахождения кратчайшей цепочки, но стремится к нахождению не слишком длинных цепочек</p><hr/></div>
<div class="expandable"><p><strong>Задание С2. Соревнование ИИ</strong> <br/>В этом задании на лекции пишется оболочка для игры по определённым правилам.<br/>Правила игры оглашаются непосредственно на лекции: все студенты должны быть в равных условиях.<br/>Игра представляет собой пошаговую дуэль с не сложными ходами.<br/>Задача студента написать бота для игры.<br/>На парах C и D все боты играют поочерёдно со всеми ботами.<br/>Автор AI победившего максимум противников получит приз.<br/>AI бросивший Exception считается проигравшим.</p><hr/></div>
<div class="expandable"><p><strong>Задание С3. ANTLR\PEG</strong> <br/>В данном задании требуется создать человекочитаемый (более человекочитаемый чем XML) язык описания доменной модели данных, разработанной в секции А.<br/>Применять можно PEG.js, тогда входной и выходной поток реализуется в браузере.<br/>Применять можно ANTLR (взять из nuget), тогда входной и выходной поток реализуется в консольном приложении.<br/>Задача парсера: преобразовать человекочитаемый язык в XML-описание, соответствующее формату программы сбора данных.</p><hr/></div>
<div class="expandable"><p><strong>Задание D1. Цифровая фильтрация изображения</strong> <br/>В этом задании нужно создать фильтр, который будет изменять фотографию определённым образом.<br/>На лекции рассмотрена билиотека BitmapImager для низкоуровневой работы с растровым изображением.<br/>Также на лекции рассмотрены следующие фильтры:<br/>1. Медианный фильтр<br/>2. Линейный оператор преобразовнаия цвета<br/>Необходимо придумать и реализовать собственное преобразование.</p><hr/></div>
<div class="expandable"><p><strong>Задание D2. OpenGL с Tao Framework.</strong> <br/>Необходимо создать программу визуализации предметной области.<br/>Т.е. по набору данных, программа должна создать сцену-иконку для конкретного набора данных.<br/>В результирующем приложении сцена должна вращаться вокург своей оси.<br/>Допустимо применение WebGL вместо OpenGL, также допустимо применение любых других технологий создания 3д сцен.</p><hr/></div>
<div class="expandable"><p><strong>Задание D3. Звук с NAudio</strong> <br/>Необходимо создать приложение-музыкальный инструмент.<br/>В приложении должно быть некоторое количество кнопок, которые вызывают различные звуковые эффекты.<br/>В приложении также должна быть возможность записать последовательность нажатий кнопок и их время для того чтобы воспроизвести полученную мелодию заново.</p><hr/></div>
<div class="expandable"><p><strong>Задание Wildcard. Может быть выполнено вместо любого задания из блока D.</strong> <br/>По согласованию, задание может быть выполнено вместо нескольких заданий блока D.<br/>Суть задания: решить проблему.<br/>Найдите проблему и решите её. Или придумайте проблему и решите её.<br/>Примеры:<br/>На земле высадились дружественные инопланетяне-андройды. Никто не понимает их язык. Но инопланетяне общаются только жестами. Вам нужно создать программу, которая позволит всем людям, которые поняли какое-либо их слово, занести это слово в словарь. Также у людей должна быть возможность ввести последоватлеьность жестов и найти соответствующую ему семантическую единицу. Возможно, люди иногда ошибаются в понимании жестов, по этому поиск должен быть нечётким.<br/>Создайте программу для описания формы облаков.<br/>Решите задание С1 в виде Quine.<br/>Создайте программу, моделирующую двухподвес и к ней программу, стабилизирующую двухподвес.<br/>http://en.wikipedia.org/wiki/Double_pendulum<br/>http://www.youtube.com/watch?v=B6vr1x6KDaY<br/>Напишите DropBox для Azure.<br/>Это примеры, само задание нужно придумать вам.</p><hr/></div>
<hr>
<p><h3>Лекции</h3>
<div class="expandable"><p> Неделя <strong>01</strong>[9 февраля 2015 г.] Занаятие <strong>AB</strong> Тема <strong>VCS+WP</strong> <br/>Занятие состоит из двух частей:<br/>1. В первой части рассматриваются системы контроля версий SVN и GIT.<br/>Дле тестов создаётся локальный репозитарий SVN, в нём создаётся стандартная структура веток.<br/>Рассматриваются операции<br/>Commit, Update, Revert, Create Patch, Apply Patch, разрешение конфликтов.<br/>Создание ветки, слияние веток, Forward integration и reverse integraion.<br/>Рассматриваются общие концепци распределённых систем контроля версий.<br/>На примере GitHub рассматривается клонирование репозитария, push и pull, создание и слияние веток, концепция git flow.<br/>Базовые команды git в bash, настройки TortoiseGit.<br/><br/>2. Демонстрирование программирования на Windows Phone.<br/>Это занятие призвано показать, что создание приложений - может быть относительно простым процессом.<br/>Тема приложения выбирается совместно со студентами.<br/>Варианты тем:<br/>а. Приложении для регистраци непарвильной парковки и автоматической подачи заявления в ГИБ2Д.<br/>а. Аркадная игр, например, змейка.<br/>Важно создавать простое приложение, чтобы весь процесс можно было вместить в одну пару.<br/>При получении приемлимого кода, возможна публикация в Marketplace и передача кода одному из студентов для сопровождения.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>01</strong>[9 февраля 2015 г.] Занаятие <strong>CD</strong> Тема <strong>ABI+CLS</strong> <br/>На данном занятии освежаются знания об WinABI:<br/>Целые беззнаковые типы<br/>Дополнительный код знаковых целых чисел<br/>Числа с плавающей запятой и эффекты FPU<br/>Числа с десятичным порядком<br/>Строки и StringBuilder<br/>Класс DateTime<br/><br/>Также освежаются знания по основам ООП:<br/>0. Ссылки на экземпляры класса<br/>1. Статические и нестатические поля класса<br/>2. Конструктор (и финализатор?), сборка мусора<br/>3. Методы<br/>4. Свойства<br/>5. События?<br/>6. Области видимости<br/>7. Пространства имён<br/>8. Инкапсуляция, полиморфизм, наследование</p><hr/></div>
<div class="expandable"><p> Неделя <strong>02</strong>[16 февраля 2015 г.] Занаятие <strong>AB</strong> Тема <strong>DA+Serialization</strong> <br/>На этом занятии разрабатывается приложение в соответствии с требованиями лабораторной работы А1.<br/>Получившийся исходный код выкладывается в репозитарий prog2015.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>02</strong>[16 февраля 2015 г.] Занаятие <strong>CD</strong> Тема <strong>Generics, Collections, Interfaces</strong> <br/>На занятии рассматривается обобщённое программирование через сравнение template`ов С++ и generic`ов C#.<br/>В дполнение рассматривается Java с её type erasure.<br/>В качестве Изучения обобщения пишутся частные реализации LinkedList и Map.<br/>Рассматриваются коллекции List, Dictionary, Stack,Hashset.<br/>Упоминается ковариация и контрвариация, in и out generic-аргументы.<br/>Рассматриваются интерфейсы, реализуемые стандартными коллекциями: IEnumerable, IList, ICollection.<br/>Интерфейс IDisposable.<br/>Рассматриваются делегаты и замыкания.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>03</strong>[23 февраля 2015 г.] Занаятие <strong>AB</strong> Тема <strong>Reporting, Projects+Assemblies</strong> <br/>На занятии реализуется лабораторная работа А2.<br/>В дополнение рассматривается структура проекта и решения.<br/>Упоминается MSBuild и структура проекта с точки зрения MSBuild.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>03</strong>[23 февраля 2015 г.] Занаятие <strong>CD</strong> Тема <strong>3d party components</strong> <br/>На занятии рассматриваются таблицы DevExpress, сводные таблицы, компоненты визуального редактирования данных.<br/>Рассматриваются компоненты Infragistics и Teleric.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>04</strong>[2 марта 2015 г.] Занаятие <strong>AB</strong> Тема <strong>GDI,Forms,WPF,Cpp Interop</strong> <br/>На занятии освежатся знания о очереди сообщений окна.<br/>Создаётся приложение SplashScreen для демонстрации WinAPI.<br/>Для демонстрации PInvoke создаётся приложение из C++ библиотеки и C# исполняемого файла.<br/>Рассматривается код, генерируемый дизайнером WinForms. Создаётся динамическая разметка формы.<br/>Рассматривает создание интерфейса с помощью XAML. Рассматривается подход MVVM.<br/>Упоминается Silverlight, Windows Phone и WinRT.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>04</strong>[2 марта 2015 г.] Занаятие <strong>CD</strong> Тема <strong>Exceptions, Win proc types</strong> <br/>Рассматриваются глубокие и ветвистые иерархии исключений.<br/>Демонстрируется замедление выполнения кода при использовании исключений.<br/>Упоминаются checked исключения Java.<br/>Рассматривается NLog и (или?) log4net, стандартный механизм трассировки, управление им через свичи.<br/>Рассматривается запись в EventLog.<br/><br/>Рассматривается различие между консольными приложениями, оконными приложениями и сервисами.<br/>Рассматривается различие выполнения приложения и сервиса под различными аккаунтами: LOCAL SYSTEM, NETWORK SERVICE, User Identity.<br/>Упоминаение CAS, ACL. И снова упоминание Silverlight и Flash.<br/></p><hr/></div>
<div class="expandable"><p> Неделя <strong>05</strong>[9 марта 2015 г.] Занаятие <strong>AB</strong> Тема <strong>RDBMS+ADO.NET</strong> <br/>Выполняется лабораторная работа B1 с применением EntityFramwork 6.<br/>Рассматривается ItelliTrace.<br/>Рассматривается язык SQL.<br/>Рассматривается класс DataTable и его взаимодействие с WinForm компонентами.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>05</strong>[9 марта 2015 г.] Занаятие <strong>CD</strong> Тема <strong>Indexes, NoSQL</strong> <br/>Рассматривается язык SQL: DDL и DML.<br/>Операции реляционной алгебры: проекция, фильтрация, картезианский продукт.<br/>Рассматриваются операции соединения.<br/>Рассматриваются операции агрегации.<br/>Рассматриваются индексы СУБД.<br/>Упоминаются многомерные индексы.<br/>Рассматрвиается MongoDB и RavenDB.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>06</strong>[16 марта 2015 г.] Занаятие <strong>AB</strong> Тема <strong>HTTP MVC</strong> <br/>Рассматривается протокол HTTP и идеи URI.<br/>Рассматриваются коды HTTP.<br/>Рассматривается проект-шаблон MVC.<br/>Выполняется лабораторная B2.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>06</strong>[16 марта 2015 г.] Занаятие <strong>CD</strong> Тема <strong>HTML JS, Browser debugger+TDD</strong> <br/>Рассматривается http://jsfiddle.net/<br/>Рассматриваются простейшие конструкции HTML и CSS.<br/>Рассматриваются идеи языка JavaScript. <br/>Замыкания, хештаблицы, массивы, eval.<br/>Прототипное наследование.<br/><br/>Рассматривается NUnit, интегрированный в Resharper.<br/>Создаются тесты для тестирования B1 и B2.<br/>Рассматривается оригинальная среда выполнения NUnit.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>07</strong>[23 марта 2015 г.] Занаятие <strong>AB</strong> Тема <strong>Sockets</strong> <br/>Рассматривается модель OSI и реальная модель TCP\IP.<br/>Упоминается ARPANET, ARP, DHCP, broadcast, multicast.<br/>Рассматривается WireShark, рассматривается модель лицензионной безопасности ReSarper`а.<br/>Выполняется задание B3.<br/></p><hr/></div>
<div class="expandable"><p> Неделя <strong>07</strong>[23 марта 2015 г.] Занаятие <strong>CD</strong> Тема <strong>Unsafe</strong> <br/>Расматриваются структуры.<br/>Рассматривается StructureLayout.<br/>Рассматривается fix buffers, GC.KeepAlive, паттерн обработки неуправляемых ресурсов.<br/>Рассматривается выделение памяти через VirtualAlloc и проводятся тесты производительности вычсилений на управляемом массиве и прямой адресации зафиксированной памяти.<br/><br/>Рассматривается Reflection: создаётся свой сериализатор.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>08</strong>[30 марта 2015 г.] Занаятие <strong>AB</strong> Тема <strong>Thread sync</strong> <br/>Рассматриваются потоки.<br/>Создаётся затратная операция и разделяется на количество потоков.<br/>Измеряется производительность в условных единицах при выполнении на разном количестве потоков.<br/>Демонстрируется работа SetProcessorAffinity(?)<br/>Рассматривается конфликт использования ресурсов на примере инкрмента.<br/>Рассматриваются атомарные CAS операции.<br/>Рассматривается реализация неблокирующего связного листа.<br/>Рассматривается частная реализация блокировки.<br/>Рассматривается Monitor, SpinLock.<br/>Демонстрируется Message Pumping.<br/>Рассматривается lock и отличия в CLR 2.0 и 4.0.<br/></p><hr/></div>
<div class="expandable"><p> Неделя <strong>08</strong>[30 марта 2015 г.] Занаятие <strong>CD</strong> Тема <strong>Thread tools (TPL)</strong> <br/>Создаётся частная реализация ThreadPool.<br/>Рассматривается ThreadPool.<br/>Упоминаются пулы SQL-соединений, идеи асинхронных оптимизаций и long polling.<br/>Рассматриваются Task`и и их взаимодействие.<br/>Рассматривается обработка ошибок Task`ов.<br/>Упоминается различие в обработке ошибок .Net 4.0 и 4.5.<br/>Упоминается async.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>09</strong>[6 апреля 2015 г.] Занаятие <strong>A </strong> Тема <strong>Collections, Linq</strong> <br/>Рассматриваются методы расширения.<br/>Упоминается эволюция компиляции статически типизированных языков, от загловочных файлов до методов расширения.<br/>На примере расширения свойств и скобок оператора if демонстрируются нефункциональные атавизмы языков (материал понадобится в 11 лекции).<br/>Содаётся частная реализация методов манипуляции данными.<br/>Рассматриваются аналоги, присутствующие в коллекциях.<br/>Рассматривается методы расширения класса Enumerable.<br/>Упомиyается ParallelEnumerable.<br/>Рассматривается интегрированный синтаксис Linq.<br/>Ставится задача на C1.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>09</strong>[6 апреля 2015 г.] Занаятие <strong>B </strong> Тема <strong>DataStructures</strong> <br/>Рассматривается поиск перебором, бинарный и тернарный поиск, поиск хеш-таблицей.<br/>Рассматриваются вопросы многомерного индексирования.<br/>Рассматривается фильтр Блума.<br/>Рассматриваются алгоритмы на строках, н-грамное сравнение.<br/>Упоминается криптография, идеи симметричного и ассиметричного шифрования, цифровой подписи, биткоин.<br/>Упоминается Information Retrival и Machine Learning.<br/>Рассматривается SVD++.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>10</strong>[13 апреля 2015 г.] Занаятие <strong>A </strong> Тема <strong>AI Shell</strong> <br/>Создаётся оболочка для тестирования лабораторной C2.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>10</strong>[13 апреля 2015 г.] Занаятие <strong>B </strong> Тема <strong>AI Contest</strong> <br/>Проводятся соревнования по лабораторной C2.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>11</strong>[20 апреля 2015 г.] Занаятие <strong>A </strong> Тема <strong>Parsers</strong> <br/>Создаётся парсер формул средствами ANTLR и PEG.js.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>11</strong>[20 апреля 2015 г.] Занаятие <strong>B </strong> Тема <strong>JS, Ruby, F#, Swift</strong> <br/>Рассматриваются идеи в языках программирования JS, F#, Haskell.<br/>Рассматриваются особенности Swift?, Go.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>12</strong>[27 апреля 2015 г.] Занаятие <strong>A </strong> Тема <strong>Java</strong> <br/>Рассматриваются ключевые отличия Java от C#.<br/>Реализуется простое приложение для Android.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>12</strong>[27 апреля 2015 г.] Занаятие <strong>B </strong> Тема <strong>Resharper+Xamarin</strong> <br/>Рассматривается базовый рефакторинг с применением RsSharper. <br/>Признаки грязного кода. <br/>Способы ускорения кодирования.<br/>Вопросы комментирования, самодокументирования и xml-документирования.<br/>Упоминается CodeRush и встроеные средства VS.<br/><br/>Рассматривается Xamarin Studio, пишется Hello World под MacOS (Linux?).<br/><br/></p><hr/></div>
<div class="expandable"><p> Неделя <strong>13</strong>[4 мая 2015 г.] Занаятие <strong>A </strong> Тема <strong>CGI</strong> <br/>Рассматривается восприятие цвета, цветовые модели, растровые и векторные технологии.<br/>Упоминаются фракталы.<br/>Выполняется подготовка к лабораторной D1.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>13</strong>[4 мая 2015 г.] Занаятие <strong>B </strong> Тема <strong>Patterns</strong> <br/>Рассматриваются паттерны проектирвоания по Гамме (или лучше взять короткий список из Маконела) и рефакторинга по Кериевски.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>14</strong>[11 мая 2015 г.] Занаятие <strong>A </strong> Тема <strong>OpenGL</strong> <br/>Рассматривается TAO framework при работе с OpenGL.<br/>Пишется программа которая<br/>1. Вращает треугольник<br/>2. Вращает куб<br/>3. Вращает морфинг куб-цилиндр-шар</p><hr/></div>
<div class="expandable"><p> Неделя <strong>14</strong>[11 мая 2015 г.] Занаятие <strong>B </strong> Тема <strong>Reverse</strong> <br/>Выбирается необфусцированный .net-компонент (DevExpress, SyncFusion или Actipro).<br/>С применением DotPeek и ildasm\ilasm в нём выключается защита.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>15</strong>[18 мая 2015 г.] Занаятие <strong>A </strong> Тема <strong>Wave audio</strong> <br/>С применением NAudio создаётся приложение которое пищит с управляемой частотой.<br/>Выполняется подготовка к лабораторной D3.</p><hr/></div>
<div class="expandable"><p> Неделя <strong>15</strong>[18 мая 2015 г.] Занаятие <strong>B </strong> Тема <strong>Kinect</strong> <br/>Рассматриваются sample`ы Kinect SDK.<br/>Реализуется программа аудиозаказа бутерброда (выбранной предметной области?).</p><hr/></div>
<div class="expandable"><p> Неделя <strong>16</strong>[25 мая 2015 г.] Занаятие <strong>A </strong> Тема <strong>Teamplay</strong> <br/>Выполняется командная игра "Госзаказ".<br/>Студенты делятся на три группы.<br/>Одна из трёх человек - Кастомеры (Кт).<br/>Две другие группы (Пр) примерно равного состава содержат гендиректора.<br/>ГД распределяет роли разработчика, аналитика, технического писателя и др.<br/>ГД в праве уволить сотрудника во время работы или попытаться переманить чужого(?).<br/><br/>При старте игры становится известно, что заказчик собирается заказать софт оперделённого назначения.<br/>ГД запускают свои команды на написание софта.<br/><br/>В это время Кт пишут формальные требования к софту и процедуру проведения конкурса. Процедруа сравнения должна учитывать качество, соответствие требованиям и цену софта.<br/>Разработка длится час. По звершению часа должн быть документированный софт.<br/><br/>Кт передаёт требования и описание процедуры производителям, от них Пр получает документацию по разработанным системам.<br/>Кт проверяют документацию на соответствие формальным требованиям в течении 20 минут.<br/>В это время Пр доводят софт и подают секретные заявки с озвученной ценой за свой софт.<br/><br/>После этого Кт выполняет тестирование и назначает победителя.<br/><br/>Победитель получает фрагмент призового фонда, соответствующий назначенной ими цене. Остатки фонда передаются Кт.<br/></p><hr/></div>
<hr>
</section>
</div>
</body>
<script>
//<![CDATA[
$(function(){
$('div.expandable p').expander({
slicePoint: 32767,
sliceOn: '<br',
expandPrefix: ' ',
expandText: '[...]',
userCollapseText: '[^]'
});
});//]]>
</script>
</html>