Учебно-методические материалы для студентов кафедры АСОИУ

Курсовая работа

Целью выполнения курсовой работы является закрепление теоретических знаний и отработка практических навыков объектно-ориентированного проектирования и программирования на языке Java.

Выполнение курсовой работы рассчитано на один семестр и предполагает аудиторные занятия и самостоятельную работу студентов. Каждому студенту выдается индивидуальное задание, подписанное руководителем.

В течение семестра проводятся консультации с преподавателем дисциплины, во время которой обсуждаются сложности, с которыми сталкивается студент при выполнении задания. Руководитель оказывает помощь студенту в составлении графика работы, подборе необходимой литературы, проводит консультации, проверяет выполнение проекта и организует его защиту. Однако контроль руководителя не освобождает студента от ответственности за правильность и своевременность выполнения проекта. Основной объем при выполнении курсового проекта составляет самостоятельная работа.

Защита курсового проекта проводится в следующем порядке:

  1. Не позднее, чем за две недели до защиты курсового проекта студентом руководитель рассматривает код написанной программы (или демонстрационные примеры использования выбранной технологии) и допускает до защиты;
  2. Студент оформляет пояснительную записку и готовит доклад для выступления;
  3. Защита выполняется публично, путем доклада перед комиссией, в которой обязательно присутствует преподаватель дисциплины и другие преподаватели. В результате защиты оценивается сложность работы, качество оформления материалов, выполненный доклад. На основании усреднения баллов членов комиссии, а также баллов, полученным студентом в течении семестра за активную работу над проектом, выставляется оценка, даются рекомендации по публикации результатов, размещении результатов проекта на сайте кафедры АСОИУ (http://wiki.asoiu.com/).

Требования к пояснительной записке

Пояснительная записка является основным документом, предъявляемым студентом при защите курсовой работы. Текст должен быть представлен в виде односторонней распечатки на листах формата А4. По согласованию с преподавателем, отчетная документация (ПЗ) может быть представлена в виде веб-сайта, размещенного в сети Интернет.

Сокращение слов в тексте пояснительной записки не допускается, за исключением сокращений, установленных ГОСТ и общепринятых в русском языке. Если в пояснительной записке принята особая система сокращения слов или наименований, то необходимо привести перечень принятых сокращений.

Общее оформление пояснительной записки должно быть выполнено в соответствии с требованиями (на выбор учащегося) ГОСТ 7.32-2001 «Отчёт о научно-исследовательской работе», ГОСТ 2.105.ЕСКД. «Общие требования к текстовым документам», либо соответствовать правилам оформления в журнале «Омский научный вестник», при оформлении библиографического списка требуется использовать ГОСТ Р 7.0.5-2008. Текст должен быть изложен в хорошем научно-техническом стиле. Изложение текста пояснительной записки должно быть кратким, четким и вестись в совершенной форме, например: сделано, разработана и т.п.

Пояснительная записка должна включать в указанной последовательности:

Пояснительная записка должна давать полное представление о принципе решения (исследуемой технологии на основе языка Java) поставленной задачи с обоснованием выбранного алгоритма решения или выбранной архитектуре классов, форм представления входных и выходных данных, набора контрольных примеров, на которых тестировалась программа.

Схемы алгоритмов, диаграммы классов и тексты программ (листинги) входят в общий объем пояснительной записки и нумеруются. В пояснительной записке все страницы нумеруются. На титульном листе номер не ставят, на последующих страницах номер проставляют сверху симметрично тексту.

Законченная пояснительная записка подписывается студентом и руководителем. Не рекомендуется превышать общий объем пояснительной записки в 25-30 листов, в том числе введение – не более 2 листов.

Варианты заданий на курсовую работу

Темы курсовых работ должны согласовываться с преподавателем и базироваться на использовании языка Java для решения учебных, научных и производственных задач.

Ниже приводится ряд простых тем, ориентированных на выполнение обычных приложений Java. Для оригинальных работ возможно их выполнение в виде Android-приложений, веб-приложений с использованием многочисленных технологий, приложений для сотовых телефонов, приложений поддерживающих 3D-графику (Java 3D, JavaFx).

Тема 1: Генератор фрактальных изображений

Задача: Разработать генератор геометрических фракталов (снежинка Коха, ковёр Серпинского, кривая Дракона, кривая Леви и т.д.) на основе стандартных средств, предоставляемых Java 2D.

Тема 2: Программный комплекс для решения систем линейных алгебраических уравнений

Задача: Написать библиотеку математических функций, позволяющих решать как минимум тремя различными способами систему линейных алгебраических уравнений. Приложение должно быть обеспечено набором тестов JUnit.

Тема 3: Программный комплекс для решения обыкновенных дифференциальных уравнений

Задача: Написать программу решения для обыкновенных дифференциальных уравнений (например, методом Эйлера и Рунге-Кутты). Приложение должно быть обеспечено набором тестов JUnit.

Тема 4: Создание приложения «Сапёр»

Задача: Реализовать игру «Сапёр». Описание: обычно двухмерное прямоугольное игровое поле поделено на клетки или другие части, некоторые из которых содержат скрытые мины. Игрок открывает клетки, стараясь не попасть на мину. Если игрок откроет клетку (или другую область) с миной, игра заканчивается. Если же мины нет, то в клетке появляется число, обозначающее количество мин в соседних клетках (в различных вариантах игры соседство может определяться по-разному). Рассчитав при помощи таких чисел расположение мин, игрок может пометить соответствующие клетки специальной меткой, чтобы случайно не открыть их.

Тема 5: Построение SIS-модели распространения инфекций

Задача: Исследовать процесс распространения вирусов и реализовать SIS модель распространения вируса на квадратной решётке. SIS -модель («восприимчивый»-«инфицированный»- «восприимчивый») характеризует некоторые реальные инфекции, например, инфекционной простуды, при которой не вырабатывается иммунитета после перенесения болезни. Узлы в соответствии с этой моделью могут находиться в двух состояниях: здоровый (восприимчивый) и больной (инфицированный). Связи между элементами, по которым передаётся инфекция, представляется ребрами. В каждый момент времени больной элемент может заразить соседний здоровый с вероятностью u, в то время как сам инфицированный элемент может вылечиться с вероятностью d. Тем самым, коэффициент распространения l можно определить как l= u/d.

Тема 6: Реализация игры «Жизнь» Конвея

Задача: Место действия этой игры, «вселенная» – это размеченная на клетки поверхность, безграничная, ограниченная, или замкнутая. В компьютерных реализациях игры чаще всего используют поверхность тора. Каждая клетка на этой поверхности может находиться в двух состояниях: быть живой или быть мёртвой. Клетка имеет восемь соседей. Распределение живых клеток в начале игры называется первым поколением. Каждое следующее поколение рассчитывается на основе предыдущего по таким правилам:

Игрок не принимает прямого участия в игре, а лишь расставляет «живые» клетки, которые взаимодействуют согласно правилам уже без его участия.

Начальные конфигурации формируются случайно (с помощью генератора случайных чисел для заданной вероятности). Эволюция, порождаемая заданной начальной конфигурацией состояний клеток, может быть изучена в общем случае только путём её пошагового воспроизведения.

Тема 7: Реализация игры «Инь-Ян»

Задача: Игра «Инь-Ян» представляет собой клеточный автомат, состояния ячеек и правила переключения которого приближённо отражают закон единства и борьбы противоположностей. Ячейки автомата имеют три состояния: пустая ячейка (мёртвая), живая ячейка Инь и живая ячейка Ян. Соседние по миру ячейки (у каждой ячейки их 8), если они живые, называются соседями. Правила переключения определены таким образом, чтобы популяции ячеек Инь и Ян противоборствовали, но не могли развиваться друг без друга. Вот эти правила:

  1. Рождение. У пустой ячейки ровно три соседа (живых) и они не все одинаковые, то в ней рождается Ян, когда среди соседей только один Ян, или Инь, когда среди соседей только один Инь.
  2. Гибель от перенаселения (одиночества). Живая ячейка, имеющая больше четырех (меньше двух) соседей, умирает от перенаселения (от одиночества);
  3. Гибель в неравном противостоянии. У живой ячейки ровно четыре соседа, из которых большинство – противоположного типа – ячейка умирает.

Начальные конфигурации формируются случайно (с помощью генератора случайных чисел для заданных вероятностей Инь и Ян). Эволюция, порождаемая заданной начальной конфигурацией состояний клеток, может быть изучена в общем случае только путём её пошагового воспроизведения. Однако для каждого значения вероятности генерации можно отследить статистику результата через n шагов и говорить в каком случае будет больше вероятность вырождения автомата за заданное количество шагов.

Тема 8: Создание игры «Змейка»

Задача: Реализовать игру «Змейка» в виде апплета и разместить на сайте кафедры АСОИУ в разделе выполненных курсовых проектов.

Описание: Игрок управляет длинным, тонким существом, напоминающим змею, которое ползает по плоскости (как правило, ограниченной стенками), собирая еду (или другие предметы), избегая столкновения с собственным хвостом и краями игрового поля. В некоторых вариантах на поле присутствуют дополнительные препятствия. Каждый раз, когда змея съедает кусок пищи, она становится длиннее, что постепенно усложняет игру. Игрок управляет направлением движения головы змеи (обычно 4 направления: вверх, вниз, влево, вправо), а хвост змеи движется следом. Игрок не может остановить движение змейки.

Тема 9: Программирования искусственного интеллекта игры в «крестики-нолики»

Задача: Описание игры. Игроки по очереди ставят на свободные клетки поля 3х3 знаки (один всегда крестики, другой всегда нолики). Первый, выстроивший в ряд 3 своих фигуры по вертикали, горизонтали или диагонали, выигрывает. Первый ход делает игрок, ставящий крестики. По завершении партии выигравшая сторона зачёркивает чертой свои три знака (нолика или крестика), составляющих сплошной ряд.

Тема 9: Программирование и анализ агентной модели хищник-жертва

Задача: Допускается различные трактовки взаимоотношений хищников и жертв, благодаря которым можно объяснить циклические колебания их численности. Можно рассмотреть модель «Хищник-Жертва», на основе следующих достаточно типичных соглашений:

  1. среда обитания хищников и жертв условно делится на квадраты (ячейки, рис. 1) и таким образом, представляет собой грид (сеть, решётку), в ячейках которого могут находиться хищники, жертвы и жизненный ресурс жертв (трава);
  2. модель инициируется случайным распределением по гриду популяций хищников и жертв;
  3. взаимодействие популяций происходит пошагово: на каждом шаге хищник и жертва должны либо остаться в текущей ячейке, либо переместиться в одну из соседних ячеек;
  4. хищники и жертвы имеют внутренний параметр – энергию, которая тратится на каждом шаге;
  5. пополнение энергии жертвами происходит за счёт поглощения ресурса в ячейках грида, ресурс является возобновляемым и через заданное число шагов вновь появляется в ячейках;
  6. пополнение энергии хищниками происходит за счёт поглощения жертв;
  7. если энергия хищника (жертвы) опускается ниже критического уровня, то он (она) гибнет от голода;
  8. хищники и жертвы могут порождать себе подобных, разделяя с ними свою энергию.
Модель Хищник-Жертва

Рис. 1. Пример жизненного пространства в модели «Хищник-Жертва»

Необходимо реализовать представленную модель и средства её визуализации. Также отдельно возможности визуализации анализа динамики численности.

Тема 10: Исследование имитационной модели «Сахарный мир»

Задача: Реализовать модель «Сахарный мир» в виде апплета для запуска в браузере. Предусмотреть возможности интерактивного задания начальных конфигураций «города клеточных автоматов». Модель «Сахарный мир» описывается по следующим правилам:

  1. В каждый момент времени t существует конечное число агентов, расположенных в пространстве.
  2. Пространство является двумерной сеткой с равными клетками. В каждый момент времени t каждая клетка (x, y) содержит:
    • агента a (в (x, y) = a), если агент a находится в клетке (x, y), или ни одного агента (в (x, y) = пустое множество).
    • количество «сахара» rt (x,y).
  3. Агент рождается с двумя параметрами: зрение (количество клеток в решетке, которое можно видеть) и уровень метаболизма (количество сахара, съедаемое в единицу времени для выживания). Агент может переносить любое количество сахара. Если у агента нет должного количества сахара для еды, то он умирает.

Тема 11: Создание графического приложения для комплектования единого изображения из файлов .jpeg

Задача: Реализовать графическое приложение для формирования изображений из набора аватаров различных персонажей и атрибутов среды. Приложение должно предоставить возможность собрать из персонажей заданной области общую картину. В качестве атрибутов среды следует выбрать различные объекты предметной области. Например, если предметной областью является кафедра АСОИУ ОмГТУ, то такими атрибутами могут быть аудитории кафедры, кафедральная газета «9-й бит».

Тема 12: Редактор для рисования электрических схем

Задача: Разработка и реализация программы-редактора электрических схем, состоящих их резисторов. Предусмотреть преобразование параллельного и последовательного соединения сопротивлений (из двух элементов в один по соответствующему правилу).

Дополнительно

Помимо перечисленных тем, студентам представляется возможность выбрать альтернативные варианты, например из числа заданий по программированию под Linux или собственную тему, согласованную с преподавателем.

CC-BY-CA Юдин Е.Б., 05.02.2013