Всеки студент, който желае да разработва дипломна работа по тематики на нашата работна група е добре дошъл да избере някоя от изброените по долу теми. Това са само примерни теми и те са част от възможностите, които всеки може да допълни в зависимост от интересите си.
Реализиране на Unit тестове за SolidOpt
Цели
Да се реализират unit тестове върху функционалността на инструментариума SolidOpt. Да се изготви документация на тестваната функционалност.
Описание
Модулното тестване (Unit testing) е метод за валидиране и проверка на софтуера, при който програмистът тества отделните софтуерни модули на сорс кода дали са годни за използване. Модулът е най-малката част от приложението, която може да бъде тествана. В императивното програмиране модула може да бъде процедура, функция или метод.
Областта на дипломната работа е подобласт на осигуряване на качеството на софтуера (Quality Assurance). Дипломантите ще придобият по-широки познания по програмиране, разработване на тестови случаи за приложения, анализ на последователността на изпълнение, както и интеграцията им в система като SolidOpt.
Сложност
Средна/Висока.
Необходимо време
6-12 месеца.
Визуален редактор на математически формули
Цели
Реализация на .NET базиран визуален редактор на математически формули.
Описание
Математическата нотация е широко разпространен подход за записване и изразяване на формули, изрази и функции.
Областта на дипломната работа свързана с областта на визуалните езици за програмиране. Дипломантите ще придобият по-широки познания по програмиране, разработване на специализирани визуални дизайнери/редактори за специфични области (домейни). Ще бъдат приложени на практика съвременни подходи за дизайн и реализация на обектно-ориентирани визуални приложения (като MVC и други).
Сложност
Ниска/Средна.
Необходимо време
6-12 месеца.
Визуален редактор на блок схеми
Цели
Реализация на .NET базиран визуален редактор на блок схеми.
Описание
Блок схемите са класическа нотация за описание на алгоритми или процеси. Те изразяват потоците на контрола (flowchart, control flow diagram).
Областта на дипломната работа свързана с областта на визуалните езици за програмиране. Дипломантите ще придобият по-широки познания по програмиране, разработване на специализирани визуални дизайнери/редактори за специфични области (домейни). Ще бъдат приложени на практика съвременни подходи за дизайн и реализация на обектно-ориентирани визуални приложения (като MVC и други).
Сложност
Ниска/Средна.
Необходимо време
6-12 месеца.
Необходими предварителни познания
Необходими са познания в следните области:
- .NET (основно C#)
- Блок схеми (Control flow diagram)
- MVC
- Компютърна графика
Визуален редактор на схеми на потоците на данни (dataflow)
Цели
Реализация на .NET базиран визуален редактор на схеми на потоците на данни (dataflow).
Описание
Dataflow схемите са класическа нотация за описание на процеси на обработка на данни. Те изразяват потоците на данни (flowchart, dataflow diagram).
Областта на дипломната работа свързана с областта на визуалните езици за програмиране. Дипломантите ще придобият по-широки познания по програмиране, разработване на специализирани визуални дизайнери/редактори за специфични области (домейни). Ще бъдат приложени на практика съвременни подходи за дизайн и реализация на обектно-ориентирани визуални приложения (като MVC и други).
Сложност
Ниска/Средна.
Необходимо време
6-12 месеца.
Необходими предварителни познания
Необходими са познания в следните области:
- .NET (основно C#)
- Схеми на потоците на данни (Dataflow diagram)
- MVC
- Компютърна графика
Домейн специфични оптимизации за Plugin базирани системи
Цели
Да се реализират домейн специфични методи за оптимизация на plugin базирани системи, като се използва съществуващата инфраструктура на SolidOpt framework.
Описание
Plugin модулите са мощен инструмент за създаване на лесно разширяеми системи, но това обикновено влошава работата/бързодействието на цялата система. Един добър компромис може да се постигне, когато системата не може да се разширява по всяко време на работата си, а само като тя се стартира. Това отваря възможности за прилагане на оптимизации на цялата система и plugin-ите и за намаляване на влиянието на слабата свързаност на нейните модули върху бързодействието. Оптимизации като сливане на plugin модули с базовата програма, автоматично маркиране на класовете като sealed, девиртуализация на методи, премахване на някои от шаблоните за дизайн и т.н. са само примери за това как можете да постигнат по-добри резултати, без да губи гъвкавостта и добрия дизайн на системата. Резултатите от оптимизации могат да бъдат кеширани за да се избегне провеждането на тези тежки анализи и трансформации при всяко стартиране на програмата. Този подход позволява оптимизациите да се извършват само когато се добавят или се премахват модули.
Реализираното приложение трябва да бъде в състояние да се трансформира и да кешира резултата, след което трансформираната система трябва да се стартира. Трансформации трябва да се правят само ако кеша е невалиден (например набора от плъгини се е променил, конфигурацията се е променила и т.н.). Трябва да се помисли за рисковете за сигурността и дали преобразуването не може да бъде направено чрез системна услуга или демон.
Дипломантите ще придобият по-широки познания по програмиране на ниско ниво и създаване и автоматизирана трансформация на високомодулни софтуерни системи.
Сложност
Средна/Висока.
Необходимо време
6-12 месеца.
Създаване на 3D модели за игри
Цели
Да се създадат 3D модели на предмети и участници в различни игри с насоченост българското средновековие. Моделите трябва да могат да се използват в Unity и в други подобни системи за създаване на игри.
Описание
Областта на т.нар. сериозни игри изисква множество 3D модели, който да могат да се използват за целите на обучението.
Моделите трябва да включват геометрия, текстури, материали, скелет (и скелетна анимация), специални ефекти (системи частици и др.) и др. За накои модели част от тези елементи може да не са необходими в зависимост от тяхното естество.
Сложност
Средна/Висока.
Необходимо време
6-12 месеца.
Съвременни подходи при Автоматичното диференциране (AD)
Анотация
Автоматичното диференциране (AD) е полезна техника в области на научни изследвания като машинно обучение, изчислителна геометрия, физика, оптимизация и др. Този подход се различава от символичното диференциране и численото диференциране. AD позволява автоматично изчисляване на производни на функции (зададени най-често като код написан на ЕП от високо ниво, например C++) с висока точност и ефективност. Една от съвременните системи, реализираща AD е Clad. Тя позволява автоматично диференциране на C++ код, като се основава на инфраструктурата на LLVM и е плъгин за компилатора на Clang. Тя не само опростява процеса на диференциране, но също така подобрява производителността и точността на числените изчисления в научните приложения.
В научните изследвания, където преобладават сложните математически модели, използването на AD чрез инструменти като Clad носи ново ниво на възможна сложност и скорост на изчисленията. Използвайки AD в C++ компилаторите, изследователите могат да се съсредоточат повече върху научните аспекти на своята работа, вместо да затъват в ръчни задачи за диференциране. Тази автоматизация не само ускорява процеса на разработка, но също така гарантира, че изчисленията са без грешки и с възможно най-ниска цифрова нестабилност.
Въпреки многото възможности на Clad тук има и много широко поле за развитие и иновации в сферата на AD и нейните приложения.
Необходимо време
1-2 години.
Incremental C++ - съвременни REPL решения и изследвания
Анотация
Интерактивният/Incremental C++ представлява възможност за изпълнение на C++ код в реално време, като потребителят може да въвежда и тества свои програми директно в среда, която поддържа интерактивност (REPL подход). Една от съвременните реализации на този подход в C++ е Clang-Repl - система базирана и разширяваща възможностите на Clang.
Въпреки възможностите си за висока производителност, C++ не е първият език за програмиране, който идва на ум за бързо разработване на надеждни приложения, главно поради дългите цикли редактиране-компилиране-изпълнение. Това се премахва от системи от рода на Cladg-Repl, което ги прави "C++ интерпретатора" Clang-Repl практически приложим за: Data Science (Интерактивно изследване на данни и интерфейси, което прави сложните библиотеки и данни по-достъпни за потребителите), CUDA (Разширението на Clang-Repl с CUDA пренася работата на Interactive C++ към GPU, без да губи производителност и съвместимост със съществуващия софтуер), Проучвателното програмиране (Бързо възпроизвеждане на резултатите, което е от решаващо значение по време на проучвателната фаза на проекта), Jupyter Notebooks (Interactive C++ може да се интегрира с Jupyter Notebooks, осигурявайки бързо прототипиране и визуално учебно съдържание за потребителите на C++) и др.
Текущите изследвания в проекти като Cling, Clang-Repl, Xeus-cpp и др. имат за цел да предоставят практически използваеми интерактивни възможности на езика за програмиране C++. Идеята е да се даде възможност за динамична оперативна съвместимост, за бързо създаване на прототипи и проучвателно програмиране, които са от съществено значение за научните изследвания и др.
Необходимо време
1-2 години.
Съвременни генеративни подходи в Геометричното (3D) моделиране
Анотация
Геометричното (3D) моделиране е широко използвано за създаване на цифрови модели на реални или въображаеми обекти. Този процес използва много различни подходи, като някои от тях са явни - B-Rep (мрежи от точки свързвани в многоъгълници за да създадат апроксимации на обектите, сплайнови криви и повърхности и др.), облаци от точки (PCL) и др. Някои от подходите използват неявно задаване на геометрията на моделите - F-Rep, Iso Surfaces и др. 3D моделирането с такива представяния има приложения в широк спектър от области, като видеоигри, филми, архитектура, инженерство, медицина и др.
Невронните мрежи са математически модели, вдъхновени от невронните мрежи в човешкия мозък. Те са способни да извличат сложни модели от данни, включително изображения и 3D модели. В контекста на геометричното моделиране на 3D обекти, невронните мрежи могат да бъдат използвани за: Генериране на 3D модели (обучени невронни мрежи могат да създават нови 3D форми, като се базират на някакви входни данни), Оптимизация на форми (невронните мрежи могат да помогнат за оптимизиране на формите на 3D обектите, например за по-ефективно използване на материали или за подобряване на структурата им. Тези приложения са важни за създаването на сложни и реалистични 3D модели.), Сегментация на обекти и др.
Използването на невронни мрежи за геометрично моделиране на 3D обекти представлява интересно поле, защото то може да свърже явните и неявните подходи в моделирането. Невронните мрежи са "черни кутии", което затруднява разбирането на тяхната вътрешна логика и влиянието им върху модела, но това дава и някои предимства. Предизвикателствата пред областта са много: Сложност на моделите (какви трябва да са характеристиките на невронната мреже в зависимост от комплесността на модела), Обучение и оптимизация (Обучаването на невронни мрежи изисква голям обем данни и време. Оптимизацията на архитектурата и хипер параметрите е също предизвикателство), Интерпретируемост, Обработка на 3D данни (3D обекти може да са представени като облаци от точки, воксели, съвкупности от многоъгълници и други явни или неявни описания. Преобразуването на тези данни в подходящ формат за невронните мрежи и обратно е предизвикателство.), и т.н. Важно поле на изследвания е и използването на генеративните невронни мрежи и други подобни подходи, за получаване на "нова геометрия", при фиксирани параметри (с помощта на подходящо обучение на невронните мрежи) или пренасяне на желани характеристики от едни 3D модели върху други.
Необходимо време
1-2 години.
GeneROOT – иновативни подходи в биоинформатиката
Анотация
Извличането на човешкия геном исторически е поставяло значителни технологични и финансови предизвикателства, често надхвърлящи милиони долари. Последните подобрения в техниките за извличане значително намаляват тези разходи, което довежда до широкомащабно извличане и съхранение на геномни данни. За илюстрация, данните, извлечени от човешкия геном, обикновено възлизат на приблизително 500 GB. Анализирането на такива данни за различни изследователски цели често включва големи групи от субекти, което води до набори от данни, които достигат обем от порядъка на петабайти (PB). Това нарастване на обема на данните повдига критични проблеми, свързани със съхранението, извличането, обработката и визуализацията им.
От друга страна, CERN има богат опит в управлението на подобни обеми от данни и организацията разработва софтуерна система, известна като ROOT за работа с големи масиви от физични данни. Проектът GeneROOT включва адаптиране на ROOT за обработка на биологични данни. В определени аспекти ранните прототипи на GeneROOT демонстрират превъзходство над част от вече установените софтуери за работа с данни, свързани с биоинформатика. GeneROOT притежава значителен потенциал за по-нататъшни подобрения в компресирането, съхранението, извличането, обработката и визуализацията на данни. Трябва да се изследва и потенциалът на GeneROOT за работа в HPC (high performance computing) среда.
Агентното моделиране е незаменим инструмент за изучаване на сложни биологични системи. Съществуващите симулационни платформи обаче не винаги се възползват напълно от съвременния хардуер и често имат софтуерен дизайн, специфичен за дадено конкретно задание.
BioDynaMo е нова платформа за симулация, която намира решение и за двата проблема. Платформата разполага с модулено и високопроизводително симулационно ядро. BioDynaMo може да се използва за симулиране на сценарии в сферите на: неврологията, онкологията и епидемиологията. За всеки сценарии се валидират добитите резултати с експериментални данни или аналитично решение. Получените резултати от ефективността показват, че BioDynaMo работи до три порядъка по-бързо от най-съвременните алтернативи. Това подобрение прави възможно симулирането на сценарии на използване с над един милиард агенти на един сървър, демонстрирайки потенциала, който BioDynaMo има за изследвания в областта на изчислителната биология.
Необходимо време
1-2 години.