-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathprogram.html
More file actions
172 lines (151 loc) · 44.5 KB
/
program.html
File metadata and controls
172 lines (151 loc) · 44.5 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
<!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/>
Код лабораторных вы коммитите в форк репозитария prog2015, я просматриваю ваши изменения и отмечаю сданные лабораторные комментарием.
<br/>По возможности из комментариев буду переносить информацию в файлы, которые вы создаёте в работе А1.
</p><hr/></div>
<div class="expandable"><p><strong>Задание A2. Сбор данных
</strong> <br/>Цель: создание приложения сбора данных.<br/>
Вам нужно создать приложение, которое позволит пользователю хранить данные выбранной вами предметной области в файле.
<br/>Ваше приложение содержит главную форму, на которой располагаются средства управления и кнопки "Сохранить в файл" и "Загрузить из файла".
<br/>Данные сохраняются в формате XML при помощи механизма XML-сериализации.<br/>
Рекомендации по выбору предметной области:
<br/>Допустим, вы выбрали предметную область "Заполнение штрафа инспектором ГИБДД".
Тогда на вашей форме должен быть TextBox для ввода ФИО инспектора, ФИО нарушителя, описания нарушения и места нарушения.<br/>
Также должен быть TextBox с маской для ввода номера автомобиля. DateEdit для ввода даты. ListBox для ввода свидетелей и понятых (количество не известно заранее).
<br/>Ваша программа должна предусматривать возможность сохранить все эти данные в файл и считать их из файла.
<br/>Допустим, вы выбрали предметную область "Карта осмотра пациента врачём".
<br/>Тогда ваша программа будет собирать информацию о ФИО, СНИЛС, номере полиса и месте осмотра.
<br/>Также у вас будет лист с перечислением диагнозов и назначенного по поводу диагноза лечения (и то и другое строка).
<br/>Количество диагнозов заранее неизвестно.
<br/>
Требование к выбранной предметной области:<br/>
0. В выбранной предметной области должна быть частица смысла из реального мира. Не надо собирать информацию о сепуляции сепулькариев.<br/>
1. Должны быть представлены разные типы данных: строки, целые числа, дробные числа, даты, перечисления, списки.
Но смысл важнее. Если в вашей предметной области нет дат и дробных чисел - так тому и быть.
<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/>Необходимо добавить в программу возможность передачи данных в сеть, а так же их получения, посредством UDP Multicast вещания.<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, также допустимо применение любых других технологий создания 3D сцен.</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>