<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Krasko</id>
		<title>SEWiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Krasko"/>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Krasko"/>
		<updated>2026-04-30T16:28:53Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2014&amp;diff=3837</id>
		<title>Комбинаторика и теория графов 2014</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2014&amp;diff=3837"/>
				<updated>2014-09-19T12:13:00Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лекции ==&lt;br /&gt;
Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
Четверг, 3 пара&lt;br /&gt;
&lt;br /&gt;
==== Комбинаторика ====&lt;br /&gt;
*[https://drive.google.com/file/d/0B-4BALGaSccuYXlxZ2YzTHg0dlE/edit?usp=sharing| Лекция 4.09.14]&lt;br /&gt;
==== Теория графов ====&lt;br /&gt;
*[https://drive.google.com/file/d/0B-4BALGaSccucmVMb3lNeUVFb0k/edit?usp=sharing| Лекция 11.09.14]&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
Краско Евгений Сергеевич, Кноп Александр&lt;br /&gt;
&lt;br /&gt;
Четверг, 4 пара&lt;br /&gt;
&lt;br /&gt;
==== Комбинаторика ====&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1qPA6dPa_Sz249A1NwvfYDhrwdLDdvmqdLM4mLgpN6Dw/edit#gid=0| Результаты (комбинаторика)]&lt;br /&gt;
&lt;br /&gt;
===== Домашнее задание 1 (4.09.14) =====&lt;br /&gt;
[https://drive.google.com/file/d/0B-4BALGaSccuTkhIaFpweHcyd28/edit?usp=sharing| Задачи]&lt;br /&gt;
===== Домашнее задание 2 (18.09.14) =====&lt;br /&gt;
&lt;br /&gt;
==== Теория графов ====&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1IiuE9cxeZ9QF17CpT0a0n0H7bq0U6M6SNm7fyiEsKDs/edit#gid=0| Результаты (теория графов)]&lt;br /&gt;
&lt;br /&gt;
===== Домашнее задание 1 (11.09.14) =====&lt;br /&gt;
Упражнения 1.10, 1.11, 1.12, 1.13, 1.14 и 1.17 лекции от 11.09.14&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2014&amp;diff=3770</id>
		<title>Комбинаторика и теория графов 2014</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2014&amp;diff=3770"/>
				<updated>2014-09-15T09:11:05Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
Практика - Краско Евгений Сергеевич, Кноп Александр&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1qPA6dPa_Sz249A1NwvfYDhrwdLDdvmqdLM4mLgpN6Dw/edit#gid=0| Результаты (комбинаторика)]&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1IiuE9cxeZ9QF17CpT0a0n0H7bq0U6M6SNm7fyiEsKDs/edit#gid=0| Результаты (теория графов)]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2014&amp;diff=3625</id>
		<title>Комбинаторика и теория графов 2014</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2014&amp;diff=3625"/>
				<updated>2014-09-07T18:13:43Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
Практика - Краско Евгений Сергеевич, Кноп Александр&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1qPA6dPa_Sz249A1NwvfYDhrwdLDdvmqdLM4mLgpN6Dw/edit#gid=0| Результаты]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2014&amp;diff=3182</id>
		<title>Комбинаторика 2014</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2014&amp;diff=3182"/>
				<updated>2014-03-06T14:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский и Евгений Краско&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1KhEZg7_Se8XCI7zLGBc2QrVTvrTwX3FyXSqPdL67yCs/edit#gid=0| Результаты]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2014&amp;diff=3181</id>
		<title>Комбинаторика 2014</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2014&amp;diff=3181"/>
				<updated>2014-03-06T14:25:33Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: Новая страница: «Лектор: Александр Владимирович Омельченко  Практика: Алексей Диевский и Евгений Краско  == …»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский и Евгений Краско&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdGxTZm5BWjhPc2x3R2V2bkFiRDVrZEE#gid=0| Результаты]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=3180</id>
		<title>SE Wiki</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=3180"/>
				<updated>2014-03-06T14:20:36Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Учебная информация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Учебная информация ==&lt;br /&gt;
[http://mit.spbau.ru/ru/scheduleSE Расписание]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 курс:&lt;br /&gt;
* [[Функциональное_программирование_2013|Функциональное программирование]]&lt;br /&gt;
* [[Операционные_системы_2014|Операционные системы]]&lt;br /&gt;
* [[C 2013|C++]]&lt;br /&gt;
* [[Java 2014|Java]]&lt;br /&gt;
* [[Алгоритмы и структуры данных 2013-2014|Алгоритмы]]&lt;br /&gt;
* [[Статистика_2014|Статистика]]&lt;br /&gt;
* [[Software_design|Software design]]&lt;br /&gt;
* [[Комбинаторика_2014|Комбинаторика]]&lt;br /&gt;
&lt;br /&gt;
== Дни разработчика ==&lt;br /&gt;
* [[Devdays2h2012| Дни разработчика (Осень 2012)]]&lt;br /&gt;
* [[Devdays1h2013| Дни разработчика (Весна 2013)]]&lt;br /&gt;
* [[devdays_fall_2013| Дни разработчика (Осень 2013)]]&lt;br /&gt;
* [[ prpojects_fall_2013|Странички проектов ]]&lt;br /&gt;
&lt;br /&gt;
== Архив за прошлые семестры ==&lt;br /&gt;
* [[Осень_2013|Осенний семестр 2013]]&lt;br /&gt;
* [[Весна_2013|Весенний семестр 2013]]&lt;br /&gt;
* [[Осень_2012|Осенний семестр 2012]]&lt;br /&gt;
* [[Весна_2012|Весенний семестр 2012]]&lt;br /&gt;
* [[Осень_2011|Осенний семестр 2011]]&lt;br /&gt;
&lt;br /&gt;
== Практики ==&lt;br /&gt;
* [[НИР_5SE_весна_2014|Темы практик, весна 2014-го года]]&lt;br /&gt;
* [[НИР_5SE_осень_2013|Темы практик, осень 2013-го года]]&lt;br /&gt;
* [[НИР_5SE_весна_2013|Темы практик, весна 2013-го года]]&lt;br /&gt;
* [[НИР 5SE осень 2012|Темы практик, осень 2012-го года]]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG9CRFdGa2tLeV9ab1l1QWlkOFp3bFE&amp;amp;output=html Темы практик, лето 2012-го года]&lt;br /&gt;
* [[Темы практик, 5SE, осень 2011-го года | Темы практик, осень 2011-го года]]&lt;br /&gt;
* [[Темы практик |Темы практик, весна 2011-го года]]&lt;br /&gt;
&lt;br /&gt;
== Студенты ==&lt;br /&gt;
* [[2010|Набор 2010-го года]]&lt;br /&gt;
* [[2011|Набор 2011-го года]]&lt;br /&gt;
* [[2012|Набор 2012-го года]]&lt;br /&gt;
* [[2013|Набор 2013-го года]]&lt;br /&gt;
&lt;br /&gt;
== Важные ссылки ==&lt;br /&gt;
Для 5-го курса:&lt;br /&gt;
* [http://code.google.com/p/spbau-cpp-2011/ cpp] - репозиторий для лабораторных по С++.&lt;br /&gt;
* [http://code.google.com/p/aptu-os/source/checkout aptu-os] - репозиторий для лабораторных по операционным системам.&lt;br /&gt;
&lt;br /&gt;
Для 6-го курса:&lt;br /&gt;
* [http://code.google.com/p/hpcource/ hpcource] - репозиторий для лабораторных по параллельному программированию.&lt;br /&gt;
* [http://code.google.com/p/mathvm/ mathvm] - репозиторий для лабораторных по виртуальным машинам.&lt;br /&gt;
* [http://code.google.com/p/spbau-network-2011/source/checkout spbau-network-2011] -  репозиторий для лабораторных по сетевым технологиям.&lt;br /&gt;
&lt;br /&gt;
== Дополнительно == &lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Мероприятия]]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=3179</id>
		<title>SE Wiki</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=3179"/>
				<updated>2014-03-06T14:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Учебная информация ==&lt;br /&gt;
[http://mit.spbau.ru/ru/scheduleSE Расписание]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 курс:&lt;br /&gt;
* [[Функциональное_программирование_2013|Функциональное программирование]]&lt;br /&gt;
* [[Операционные_системы_2014|Операционные системы]]&lt;br /&gt;
* [[C 2013|C++]]&lt;br /&gt;
* [[Java 2014|Java]]&lt;br /&gt;
* [[Алгоритмы и структуры данных 2013-2014|Алгоритмы]]&lt;br /&gt;
* [[Статистика_2014|Статистика]]&lt;br /&gt;
* [[Software_design|Software design]]&lt;br /&gt;
* [[Комбинаторика|Комбинаторика]]&lt;br /&gt;
&lt;br /&gt;
== Дни разработчика ==&lt;br /&gt;
* [[Devdays2h2012| Дни разработчика (Осень 2012)]]&lt;br /&gt;
* [[Devdays1h2013| Дни разработчика (Весна 2013)]]&lt;br /&gt;
* [[devdays_fall_2013| Дни разработчика (Осень 2013)]]&lt;br /&gt;
* [[ prpojects_fall_2013|Странички проектов ]]&lt;br /&gt;
&lt;br /&gt;
== Архив за прошлые семестры ==&lt;br /&gt;
* [[Осень_2013|Осенний семестр 2013]]&lt;br /&gt;
* [[Весна_2013|Весенний семестр 2013]]&lt;br /&gt;
* [[Осень_2012|Осенний семестр 2012]]&lt;br /&gt;
* [[Весна_2012|Весенний семестр 2012]]&lt;br /&gt;
* [[Осень_2011|Осенний семестр 2011]]&lt;br /&gt;
&lt;br /&gt;
== Практики ==&lt;br /&gt;
* [[НИР_5SE_весна_2014|Темы практик, весна 2014-го года]]&lt;br /&gt;
* [[НИР_5SE_осень_2013|Темы практик, осень 2013-го года]]&lt;br /&gt;
* [[НИР_5SE_весна_2013|Темы практик, весна 2013-го года]]&lt;br /&gt;
* [[НИР 5SE осень 2012|Темы практик, осень 2012-го года]]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG9CRFdGa2tLeV9ab1l1QWlkOFp3bFE&amp;amp;output=html Темы практик, лето 2012-го года]&lt;br /&gt;
* [[Темы практик, 5SE, осень 2011-го года | Темы практик, осень 2011-го года]]&lt;br /&gt;
* [[Темы практик |Темы практик, весна 2011-го года]]&lt;br /&gt;
&lt;br /&gt;
== Студенты ==&lt;br /&gt;
* [[2010|Набор 2010-го года]]&lt;br /&gt;
* [[2011|Набор 2011-го года]]&lt;br /&gt;
* [[2012|Набор 2012-го года]]&lt;br /&gt;
* [[2013|Набор 2013-го года]]&lt;br /&gt;
&lt;br /&gt;
== Важные ссылки ==&lt;br /&gt;
Для 5-го курса:&lt;br /&gt;
* [http://code.google.com/p/spbau-cpp-2011/ cpp] - репозиторий для лабораторных по С++.&lt;br /&gt;
* [http://code.google.com/p/aptu-os/source/checkout aptu-os] - репозиторий для лабораторных по операционным системам.&lt;br /&gt;
&lt;br /&gt;
Для 6-го курса:&lt;br /&gt;
* [http://code.google.com/p/hpcource/ hpcource] - репозиторий для лабораторных по параллельному программированию.&lt;br /&gt;
* [http://code.google.com/p/mathvm/ mathvm] - репозиторий для лабораторных по виртуальным машинам.&lt;br /&gt;
* [http://code.google.com/p/spbau-network-2011/source/checkout spbau-network-2011] -  репозиторий для лабораторных по сетевым технологиям.&lt;br /&gt;
&lt;br /&gt;
== Дополнительно == &lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Мероприятия]]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2638</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2638"/>
				<updated>2013-09-30T19:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
&lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Комбинаторика: лекции 1 и 2; домашние задания 1 и 2]]&lt;br /&gt;
*[[Медиа:Hw1_graphs.pdf| Теория графов: домашнее задание 1]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdFZnSUdnTmhublJ6OWF5V2MybUJ0MHc#gid=0| Результаты по теории графов]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2591</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2591"/>
				<updated>2013-09-21T15:08:42Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
&lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Комбинаторика: лекции 1 и 2; домашние задания 1 и 2]]&lt;br /&gt;
*[[Медиа:Hw1_graphs.pdf| Теория графов: домашнее задание 1]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2590</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2590"/>
				<updated>2013-09-21T15:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
&lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Комбинаторика: лекции 1 и 2; домашние задания 1 и 2]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[Медиа:Hw1_graphs.pdf| Теория графов: домашнее задание 1]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Hw1_graphs.pdf&amp;diff=2589</id>
		<title>Файл:Hw1 graphs.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Hw1_graphs.pdf&amp;diff=2589"/>
				<updated>2013-09-21T15:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2576</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2576"/>
				<updated>2013-09-13T20:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
Домашние задания — упражнения из конспектов лекций. &lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Лекции 1 и 2; домашние задания 1 и 2]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_1_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C_2013.pdf&amp;diff=2575</id>
		<title>Файл:Лекция 1 осень 2013.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_1_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C_2013.pdf&amp;diff=2575"/>
				<updated>2013-09-13T20:15:49Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: загружена новая версия «Файл:Лекция 1 осень 2013.pdf»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2553</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2553"/>
				<updated>2013-09-07T19:52:25Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
Домашние задания — упражнения из конспектов лекций. &lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Лекция 1]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2552</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2552"/>
				<updated>2013-09-07T19:51:47Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
Упражнения к параграфам в конспектах — это домашние задания.&lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Лекция 1]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2551</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2551"/>
				<updated>2013-09-07T19:50:45Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
Упражнения к параграфам в следующих ниже конспектах — это домашние задания.&lt;br /&gt;
*[[Медиа:Лекция_1_осень_2013.pdf| Лекция 1]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2550</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2550"/>
				<updated>2013-09-07T19:48:36Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
[[Медиа:Лекция_1_осень_2013.pdf| 1-я лекция]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2549</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2549"/>
				<updated>2013-09-07T19:47:01Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции и домашние задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
[[Медиа:Лекция_1_осень_2013.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_1_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C_2013.pdf&amp;diff=2548</id>
		<title>Файл:Лекция 1 осень 2013.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9B%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_1_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C_2013.pdf&amp;diff=2548"/>
				<updated>2013-09-07T19:45:23Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2547</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2547"/>
				<updated>2013-09-07T19:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции и домашние задания==&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2541</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2541"/>
				<updated>2013-09-05T13:16:29Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=2540</id>
		<title>SE Wiki</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=2540"/>
				<updated>2013-09-05T13:15:45Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Учебная информация */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Учебная информация ==&lt;br /&gt;
[http://mit.spbau.ru/ru/scheduleSE Расписание]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 курс:&lt;br /&gt;
* [[Мат_логика_2013|Мат. логика и теория вычислимости]]&lt;br /&gt;
* [[Unix_и_Скриптовые_языки_2013|Unix и скриптовые языки]]&lt;br /&gt;
* [[Алгебраические_структуры_2013|Алгебраические структуры]]&lt;br /&gt;
* [[Алгоритмы_и_структуры_данных1_2013|Алгоритмы и структуры данных]]&lt;br /&gt;
* [[Базы_данных_2013|Базы данных]]&lt;br /&gt;
* [[Основы_программной_инженерии_2013|Основы программной инженерии]]&lt;br /&gt;
* [[Комбинаторика_и_теория_графов_2013|Комбинаторика и Теория графов]]&lt;br /&gt;
* [[C___2013|С++]]&lt;br /&gt;
* [[Технологический_семинар_2013|Технологический семинар]]&lt;br /&gt;
* [[НИР_5_2013|НИР]]&lt;br /&gt;
&lt;br /&gt;
6 курс:&lt;br /&gt;
&lt;br /&gt;
[https://www.google.com/calendar/embed?src=4q026h02n40t9cebf8ad6rbtek%40group.calendar.google.com&amp;amp;ctz=Europe/Moscow Расписание]&lt;br /&gt;
* [[Компьютерная_графика_2013|Компьютерная графика]]&lt;br /&gt;
* [[FunctionalProgramming2_2013|Функциональное программирование 2]]&lt;br /&gt;
* [[Computational_geometry_2013|Вычислительная геометрия]]&lt;br /&gt;
* [[Параллельные_и_распределенные_вычисления_2013|Параллельные и распределенные вычисления]]&lt;br /&gt;
* [[generic_programming_2013|Обобщенное и генеративное программирование]]&lt;br /&gt;
* [[Тестирование_ПО_2013|Тестирование ПО]]&lt;br /&gt;
* [[Виртуальные_машины_2013|Виртуальные машины]]&lt;br /&gt;
* [[Методы_формальной_верификации_программ_2013|Методы формальной верификации программ]]&lt;br /&gt;
* [[java_vm_2013|Java VM]]&lt;br /&gt;
* [[networks_2013|Сетевые технологии]]&lt;br /&gt;
* [[Computer_vision_2013|Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Дни разработчика ==&lt;br /&gt;
* [[Devdays2h2012| Дни разработчика (Осень 2012)]]&lt;br /&gt;
* [[Devdays1h2013| Дни разработчика (Весна 2013)]]&lt;br /&gt;
&lt;br /&gt;
== Архив за прошлые семестры ==&lt;br /&gt;
* [[Весна_2013|Весенний семестр 2013]]&lt;br /&gt;
* [[Осень_2012|Осенний семестр 2012]]&lt;br /&gt;
* [[Весна_2012|Весенний семестр 2012]]&lt;br /&gt;
* [[Осень_2011|Осенний семестр 2011]]&lt;br /&gt;
&lt;br /&gt;
== Практики ==&lt;br /&gt;
* [[НИР_5SE_весна_2013|Темы практик, весна 2013-го года]]&lt;br /&gt;
* [[НИР 5SE осень 2012|Темы практик, осень 2012-го года]]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG9CRFdGa2tLeV9ab1l1QWlkOFp3bFE&amp;amp;output=html Темы практик, лето 2012-го года]&lt;br /&gt;
* [[Темы практик, 5SE, осень 2011-го года | Темы практик, осень 2011-го года]]&lt;br /&gt;
* [[Темы практик |Темы практик, весна 2011-го года]]&lt;br /&gt;
&lt;br /&gt;
== Студенты ==&lt;br /&gt;
* [[2010|Набор 2010-го года]]&lt;br /&gt;
* [[2011|Набор 2011-го года]]&lt;br /&gt;
* [[2012|Набор 2012-го года]]&lt;br /&gt;
&lt;br /&gt;
== Важные ссылки ==&lt;br /&gt;
Для 5-го курса:&lt;br /&gt;
* [http://code.google.com/p/spbau-cpp-2011/ cpp] - репозиторий для лабораторных по С++.&lt;br /&gt;
* [http://code.google.com/p/aptu-os/source/checkout aptu-os] - репозиторий для лабораторных по операционным системам.&lt;br /&gt;
&lt;br /&gt;
Для 6-го курса:&lt;br /&gt;
* [http://code.google.com/p/hpcource/ hpcource] - репозиторий для лабораторных по параллельному программированию.&lt;br /&gt;
* [http://code.google.com/p/mathvm/ mathvm] - репозиторий для лабораторных по виртуальным машинам.&lt;br /&gt;
* [http://code.google.com/p/spbau-network-2011/source/checkout spbau-network-2011] -  репозиторий для лабораторных по сетевым технологиям.&lt;br /&gt;
&lt;br /&gt;
== Дополнительно == &lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Мероприятия]]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2538</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2538"/>
				<updated>2013-09-05T13:15:13Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: переименовал «Комбинаторика 2013» в «Комбинаторика и теория графов 2013»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты домашних работ по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013&amp;diff=2539</id>
		<title>Комбинаторика 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013&amp;diff=2539"/>
				<updated>2013-09-05T13:15:13Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: переименовал «Комбинаторика 2013» в «Комбинаторика и теория графов 2013»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Комбинаторика и теория графов 2013]]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2537</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2537"/>
				<updated>2013-09-05T13:13:12Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHMzNjVSam5EdW52a0tNNTVXeVZtbmc#gid=0| Результаты домашних работ по комбинаторике]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2536</id>
		<title>Комбинаторика и теория графов 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_%D0%B8_%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2_2013&amp;diff=2536"/>
				<updated>2013-09-05T13:11:19Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор: Александр Владимирович Омельченко&lt;br /&gt;
&lt;br /&gt;
Практика: Алексей Диевский, Евгений Краско и Александр Кноп&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_4.pdf&amp;diff=2467</id>
		<title>Файл:Глава 4.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_4.pdf&amp;diff=2467"/>
				<updated>2013-05-20T14:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2315</id>
		<title>Комбинаторика 2013 1</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2315"/>
				<updated>2013-04-17T16:59:48Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Практические задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Практические задания ==&lt;br /&gt;
* [[Media:Homework2-1.pdf| Домашнее задание №1]]&lt;br /&gt;
* [[Media:Homework2-2.pdf| Домашнее задание №2]]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdFBEQmFBRjByWVRLbDJ1T0diUWdVdUE#gid=0| Результаты домашних работ]&lt;br /&gt;
&lt;br /&gt;
== Программа курса ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Homework2-2.pdf&amp;diff=2314</id>
		<title>Файл:Homework2-2.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Homework2-2.pdf&amp;diff=2314"/>
				<updated>2013-04-17T16:59:32Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2290</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2290"/>
				<updated>2013-03-27T12:15:54Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Контрольная работа. Условие задачи. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Контрольная работа (условие задачи)==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
&lt;br /&gt;
Например,&lt;br /&gt;
&lt;br /&gt;
1100&lt;br /&gt;
&lt;br /&gt;
0100&lt;br /&gt;
&lt;br /&gt;
0222&lt;br /&gt;
&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
&lt;br /&gt;
Вася Петя Коля&lt;br /&gt;
&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
&lt;br /&gt;
Петя  2      0      0&lt;br /&gt;
&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2289</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2289"/>
				<updated>2013-03-27T12:15:40Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Условие контрольной работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Контрольная работа. Условие задачи.==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
&lt;br /&gt;
Например,&lt;br /&gt;
&lt;br /&gt;
1100&lt;br /&gt;
&lt;br /&gt;
0100&lt;br /&gt;
&lt;br /&gt;
0222&lt;br /&gt;
&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
&lt;br /&gt;
Вася Петя Коля&lt;br /&gt;
&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
&lt;br /&gt;
Петя  2      0      0&lt;br /&gt;
&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2288</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2288"/>
				<updated>2013-03-27T12:14:00Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Условие контрольной работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условие контрольной работы==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
&lt;br /&gt;
Например,&lt;br /&gt;
&lt;br /&gt;
1100&lt;br /&gt;
&lt;br /&gt;
0100&lt;br /&gt;
&lt;br /&gt;
0222&lt;br /&gt;
&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
&lt;br /&gt;
Вася Петя Коля&lt;br /&gt;
&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
&lt;br /&gt;
Петя  2      0      0&lt;br /&gt;
&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2287</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2287"/>
				<updated>2013-03-27T12:13:40Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Условие контрольной работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условие контрольной работы==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
Например,&lt;br /&gt;
1100&lt;br /&gt;
0100&lt;br /&gt;
0222&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
&lt;br /&gt;
Вася Петя Коля&lt;br /&gt;
&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
&lt;br /&gt;
Петя  2      0      0&lt;br /&gt;
&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2286</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2286"/>
				<updated>2013-03-27T12:07:17Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Условие контрольной работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условие контрольной работы==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
Например,&lt;br /&gt;
1100&lt;br /&gt;
0100&lt;br /&gt;
0222&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
&lt;br /&gt;
Вася Петя Коля&lt;br /&gt;
&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
&lt;br /&gt;
Петя  2      0      0&lt;br /&gt;
&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2285</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2285"/>
				<updated>2013-03-27T12:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Условие контрольной работы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условие контрольной работы==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
Например,&lt;br /&gt;
1100&lt;br /&gt;
0100&lt;br /&gt;
0222&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
Вася Петя Коля&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
Петя  2      0      0&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2284</id>
		<title>Java 2013</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Java_2013&amp;diff=2284"/>
				<updated>2013-03-27T12:06:12Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Кузнецов Антон&lt;br /&gt;
&lt;br /&gt;
Практика - Нурк Сергей&lt;br /&gt;
&lt;br /&gt;
== Рейтинг ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/pub?key=0Aif17q2hwUt4dG12aDM0MjI3NlJiOVdXVHpXNVA4alE&amp;amp;output=html Текущий рейтинг]&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
*[[Java_2013-02-08|Лекция 1]]&lt;br /&gt;
*[[Медиа:Java_2013_02.ppt|Лекция 2]]&lt;br /&gt;
*[http://neerc.ifmo.ru/~kgeorgiy/courses/java-advanced/slides/exceptions.pps Лекция 3 (часть 1)]&amp;lt;br&amp;gt;[[Медиа:Java_2013_03_2.ppt|Лекция 3 (часть 2)]]&lt;br /&gt;
*[[Java_2013-02-27|Лекция 4]]&lt;br /&gt;
*[[Медиа:Java_2013_05.ppt|Лекция 5 (часть 2)]]&lt;br /&gt;
*[[Медиа:Java_2013_05-2.ppt|Лекция 6]]&lt;br /&gt;
*[[Медиа:Java_2013_06.ppt|Лекция 7]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/3/35/Java_hmw_2013_02_20.pdf Первое задание] срок сдачи: 20 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/e/e4/Java_hmw_2013_02_27.pdf Второе задание] срок сдачи: 27 февраля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/d/db/Java_hmw_2013_03_06.pdf Третье задание] срок сдачи: 06 марта&lt;br /&gt;
* [[Java_2013_HW4|Четвертое задание]] срок сдачи: 13 марта&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/c/c4/Java_hmw_2013_03_20.pdf Пятое задание] срок сдачи: &amp;lt;b&amp;gt;продлен до 27 марта&amp;lt;/b&amp;gt;&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/7/79/Java_hmw_2013_04_03.pdf Шестое задание] срок сдачи: 3 апреля&lt;br /&gt;
* [http://mit.spbau.ru/sewiki/images/f/fb/Java_hmw_2013_04_10.pdf Седьмое задание] срок сдачи: 10 апреля&lt;br /&gt;
&lt;br /&gt;
Присылать задачи нужно на почту &amp;lt;b&amp;gt;sergeynurk@gmail.com&amp;lt;/b&amp;gt; с копией &amp;lt;b&amp;gt;anton.m.kuznetsov@gmail.com&amp;lt;/b&amp;gt; и темой: &amp;lt;b&amp;gt;Java homework &amp;lt;фамилия&amp;gt; tasks 1,2,3...&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вопросы можно задать по тому же почтовому адресу с темой &amp;lt;b&amp;gt;Java question&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Thinking in Java&amp;quot;, Bruce Eckel&lt;br /&gt;
* &amp;quot;Effective Java&amp;quot;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
== Coding conventions ==&lt;br /&gt;
В отличие от C++, для Java есть [http://www.oracle.com/technetwork/java/codeconv-138413.html общепринятые coding conventions] от компании Sun.&lt;br /&gt;
&lt;br /&gt;
В первую очередь обратите внимание на Naming Conventions. Настоятельно рекоммендуется отдавать предпочтение длинным мнемоническим идентификаторам.&lt;br /&gt;
&lt;br /&gt;
== Некоторые требования ==&lt;br /&gt;
&lt;br /&gt;
=== Форма поставки кода ===&lt;br /&gt;
Задания должны присылаться в jar архивах. В архивы включаются &amp;lt;b&amp;gt;только ваши исходники&amp;lt;/b&amp;gt; (.java файлы). &lt;br /&gt;
&lt;br /&gt;
Для создания архивов используйте [http://docs.oracle.com/javase/tutorial/deployment/jar/build.html утилиту jar]. &lt;br /&gt;
&lt;br /&gt;
Каждая задача должна находиться в пакете &amp;lt;b&amp;gt;ru.spbau.&amp;lt;ваша фамилия&amp;gt;.task&amp;lt;# задания&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве точки входа должен использоваться класс с именем &amp;lt;b&amp;gt;Main&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Можете складывать несколько заданий в один архив.&lt;br /&gt;
&lt;br /&gt;
=== Javadoc ===&lt;br /&gt;
Ко всем классам, интерфейсам и public/protected полям и методам &amp;lt;b&amp;gt;должен быть написан&amp;lt;/b&amp;gt; осмысленный [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags javadoc] на грамотном английском языке. &lt;br /&gt;
&lt;br /&gt;
Javadoc должен быть валидным (в частности, содержать все [http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#requiredtags required tags]). &lt;br /&gt;
&lt;br /&gt;
Настоятельно рекоммендуется использовать консольные или встроенные в IDE &amp;lt;b&amp;gt;средства проверки валидности javadoc&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пример сносного javadoc-а можно найти в любом классе стандартной библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Exceptions ===&lt;br /&gt;
При проверке ваших решений большое внимание будет уделяться тому как вы работаете с исключениями.&lt;br /&gt;
&lt;br /&gt;
Распространенные недочеты:&lt;br /&gt;
* Использование исключений для управления логикой программы&lt;br /&gt;
* Оборачивание проверяемых исключений в непроверяемые&lt;br /&gt;
* Подавление исключений&lt;br /&gt;
* Отсутствие вывода &amp;lt;b&amp;gt;читаемой&amp;lt;/b&amp;gt; полезной информации в блоках обработки ошибок&lt;br /&gt;
* Некорректное освобождение используемых ресурсов (в первую очередь, открытых ранее файлов)&lt;br /&gt;
* Перехват исключений слишком общeго типа&lt;br /&gt;
&lt;br /&gt;
== Общие замечания ==&lt;br /&gt;
* Некоторым вашим классам может понадобиться больше public методов, чем те, которые перечислены в условиях задач.&lt;br /&gt;
* Добавление дополнительных уровней абстракции приветствуется в том случае, если вы готовы обосновать принятые вами решения.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Можно ли использовать finalize для закрытия открытых файлов?&lt;br /&gt;
&lt;br /&gt;
A: Нет, нельзя. На лекциях обязательно будет разобрано почему.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли всегда использовать утилиту ant?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. С ней обязательно попрактикуемся отдельно, использовать ее не обязательно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Нужно ли присылать какие-либо файлы помимо .java (metadata, build.xml)?&lt;br /&gt;
&lt;br /&gt;
A: Нет, не нужно. Стандартный манифест файл, генерируемой утилитой jar, конечно можно оставить в архиве.&lt;br /&gt;
&lt;br /&gt;
== Примеры работы с &amp;quot;файловыми&amp;quot; исключениями ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены три известных нам способа корректно перехватить и обработать исключения при чтении из файла (аналогично для записи).&lt;br /&gt;
&lt;br /&gt;
Можете использовать тот, который вам больше по душе.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way I always tried to use dealing with &amp;quot;file-reading&amp;quot; exceptions.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void firstExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try {&lt;br /&gt;
			BufferedReader reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			try {&lt;br /&gt;
				while ((line = reader.readLine()) != null) {&lt;br /&gt;
					/*TODO something*/&lt;br /&gt;
					System.out.println(line);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (IOException e) {&lt;br /&gt;
				System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
				e.printStackTrace();&lt;br /&gt;
			} finally {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * The way to get rid of one level of try blocks. &lt;br /&gt;
	 * Significantly reduces depth when dealing with several files. &lt;br /&gt;
	 */&lt;br /&gt;
	public static void secondExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		BufferedReader reader = null;&lt;br /&gt;
		try {&lt;br /&gt;
			reader = new BufferedReader(new FileReader(filename));&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened during reading. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} finally {&lt;br /&gt;
			if (reader != null) {&lt;br /&gt;
				try {&lt;br /&gt;
					reader.close();&lt;br /&gt;
				} catch (IOException e) {&lt;br /&gt;
					System.err.println(&amp;quot;Strange IOException happened during closing file. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
					e.printStackTrace();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Brand new Java7 way of dealing with this example.&lt;br /&gt;
	 * Uses try-with-resources statement.&lt;br /&gt;
	 * For more information see: &lt;br /&gt;
	 * http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html&lt;br /&gt;
	 * Remark: some exceptions that you dealt with in two previous examples might be suppressed here.&lt;br /&gt;
	 */&lt;br /&gt;
	public static void thirdExample() {&lt;br /&gt;
		String filename = &amp;quot;filename&amp;quot;; &lt;br /&gt;
		try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {&lt;br /&gt;
			String line;&lt;br /&gt;
			while ((line = reader.readLine()) != null) {&lt;br /&gt;
				/*TODO something*/&lt;br /&gt;
				System.out.println(line);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (FileNotFoundException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Couldn't find file: &amp;quot; + filename);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			System.err.println(&amp;quot;Strange IOException happened. Message: &amp;quot; + e.getMessage());&lt;br /&gt;
			e.printStackTrace();&lt;br /&gt;
		} &lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условие контрольной работы==&lt;br /&gt;
Сегодня мы будем писать игру крестики-нолики на поле размером NxN, где для выигрыша необходимо поставить K в ряд. &lt;br /&gt;
Присутствующие классы:&lt;br /&gt;
&lt;br /&gt;
Position - текущее состояние игрового поля. В игре крестики-нолики 1 - крестик, 2 - нолик, 0 - ничего нету. Метод toString должен выдавать состояние поля в виде таблицы чисел.&lt;br /&gt;
Например,&lt;br /&gt;
1100&lt;br /&gt;
0100&lt;br /&gt;
0222&lt;br /&gt;
0000&lt;br /&gt;
&lt;br /&gt;
Player - ИИ игрока для какой-нибудь игры. Чтобы определить для какой именно есть метод getGameType возвращающий Class самой игры. getName - имя ИИ. move - делает 1 ход и возвращает НОВЫЙ Position (а не измененный старый)&lt;br /&gt;
&lt;br /&gt;
XOPlayer - ИИ для игры XO.&lt;br /&gt;
&lt;br /&gt;
Game - класс абстрактной игры принимающий в качестве параметров конструктора двух игроков. Если класс игры не совпадает и классом игры у Player должен порождаться RuntimeException. Game реализует интерфейс Iterable, что позволяет итерироваться по позициям возникающим в процессе игры. В Game необходимо добавить метод позволяющий определить победителя.&lt;br /&gt;
&lt;br /&gt;
Создайте класс Tournament&amp;lt;T extends Game&amp;gt; implements Iterable&amp;lt;T&amp;gt;, который будет производить турнир среди различных ИИ для конкретной игры. В качестве параметра конструктора Tournament принимает следующее:&lt;br /&gt;
1) Каталог с class-файлами ИИ&lt;br /&gt;
2) Class&amp;lt;T&amp;gt; gameClass&lt;br /&gt;
3) Object[] - набор параметров конструктора соответствующего Game.&lt;br /&gt;
При этом должны быть загружены только те ИИ, которые соответствуют данной игре. Должен быть предусмотрен метод, который выдает результат турнира - таблицу вида&lt;br /&gt;
       Вася Петя Коля&lt;br /&gt;
Вася  1      1      0&lt;br /&gt;
Петя  2       0      0&lt;br /&gt;
Коля  0      1       1&lt;br /&gt;
Число - количество побед при двух партиях (в первой ходит первым первый игрок, во второй - второй) &lt;br /&gt;
&lt;br /&gt;
Проведите турнир для игры XO.&lt;br /&gt;
&lt;br /&gt;
В данной работе не требуется написать эффективный ИИ. Задача правильно реализовать предложенную архитектуру (далеко не идеальную :) ). Тем не менее, за хорошо написанный ИИ будут добавляться баллы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2256</id>
		<title>Комбинаторика 2013 1</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2256"/>
				<updated>2013-03-15T15:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Практические задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Практические задания ==&lt;br /&gt;
* [[Media:Homework2-1.pdf| Домашнее задание №1]]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdFBEQmFBRjByWVRLbDJ1T0diUWdVdUE#gid=0| Результаты домашних работ]&lt;br /&gt;
&lt;br /&gt;
== Программа курса ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2255</id>
		<title>Комбинаторика 2013 1</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2255"/>
				<updated>2013-03-15T15:27:55Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Практические задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Практические задания ==&lt;br /&gt;
* [[Media:Homework2-1.pdf| Домашнее задание №1]]&lt;br /&gt;
* [Результаты домашних заданий: https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdFBEQmFBRjByWVRLbDJ1T0diUWdVdUE#gid=0| Результаты домашних работ]&lt;br /&gt;
&lt;br /&gt;
== Программа курса ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Homework2-1.pdf&amp;diff=2254</id>
		<title>Файл:Homework2-1.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Homework2-1.pdf&amp;diff=2254"/>
				<updated>2013-03-15T15:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2190</id>
		<title>Комбинаторика 2013 1</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2013_1&amp;diff=2190"/>
				<updated>2013-02-27T16:12:31Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Практические задания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Практические задания ==&lt;br /&gt;
&lt;br /&gt;
Результаты домашних заданий: https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdFBEQmFBRjByWVRLbDJ1T0diUWdVdUE#gid=0&lt;br /&gt;
&lt;br /&gt;
== Программа курса ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Список литературы ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2012&amp;diff=2114</id>
		<title>Комбинаторика 2012</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2012&amp;diff=2114"/>
				<updated>2013-01-07T19:08:04Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Лекции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
Практика - Краско Евгений&lt;br /&gt;
&lt;br /&gt;
Практика - Диевский Алексей&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
* [[Media:Глава_1.pdf| Глава 1]]&lt;br /&gt;
* [[Media:Глава_2.pdf| Глава 2]]&lt;br /&gt;
* [[Media:Глава_3.pdf| Глава 3]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [[Media:Homework1-1.pdf| Домашнее задание №1]]&lt;br /&gt;
* [[Media:Homework2.pdf| Домашнее задание №2]]&lt;br /&gt;
* [[Media:Homework3.pdf| Домашнее задание №3]]&lt;br /&gt;
* [[Media:Homework4.pdf| Домашнее задание №4]]&lt;br /&gt;
* [[Media:Homework5.pdf| Домашнее задание №5]]&lt;br /&gt;
* [[Media:Homework6.pdf| Домашнее задание №6]]&lt;br /&gt;
* [[Media:Homework7.pdf| Домашнее задание №7]]&lt;br /&gt;
&lt;br /&gt;
== Зачётная контрольная ==&lt;br /&gt;
* [[Media:Зачётная_Контрольная.pdf| Зачётная контрольная]]&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHZLQ3haNHVxZHFlVVlGTExTZXNPWkE&amp;amp;pli=1#gid=3| Результаты домашних работ]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_3.pdf&amp;diff=2113</id>
		<title>Файл:Глава 3.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_3.pdf&amp;diff=2113"/>
				<updated>2013-01-07T19:07:50Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_2.pdf&amp;diff=2112</id>
		<title>Файл:Глава 2.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_2.pdf&amp;diff=2112"/>
				<updated>2013-01-07T19:07:38Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: загружена новая версия «Файл:Глава 2.pdf»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2012&amp;diff=2110</id>
		<title>Комбинаторика 2012</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D0%BA%D0%B0_2012&amp;diff=2110"/>
				<updated>2012-12-20T14:01:36Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Лектор - Омельченко Александр Владимирович&lt;br /&gt;
&lt;br /&gt;
Практика - Краско Евгений&lt;br /&gt;
&lt;br /&gt;
Практика - Диевский Алексей&lt;br /&gt;
&lt;br /&gt;
== Лекции ==&lt;br /&gt;
* [[Media:Глава_1.pdf| Глава 1]]&lt;br /&gt;
* [[Media:Глава_2.pdf| Глава 2]]&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
* [[Media:Homework1-1.pdf| Домашнее задание №1]]&lt;br /&gt;
* [[Media:Homework2.pdf| Домашнее задание №2]]&lt;br /&gt;
* [[Media:Homework3.pdf| Домашнее задание №3]]&lt;br /&gt;
* [[Media:Homework4.pdf| Домашнее задание №4]]&lt;br /&gt;
* [[Media:Homework5.pdf| Домашнее задание №5]]&lt;br /&gt;
* [[Media:Homework6.pdf| Домашнее задание №6]]&lt;br /&gt;
* [[Media:Homework7.pdf| Домашнее задание №7]]&lt;br /&gt;
&lt;br /&gt;
== Зачётная контрольная ==&lt;br /&gt;
* [[Media:Зачётная_Контрольная.pdf| Зачётная контрольная]]&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0AtjSko0XIgLWdHZLQ3haNHVxZHFlVVlGTExTZXNPWkE&amp;amp;pli=1#gid=3| Результаты домашних работ]&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%97%D0%B0%D1%87%D1%91%D1%82%D0%BD%D0%B0%D1%8F_%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F.pdf&amp;diff=2109</id>
		<title>Файл:Зачётная Контрольная.pdf</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%97%D0%B0%D1%87%D1%91%D1%82%D0%BD%D0%B0%D1%8F_%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F.pdf&amp;diff=2109"/>
				<updated>2012-12-20T14:00:57Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%AD%D0%BA%D1%80%D0%B0%D0%BD_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_BlackBerry&amp;diff=2095</id>
		<title>Экран блокировки для BlackBerry</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%AD%D0%BA%D1%80%D0%B0%D0%BD_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_BlackBerry&amp;diff=2095"/>
				<updated>2012-12-17T19:38:53Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Еженедельные планы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Описание==&lt;br /&gt;
Удобный экран блокировки для BlackBerry. Основные возможности состоят в быстром запуске приложений с экрана блокировки, вместе с тем экран не должен допускать возможность случайного разбокирования в кармане. &lt;br /&gt;
==Основные фичи==&lt;br /&gt;
*Возможность делать drag-and-drop иконок на сетке.&lt;br /&gt;
*Запуск приложений в один sweep с экрана блокировки.&lt;br /&gt;
*Физический движок, управляющий движением иконок (плавная анимация, подключенный акселерометр. Иконки реагируют на силу тяжести).&lt;br /&gt;
*Возможность добавлять и удалять иконки приложений на экране.&lt;br /&gt;
*Отсутствие вычислений, когда программа не видна пользователю (энергоэффективность).&lt;br /&gt;
*Автоматическая блокировка и разблокировка при действиях с механизмом слайдера.&lt;br /&gt;
*Текущее время, нотификации, другие данные, необходимые для быстрой оценки состояния телефона (заряд акб...).&lt;br /&gt;
&lt;br /&gt;
==Дополнительные фичи==&lt;br /&gt;
*Подключенный сенсор яркости, возможность регулировки его настроек.&lt;br /&gt;
*Возможность редактировать набор клавиш, нажатие которых захватывается (управление плеером, приглушение звука).&lt;br /&gt;
*Датчик приближения (если API позволит)&lt;br /&gt;
*Мультитач при переупорядочивании иконок&lt;br /&gt;
*Возможность работы с помощью оптического трэкпада/трэкбола (в зависимости от модели телефона).&lt;br /&gt;
*Разблокировка ускорением телефона.&lt;br /&gt;
&lt;br /&gt;
==Репозиторий==&lt;br /&gt;
http://code.google.com/p/phone-lock/&lt;br /&gt;
&lt;br /&gt;
==Еженедельные планы==&lt;br /&gt;
*1 ноября: Физический движок. Работа с сенсорным экраном (синглтач). Разблокировка в одно движение с переходом на нужное приложение. Drag-and-drop иконок. Реакция на слайдер.&lt;br /&gt;
*8 ноября: Подключенный акселерометр, отсутствие вычислений в фоне (энергоэффективность).&lt;br /&gt;
*15 ноября: Работа с датчиком приближения.&lt;br /&gt;
*29 ноября: Экран настроек. Способность программы ''персистить сеттинги'': состояние сохраняется между запусками.&lt;br /&gt;
*6 декабря: Отображение заряда аккумулятора, возможность добавлять приложения на экран блокировки и удалять их.&lt;br /&gt;
*17 декабря: Отображение времени и даты. Возможность захватить кнопку mute (часто нажимается в кармане). Проект завершён.&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%AD%D0%BA%D1%80%D0%B0%D0%BD_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_BlackBerry&amp;diff=2094</id>
		<title>Экран блокировки для BlackBerry</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%AD%D0%BA%D1%80%D0%B0%D0%BD_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_BlackBerry&amp;diff=2094"/>
				<updated>2012-12-17T19:38:10Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Еженедельные планы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Описание==&lt;br /&gt;
Удобный экран блокировки для BlackBerry. Основные возможности состоят в быстром запуске приложений с экрана блокировки, вместе с тем экран не должен допускать возможность случайного разбокирования в кармане. &lt;br /&gt;
==Основные фичи==&lt;br /&gt;
*Возможность делать drag-and-drop иконок на сетке.&lt;br /&gt;
*Запуск приложений в один sweep с экрана блокировки.&lt;br /&gt;
*Физический движок, управляющий движением иконок (плавная анимация, подключенный акселерометр. Иконки реагируют на силу тяжести).&lt;br /&gt;
*Возможность добавлять и удалять иконки приложений на экране.&lt;br /&gt;
*Отсутствие вычислений, когда программа не видна пользователю (энергоэффективность).&lt;br /&gt;
*Автоматическая блокировка и разблокировка при действиях с механизмом слайдера.&lt;br /&gt;
*Текущее время, нотификации, другие данные, необходимые для быстрой оценки состояния телефона (заряд акб...).&lt;br /&gt;
&lt;br /&gt;
==Дополнительные фичи==&lt;br /&gt;
*Подключенный сенсор яркости, возможность регулировки его настроек.&lt;br /&gt;
*Возможность редактировать набор клавиш, нажатие которых захватывается (управление плеером, приглушение звука).&lt;br /&gt;
*Датчик приближения (если API позволит)&lt;br /&gt;
*Мультитач при переупорядочивании иконок&lt;br /&gt;
*Возможность работы с помощью оптического трэкпада/трэкбола (в зависимости от модели телефона).&lt;br /&gt;
*Разблокировка ускорением телефона.&lt;br /&gt;
&lt;br /&gt;
==Репозиторий==&lt;br /&gt;
http://code.google.com/p/phone-lock/&lt;br /&gt;
&lt;br /&gt;
==Еженедельные планы==&lt;br /&gt;
*1 ноября: Физический движок. Работа с сенсорным экраном (синглтач). Разблокировка в одно движение с переходом на нужное приложение. Drag-and-drop иконок. Реакция на слайдер.&lt;br /&gt;
*8 ноября: Подключенный акселерометр, отсутствие вычислений в фоне (энергоэффективность).&lt;br /&gt;
*15 ноября: Работа с датчиком приближения.&lt;br /&gt;
*29 ноября: Экран настроек. Способность программы ''персистить сеттинги'': состояние сохраняется между запусками.&lt;br /&gt;
*6 декабря: Отображение заряда аккумулятора, возможность добавлять приложения на экран блокировки и удалять их.&lt;br /&gt;
*17 декабря: Отображение времени и даты. Возможность захватить кнопку mute (часто нажимается в кармане).&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%AD%D0%BA%D1%80%D0%B0%D0%BD_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_BlackBerry&amp;diff=2093</id>
		<title>Экран блокировки для BlackBerry</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%AD%D0%BA%D1%80%D0%B0%D0%BD_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%B4%D0%BB%D1%8F_BlackBerry&amp;diff=2093"/>
				<updated>2012-12-17T19:37:49Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: /* Еженедельные планы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Описание==&lt;br /&gt;
Удобный экран блокировки для BlackBerry. Основные возможности состоят в быстром запуске приложений с экрана блокировки, вместе с тем экран не должен допускать возможность случайного разбокирования в кармане. &lt;br /&gt;
==Основные фичи==&lt;br /&gt;
*Возможность делать drag-and-drop иконок на сетке.&lt;br /&gt;
*Запуск приложений в один sweep с экрана блокировки.&lt;br /&gt;
*Физический движок, управляющий движением иконок (плавная анимация, подключенный акселерометр. Иконки реагируют на силу тяжести).&lt;br /&gt;
*Возможность добавлять и удалять иконки приложений на экране.&lt;br /&gt;
*Отсутствие вычислений, когда программа не видна пользователю (энергоэффективность).&lt;br /&gt;
*Автоматическая блокировка и разблокировка при действиях с механизмом слайдера.&lt;br /&gt;
*Текущее время, нотификации, другие данные, необходимые для быстрой оценки состояния телефона (заряд акб...).&lt;br /&gt;
&lt;br /&gt;
==Дополнительные фичи==&lt;br /&gt;
*Подключенный сенсор яркости, возможность регулировки его настроек.&lt;br /&gt;
*Возможность редактировать набор клавиш, нажатие которых захватывается (управление плеером, приглушение звука).&lt;br /&gt;
*Датчик приближения (если API позволит)&lt;br /&gt;
*Мультитач при переупорядочивании иконок&lt;br /&gt;
*Возможность работы с помощью оптического трэкпада/трэкбола (в зависимости от модели телефона).&lt;br /&gt;
*Разблокировка ускорением телефона.&lt;br /&gt;
&lt;br /&gt;
==Репозиторий==&lt;br /&gt;
http://code.google.com/p/phone-lock/&lt;br /&gt;
&lt;br /&gt;
==Еженедельные планы==&lt;br /&gt;
*1 ноября: Физический движок. Работа с сенсорным экраном (синглтач). Разблокировка в одно движение с переходом на нужное приложение. Drag-and-drop иконок. Реакция на слайдер.&lt;br /&gt;
*8 ноября: Подключенный акселерометр, отсутствие вычислений в фоне (энергоэффективность).&lt;br /&gt;
*15 ноября: Работа с датчиком приближения.&lt;br /&gt;
*29 ноября: Экран настроек. Способность программы ''персистить сеттинги'': состояние сохраняется между запусками.&lt;br /&gt;
*6 декабря: Отображение заряда аккумулятора, возможность добавлять приложения на экран блокировки и удалять их.&lt;br /&gt;
*17 декабря: Отображение времени и даты. Возможность захватить кнопу mute (часто нажимается в кармане).&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A2%D0%B8%D0%BF%D1%8B.png&amp;diff=2090</id>
		<title>Файл:Типы.png</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A2%D0%B8%D0%BF%D1%8B.png&amp;diff=2090"/>
				<updated>2012-12-13T16:57:16Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%BB%D0%BE%D0%B8.png&amp;diff=2089</id>
		<title>Файл:Слои.png</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%BB%D0%BE%D0%B8.png&amp;diff=2089"/>
				<updated>2012-12-13T16:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;Krasko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Krasko</name></author>	</entry>

	</feed>