Skip to content Skip to navigation

Tematyka prac magisterskich

Jestem otwarty na wszelkie pomysły pochodzące od magistrantów, a w szczególności dotyczące tematów związanych z:

  • bazami danych,
  • Graficznymi Interfejsami Użytkownika (ang. GUI),
  • wizualnym programowaniem,
  • wizualną analizą danych,
  • narzędziami CASE,
  • Zintegrowanymi Środowiskami Programistycznymi (ang. IDE),
  • systemami rozproszonymi,
  • wyszukiwaniem danych (np. systemy podobne do Google'a),
  • portalami/usługami internetowymi,
  • aplikacjami mobilnymi (Windows Phone, Android, iOS),
  • zastosowaniami Web API,
  • technologie chmurowe (np. Azure),
  • systemy wykorzystujące mikroserwisy,
  • rozwiązaniami ze świata IoT, mikrokontrolerów (np. Arduino) oraz Raspberry Pi.

Ogólne informacje dotyczące seminarium magisterskiego.

Niektóre prace magisterskie wykonane pod moim kierunkiem.

Poniżej znajdują się przykładowe tematy prac magisterskich. Ze względu na ich "hasłowość", należy je traktować jako inspirację dla własnych pomysłów, a nie gotowe rozwiązania.

  1. Wrappery do różnego rodzaju źródeł danych (relacyjnych, XML, pełnotekstowych, itp.) dla Mavigatora. Przedmotem pracy jest stworzenie wrappera, który odczyta dane w natywnym formacie (np. relacyjnym) i "prześle" je do Mavigatora w formacie rozumianym przez tę przeglądarkę.
  2. Narzędzie CASE ułatwiające projektowanie struktury danych w bazie danych czy repozytorium (np. Virtual Schemas obsługiwanych przez Mavigatora). Przedmiotem pracy jest stworzenie aplikacji umożliwiającej graficzne zaprojektowanie struktury bazy danych (klasy, asocjacje, itp.), a następnie wygenerowanie odpowiedniego pliku konfiguracyjnego (np. XML).
  3. Narzędzia CASE ułatwiające tworzenie oprogramowania.
    • Aplikacje do graficznego projektowania struktury (i zachowania) systemów komputerowych, np. rysujemy diagram klas (diagram dynamiczny) i generujemy odpowiadający mu kod.
    • Aplikacje generujące diagramy na podstawie istniejącego kodu źródłowego (lub pośredniego dla np. MS .NET).
  4. Systemy "heavy-duty". Przedmiotem pracy jest stworzenie dedykowanego systemu (dla konkretnych zastosowań, np. fakturującego), który umożliwia pracę pod bardzo dużym obciążeniem rzędu setek tysięcy (milionów) jednostek danych i wielu użytkowników. W celu uzyskania takiego efektu, dopuszczalne jest poświęcenie "generyczności" rozwiązania, na rzecz wąskiej specjalizacji.
  5. Tematy związane z projektami eGov-Bus (wirtualne repozytorium) oraz VIDE ("graficzny język programowania" związany z MDA). Zalecana bardzo dobra znajomość języka angielskiego.
  6. Kontekstowy system wspomagający dla zintegrowanego środowiska programistycznego ODRA-IDE. Praca polega na dodaniu, do istniejącego edytora, funkcjonalności znanej z Eclipse, MS Visual Studio, a polegającej na kontekstowym "podpowiadaniu" przez edytor, np. napisanie kropki po nazwie klasy powoduje wyświetlenie jej składników. Zalecane rozwiązanie należy stworzyć jako plugin dla edytora jEdit obsługującego SBQL. Pomocą mogą być podobne pluginy działające z kodem Java.
  7. Dodatek (ang. plugin) dla środowiska Eclipse. Przedmiotem pracy jest wykonanie dodatku modyfikującego lub rozszerzającego system Eclipse. W efekcie Eclipse byłoby w stanie pracować np. z jakimś nowym językiem programowania.
  8. Prototyp aplikacji do zarządzania Media Center PC (lub HTPC) dla systemu Linux. W pracy należy skoncentrować się na opracowaniu silnika do tworzenia Graficznego Interfejsu Użytkownika (ang. GUI) wykorzystującego istniejące komponenty do odtwarzania multimediów (np MPlayer). Zaproponowane rozwiązanie powinno obsługiwać plugin'y umożliwiające dodawanie nowej funkcjonalności oraz wykorzystywanie nowych efektów graficznych (do przejścia pomiędzy poszczególnymi ekranami). Ze względu na konieczność zachowania minimalnych wymagań sprzętowych zaleca się zastosowanie języka C++ oraz biblioteki SDL. Przykładowe systemy tego typu to: GeeXboX, Freevo, Media Portal.
  9. Silnik do wyświetlania na pulpicie komputera PC widget'ów działający w oparciu o modyfikowalne plugin'y. Prototyp systemu podobnego do Desktop Sidebar czy Ave Desk.
  10. Narzędzie do generowania animacji Flash, np. zawierających banery, reklamy, itp. Może być wykonane jako aplikacja desktopowa lub działająca poprzez www. Użytkownik miałby możliwość graficznego zdefiniowania różnych parametrów animacji, np. dla reklamy: logo, tekst, sposób animowania, itp.
  11. Generyczny system do analizy zawartości portali, np. narzędzie umożliwiające przetwarzanie informacji pochodzących z Allegro. Przykładowo użytkownik może sprawdzić średnią cenę jakiegoś towaru czy łączną liczbę sztuk. Dzięki dwóm systemom wtyczek (pluginów) system może pracować z różnymi portalami oraz dokonywać na nich różnych analiz. Aplikacja może być zrealizowanay przy użyciu technologii webowych lub desktopowych.
  12. Analogicznie jak powyższy pkt., ale język zapytań umożliwiający odpytywanie w/w źródeł danych (portali). Może być oparty na np. podejściu stosowym SBA/SBQL.
  13. Silnik do wyświetlania widgetów (podobnie jak pkt. 9), ale działający na urządzeniach przenośnych, np. PocketPC, Android. Można wzorować się na rozwiązaniu zastosowanym w Samsung Omnia, czy NetFront.
  14. Stworzenie języka wysokiego poziomu (deklaratywnego) ułatwiającego tworzenie oprogramowania na którąś z platform (np. Java, .NET, Ruby). Może to być jakiś język zapytań (coś w rodzaju LINQ) lub do deklaratywnego tworzenia GUI (coś jak GCL). Teoretycznie wymaga to modyfikacji kompilatora (jeżeli chcemy zintegrować nową składnię/możliwości z istniejącymi, a nie przesyłać je przez String'i), ale można wykorzystać pomysł dotyczący specyficznej notacji zrealizowany np. w projekt quaere. W skrócie polega on na odpowiednim zaprojektowaniu klas, metod, dziedziczeń, interfejsów.
  15. Dodanie własnej funkcjonalności do istniejących kompilatorów poprzez modyfikację ich kodu źródłowego. W przypadku Javy interesujący może być projekt Open JDK (realizowany w oparciu o upublicznione oryginalne JDK Suna), a szczególnie grupa zajmująca się modyfikacjami kompilatora. Ciekawy przykład pokazujący m.in dodanie własnego operatora.
  16. Stworzenie systemu CMS z bardzo dobrym GUI (AJAX) w oparciu o technologie Google App Engine (darmowy hosting) oraz Google Web Toolkit (wykorzystanie "czystej" Javy do implementacji aplikacji webowych). Przy odpowiedniej organizacji praca może być początkiem interesującego projektu open-source lub komercyjnego. Ze względu na rozmiary zadania dopuszcza się pracę w grupie. Przykładowy system CMS dla GAE: Vosao.
  17. Opracowanie IDE (Integrated Development Environment) działającego w oparciu o technologie webowe i obsługiwanego przez przeglądarkę. Można wykorzystać nowoczesne technologie AJAX (np. GWT) i własną konstrukcję części serwerowej (przykład ODRA-IDE, phpanywhere, Mozilla BespinCoderun StudioKodingen, AresCloud9 IDE, CodeMirror, Eclipse's Orion, ideone). Inne interesujące podejście może być oparte na stworzeniu części klienckiej działającej w przeglądarce (jakiś AJAX) i skorzystaniu z Eclipse działającego po stronie serwerowej - tak jak np. w projekcie w-ide.
  18. Stworzenie pluginu do IDE obsługującego platformę ODRA/SBQL. W przypadku Eclipse'a warto rozważyć użycie Xtext - a programming language framework; podobnie jak zrobiłem to w ODRA eIDE2.
  19. System do generowania portali opartych na technologii Flash, np. podobny do Wix.
  20. Język zapytań do wydobywania informacji ze źródeł danych stosowanych w systemach Web 2.0. Może być oparty na np. podejściu stosowym (SBA/SBQL) i umożliwiać odpytywanie np. strumieni RSS.
  21. Framework webowy umożliwiający wyświetlanie GUI strony/portalu w postaci zoptymalizowanej dla urządzeń mobilnych (np. podobny do rozwiązań Nitobi (Complete UI, PhoneGap)). W zależności od rodzaju urządzenia na którym przeglądana jest witryna, jej GUI zostanie wyświetlone w sposób "klasyczny" (standardowy PC) lub jako widgety obsługiwane kciukiem (tak jak aplikacje Android/iPhone). Pomocny może okazać się projekt Mobile Boilerplate.
  22. Witryna internetowa (lub aplikacja desktopowa) umożliwiająca przeglądanie treści dostępnych w Internecie (np. strumieni RSS) w sposób zbliżony do tradycyjnej gazety (np. podobny do wykorzystanego w  oprogramowaniu Flipboard, Surfboard, Zite, Taptu, PulseFeedlyFeedSquares). Oprócz funkcjonalności związanych z przeglądaniem może też sugerować nowe źródła informacji (np. na podstawie dotychczasowych wyborów użytkownika).
  23. Framework do tworzenia aplikacji webowych dla środowiska, np. ODRA (np. podobny do WebODRA2). Może wzorować się na popularnych rozwiązaniach takich jak: Ruby on Rails, MS ASP.NET MVC, czy Grails.
  24. Dedykowana aplikacja dla urządzeń mobilnych ułatwiająca zarządzanie jakimś systemem on-line. Np. dzięki różnym wtyczkom ułatwia administrowanie systemami CMS lub forami internetowymi. W odróżnieniu od klasycznego dostępu przez www jest zoptymalizowana dla małych ekranów i interfejsu dotykowego (np. gesty).
  25. Generyczny system do tworzenia aplikacji mobilnych (np. Android, iOS, WP) działających np. w oparciu o treści dystrybuowane jako WWW. Narzędzie może być wykonane w wersji on-line (np. Shoutem, Andromo) lub jako aplikacja instalowana lokalnie (np. podobna do iBuildApp).
  26. Narzędzie do projektowania witryn i/lub tworzenia prototypów oraz badania użyteczności. Może być podobne np. do InVision, AppGyver.
  27. Opracowanie założeń frameworku i/lub portalu umożliwiającego rozwiązanie jakiegoś ogólnego problemu. Może być wykonane w postaci np. szablonu projektu ASP.NET MVC dla Visual Studio.
  28. Framework/narzędzie do tworzenia aplikacji multimedialnych (gier) w oparciu o nowoczesne technologie webowe (HTML5, CSS3), np. podobny do PlayCanvas, Scirra Construct 2.
  29. Narzędzie do wizualnego programowania (aplikacji webowych, mobilnych, itp.), np. podobne do Touch Develop.
  30. Generyczny system do pobierania danych (web scrapping'u) z portali. Może być tak zaprojektowany aby cały proces był dostępny dla użytkowników nie mających dużej wiedzy informatycznej (patrz np. Web Scraping Tools for Non-Developers).
  31. Efektowny (np. 3D i WebGL) i efektywny interfejs (np. webowy) umożliwiający wygodny dostęp do baz danych. Różne przykłady zastosowania WebGL.
  32. Modyfikacja języka programowania i/lub narzędzie wspierające pracę z IDE (np. ciekawe refaktoringi). Pomocny może być np. Project Roslyn (nowy kompilator dla C# z otwartym kodem i bogatym API), platforma Xtext (dla Eclipse).
  33. Rozwiązania realizujące ideę IoT (Internet of Things) czyli różnego rodzaju (małe) urządzenia (np. Raspberry PiIntel GalileoIntel EdisonArduino) podłączone do Sieci i komunikujące się ze sobą. Szczególnie inetersujące, i w miarę łatwe do realizacji, może być wykorzystanie Raspberry Pi 2 razem z Windows 10.
  34. Generyczne rozwiązanie umożliwiające podłączenie mikrokontrolera (np. Arduino) do Sieci/Chmury. Może to być jakiś prosty serwer www (pozwalający np. na zwracanie stanu czujników) lub framework do realizacji Web API. Oczywiście wyzwaniem jest takie zaprojektowanie prototypu aby uwzględnić bardzo ograniczone zasoby (m.in. pamięć rzędu KB, a nie MB/GB).
  35. Wsparcie systemów chmurowych wykorzystujących mikroserwisy