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.

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. W efekcie nasze zapytanie wygląda, np. tak:

    Iterable<integer> lowNumbers = from("n").in(numbers).where(lt("n",5).select("n");

  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 (przez modyfikację kodu źróronie serwerowej - tak jak w projekcie dłowego kompilatora).

  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). 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.

  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 ODRA. Może być podobny do popularnych rozwiązań 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 niskich rozdzielczości.

  25. Generyczny system do tworzenia aplikacji mobilnych (np. Android, iOS, WP7) 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.

  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.