Témata na Ročníkový projekt - NPRG045

V případě zájmu o řešení některého z projektů pište na adresu Tomas.Holan.at.mff.cuni.cz, subject "RP-2".

2017/18:

1) Generátor CRUD Nette aplikací

Při tvorbě webových aplikací se opakují stejné úkoly a stejné kroky: zobrazit seznam, zobrazit detail, přidávat, editovat a mazat záznamy, řešit přihlašování uživatele, změnu údajů, ošetřování dat před uložením do databáze i před zobrazením, routování apod.

Cílem projektu je

  1. Navrhnout způsob, kterým bude možné popsat strukturu aplikace, popis by měl zahrnovat strukturu dat, popisy jednotlivých stránek i přechodů mezi nimi a šablony výstupů
  2. Vytvořit program, který z daného popisu vygeneruje zdrojové soubory pro konkrétní framework (výchozí hodnota je Nette).
  3. Přitom cílem není vygenerovat PHP kód, který se následně bude upravovat, ale navrhnout výchozí popis tak, aby se veškeré změny daly zahrnout do něj a kód výsledné aplikace mohl být kdykoliv znovu vygenerován.
  4. Pro výsledný projekt je důležitější snadnost a jednoduchost použití než to, jak složité rysy webových aplikací (a použitého frameworku) jím půjdou popsat.
  5. Poznámka: Existuje práce "Generátor kódu pro webové aplikace v Nette". Cíle tohoto projektu a případné navazující bakalářské práce jsou ale jiné.

OS, jazyk:Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

2) Karetní hra Sushi Go!

Cílem projektu je naprogramovat karetní hru Sushi Go! (viz např. https://boardgamegeek.com/boardgame/133473/sushi-go) včetně netriviální umělé inteligence.

OS:Windows
Jazyk:Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci (zaměřenou na strategii hry).

1) Desková hra Le Havre

Cílem projektu je naprogramovat deskovou hru Le Havre (viz např. http://hrajeme.cz/hry/12481/), včetně netriviální umělé inteligence.

OS:Windows
Jazyk:Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci (zaměřenou na strategii hry).

  OBSAZENO!  

2015/16:

1) Fotbal - prostředí pro soutěž AI

Cílem projektu je

  1. Navrhnout a naprogramovat prostředí umožňující simulovat fotbalové utkání.
  2. Výstupem z utkání dvou týmů bude kromě skóre i záznam o utkání a podpora pro jeho prohlížení (například export do avi nebo vektorové animace).
  3. Přitom jednotliví hráči budou mít pro každé utkání zadané parametry vyjadřující jejich schopnosti, jako je třeba přesnost přihrávky, schopnost udržet míč, rychlost apod.
  4. Hráči každého týmu budou řízeni umělou inteligencí. Umělá iteligence bude mít jasně definovaný interface a součástí projektu budou i prototypy usnadňující vývoj vlastní umělé inteligence.
  5. Součástí projektu je i navrhnout a realizovat řešení, nejspíše ve formě webu (ale ne nutně webové aplikace), které dovolí veřejnosti posílat vlastní umělé inteligence a účastnit se s nimi soutěže.

OS, jazyk:Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2) Fotbal jako hra

Cílem projektu je

  1. Navrhnout a naprogramovat prostředí umožňující simulovat fotbalové utkání.
  2. Přitom jednotliví hráči budou mít pro každé utkání zadané parametry vyjadřující jejich schopnosti, jako je třeba přesnost přihrávky, schopnost udržet míč, rychlost apod.
  3. Hlavním cílem je zkusit zjistit, zda pro určité hodnoty parametrů vyjadřujících kvality hráčů existuje neprohrávající resp. vyhrávající strategie.

OS, jazyk:Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2014/15:

1) Desková hra Le Havre

Cílem projektu je naprogramovat deskovou hru Le Havre (viz např. http://hrajeme.cz/hry/12481/), včetně netriviální umělé inteligence.

OS:Windows
Jazyk:Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci (zaměřenou na strategii hry).

  OBSAZENO!  

2) Krávy - AI server

Cílem projektu je

  1. naprogramovat engine sehrávající karetní hru "6 bere" aka "Krávy" (viz např. http://cs.wikipedia.org/wiki/6_bere!),
  2. vybrat nebo navrhnout jazyk, ve kterém by bylo možné popisovat algoritmus pro výběr tahu
    (vstup: vlastní karty, stůl, doposud odehrané tahy)

OS:...
Jazyk:Vzhledem k předpokládanému nasazení na Webu asi PHP...

Tento projekt by mohl přerůst v bakalářskou práci zaměřenou na vytvoření serveru umožňujícího vkládat vlastní algoritmy a hodnotit je sehráním her proti ostatním algoritmům a na hledání optimální strategie hry.

  OBSAZENO!  

3) Tlačenice

Z různých dveří vlaku metra vystoupí lidé různých velikostí i rychlostí a všichni se chtějí dostat k eskalátorům a odjet.

Cílem projektu je

  1. navrhnout vstupní data popisující úlohu a jejich formát
  2. navrhnout formát výstupních dat popisujících pohyby osob
  3. naprogramovat načítání vstupních i výstupních dat a kontrolu korektnosti výstupních dat
  4. navrhnout a naprogramovat několik strategií/algoritmů pro hledání co nejkratšího řešení
  5. ...případně další části podle domluvy.

OS:...
Jazyk:Podle domluvy.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2013/14:

1) Karetní hra Citadela

Cílem projektu je naprogramovat karetní hru Citadela (http://cs.wikipedia.org/wiki/Citadela_%28hra%29), včetně netriviální umělé inteligence.

OS: Windows nebo Android
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci (zaměřenou na strategii hry).

  OBSAZENO!  

2) Desková hra Alhambra

Cílem projektu je naprogramovat deskovou hru Alhambra (http://www.deskovehry.cz/index.php/Alhambra), včetně netriviální umělé inteligence.

OS: Windows nebo Android
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci (zaměřenou na strategii hry).

  OBSAZENO!  

2012/13:

1) CPX Device Integrator

Autorem zadání a tím, kdo bude program používat je MUDr. Kryštof Slabý z Kliniky rehabilitace a tělovýchovného lékařství UK 2. LF a FN Motol,
já projekt povedu po stránce programátorské a formální.

Klíčové body:
* vytvoření aplikace k propojení jednotlivých zařízení v zátěžové laboratoři, náhrada přímého propojení PC s řídící aplikací (software pro ergometrii a EKG) a ovládaného ergometru
* online komunikace s latencí až vteřiny (tedy nikoliv realtime)
* modelový příklad je komunikace přes sériový port textovým protokolem rychlostí řádově desítky až stovky B/s
* různé protokoly pro komunikaci s koncovým zařízením (textové/binární, bezstavové/stavové) a různé kanály (RS232, USB, …), základ je jednoduchý textový protokol přes RS232
* možnost rozdělit na více projektů (core, aplikace pro manuální ovládání, aplikace pro podporu vyšetřovacích scénářů)
* interface shodný pro všechna zařízení (abstrakce koncového ovládaného zařízení), možnost dodatečného přidání druhu zařízení
* implementace v C#/.NET

OS: Windows
Jazyk: C#/.NET

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2) Prostředí pro hodnocení jízdních řádů

Úkolem práce je vytvořit prostředí, které bude sloužit k testování a měření generátorů jízdních řádů.

Vyhodnocovač na základě
   * topologie města (koleje, vzdálenosti)
   * individuálních požadavků na přepravu dopravu obyvatel
odsimuluje dopravu a ohodnotí zadaný jízdní řád.

Součástí řešení bude také
   * generátor individuálních požadavků na přepravu z nějakého globálního popisu (ve kterou denní dobu kolik odkud kam)
   * šablona zdrojového kódu generátoru jízdních řádů

OS: Podle volby řešitele.
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2011/12:

1) Zobrazování velkých grafů

Program bude sloužit k prohlížení velkých grafů resp. jiných vektorových obrázků ve formátu SVG, jako jsou mapy, diagramy atd.

Program bude umět (přinejmenším):
1) zobrazení pomocí „rybího oka“, kde část uprostřed zorného pole bude zobrazena v jiném měřítku než části na okrajích
2) plynulé přesouvání s rozjezdem a dobíháním
3) nastavování rozlišení (zoom)
4) možnost otevírat pohledy v nových oknech nebo záložkách
5) historii a možnost vracet se k minulému pohledu
6) možnost umisťování záložek a jejich ukládání, buďto přímo doprohlíženého souboru nebo do vlastního souboru záložek,
7) možnost přecházet mezi záložkami

Důraz je kladen na snadnost a příjemnost používání.

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2) OCR not

Vstupem programu bude fotografie stránky obsahující notový zápis.
Výstupem bude MIDI soubor.

Práce zahrnuje:
1) předzpracování obrazu
2) rozpoznánání jednotlivých prvků notového zápisu
3) vytvoření výsledného MIDI souboru (lze použít existující knihovny).

OS:Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

3) Rozpoznávání harmonie

Vstupem programu bude soubor v nějakém zvukovém formátu (mp3, wav...).
V první fázi během přehrávání souboru uživatel (myší nebo klávesnicí) označuje okamžiky, kdy se mění harmonie.
Tyto okamžiky definovat i zadáním času nebo extrapolací naklikaných časů.
Ve druhé fázi program pro jednotlivé časové intervaly určuje nejpravděpodobnější akord.

Práce zahrnuje:
1) uživatelské rozhraní pro zaznamenávání okamžiků změny
2) vlastní určování nejpravděpodobnějšího akordu pro jednotlivé úseky skladby.
3) zobrazování určené harmonie během přehrávání.

OS:Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

4) SQL dotaz jako PHP objekt

Cílem projektu je vytvořit třídu, která v konstruktoru/konstruktorech dostane jako parametr dotaz v jazyku SQL (různé konstruktory pro různé dialekty) a vytvoří jeho objektovou reprezentaci, která umožní snadno číst a nastavovat jednotlivé součásti dotazu.

Například pro příkaz SELECT bude možné zjistit a měnit seznam vybíraných hodnot, seznam tabulek ze kterých se vybírá, podmínky, položky určující pořadí atd.

Pokud bude podmínka složená, tak její části budou opět v seznamu, který bude možné číst i modifikovat.

Třída bude dále obsahovat metody, které dotaz převedou zpátky na SQL dotaz v různých dialektech jazyka SQL.
Pokud jednotlivé atributy uvedené ve výběru nebo v podmínkách budou mít uvedenu tabulku (např. SELECT zakaznik.id FROM zakaznik), bude vytvořený objekt zachycovat vztah k této tabulce, takže po změně (v tomto případě jediné) položky seznamu tabulek například na "zákaznice" bude výsledný dotaz mít tvar SELECT zakaznice.id FROM zakaznice.

Jazyk: PHP.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2010/11:

1) Kdopak to mluví?

Program bude určovat autora mluveného-psaného textu.

Řešitel
1) navrhne nejméně 20 charaktristik textu (jako délka věty, podíl spojek, citoslovcí, dalších slovních druhů, čárek...)
2) ze stenogramů jednání Poslanecké sněmovny parlamentu ČR postahuje vzorky nejméně 5 promluv pro každého z nejméně 10 poslanců
3) pomocí strojového učení přiřadí jednotlivým charakteristikám váhy, které nejlépe určují autora textu
4) vytvoří jednoduchou aplikaci, které bude možné předložit text a ona určí nejpravděpodobnějšího autora a vypíše míry pravděpodobnosti všech jednotlivých autorů.

OS: Windows nebo Webová aplikace
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2) Kdy to bylo? (extrakce časových údajů)

Program bude v českém textu rozpoznávat časové údaje
(např. první tisíciletí našeho letopočtu, za hodinu, osmdesátá léta, včera, potom, v šedesátých letech, o chvíli později, 2. března 2011...)
a přiřazovat jim čas tak, aby bylo možné tímto programem přečíst třeba životopis osoby nebo historii státu a ve výsledném textu by jednak časové údaje byly zvýrazněné a jednak by byly znázorněné na časové ose a jako seznam intervalů od-do.

Jazyk a OS: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

3) Robo Rallye

Zadáním je vytvořit počítačovou versi stejnojmenné deskové hry.
To zahrnuje naprogramovat jádro hry, uživatelské rozhraní pro hru více hráčů a podle potřeby upravit původní pravidla (čas na sestavování programu).

Implementace by měla obsahovat i jednoduchou AI, doplnění složitější AI by potom mohlo být tématem případné navazující bakalářské práce.

OS: Windows nebo Webová aplikace
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

4) Statická analýza a visualizace zdrojového kódu

Cílem je vytvořit program, který provede statickou analýzu zdrojového kódu a podle zadaných parametrů vytvoří jeho visualizaci.
Výsledkem by měl být nástroj, který např. pomůže v orientaci programátorovi, který dostal zdrojové kódy cizího projektu nebo dovolí vytvořit a vytisknout A0 plakát zobrazující daný projekt.

Vstupem bude množina souborů zdrojových textů a seznam vstupních bodů,
např. v jazyku PHP, ale části programu vázané na syntaxi jazyka budou psané tak, aby bylo možné vytvořit verse pro další jazyky.
Mezi zdrojovými kódy mohou být odkazy ("using" v C# nebo "require" apod. v PHP).

Program
1. ve fázi analýzy:

  • určí všechny zapojené/potřebné soubory
  • určí všechny funkce a pro každou z nich
    • zda je definovaná v zadaných souborech
    • počet volání (počítají se volání pouze z funkcí, které samy jsou volané)
  • - určí všechny globální proměnné a pro každou z nich
    • počet dosazení (včetně parametrů předávaných odkazem)
    • počet čtení
    • počet změn (příkazů, ve kterých se do proměné dosazuje hodnota závislá na její dosavadní hodnotě, např. operátorem +=)
2. ve fázi výstupu
  • vytvoří textové výstupy (HTML) zjištěných údajů
  • vytvoří grafy ve formátu SVG zobrazující
    • vztahy (volání) funkcí
    • vztahů (čtení, zápis, změna) funkcí a proměnných.

Na vytvoření grafu je možné použít jiný program (Graphviz - dot atd.), pokud budou výsledky použitelné.

V konfiguračních parametrech programu bude možné zadat omezení funkcí a proměnných podle výše zmíněných parametrů,
např. nezajímají mě funkce volané více než 20x, ani proměnné, které nikdo nečte.

OS a Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

5) Office-diff

Cílem projektu bude vyvinout způsob, jak porovnávat dokumenty MS Office (v první řadě Word-ovské texty) tak, aby bylo možné na ně používat některý ze systémů správy versí (Hg nebo SVN) a přitom zobrazovat rozdíly, určovat versi, ze které pochází která část dokumentu atd.

Řešitel
1) navrhne a implementuje porovnání dvou souborů
(lze předpokládat nainstalovaný MS Office, takže na čtení lze využít ActiveX/OLE))
2) zapojí porovnání do některého ze systémů pro správu versí tak, aby bylo možné versovat office-dokumenty spolu s ostatními soubory.

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2009/10:

1) O čem píší dnešní noviny

Program přečte internetové vydání novin (bude možné konfigurovat výchozí URL i jak se dostat na jednotlivé rubriky) a nalezne a vypíše pro každou rubriku dvojici (...případně jinou skupinu, možno upřesnit) slov s největším počtem výskytů v jedné větě (případně ještě váženo podle polohy, vzdálenosti, čárek mezi slovy atd.).

Bude možné v konfiguraci zadat seznam slov, která mají být ignorována a seznam dvojic (n-tic) slov, která mají být považována za jedno slovo (např. "Česká národní banka")

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2) DIFF-browser

Cílem je vytvořit buďto plug-in do internetového prohlížeče nebo samostatný prohlížeč, který dovolí

  1. uložit právě prohlíženou stránku
  2. zobrazovat rozdíl mezi aktuální a uloženou podobou stránky

Způsob zobrazováín rozdílů bude možná nastavovat (zda jen přidané části nebo i smazané, zda zobrazovat všechno a jen zvýrazňovat nebo jenom přidané části stránky atd.).

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

3) Články

Cílem je vytvořit webovou aplikaci pro evidenci článků.

Smyslem aplikace je usnadnit udržení přehledu o publikacích v daném oboru i sdílet znalosti o přečtených článcích.

U článků budou evidovány minimálně

  • bibliografické údaje (autor, název, vydavatel, stránky, správná citace...)
  • dostupnost (URL, případně přímo .pdf/.ps)
  • tématické kategorie
  • číselné hodnocení podle několika kriterií (originalita, kvalita zpracování, zajímavost...)
  • komentáře / textové hodnocení

Registrovaní uživatelé budou moci přidávat články, nastavovat jejich hodnocení, přidávat komentáře.

Server dokáže vybírat články z dané kategorie řazené podle hodnocení, počtu komentářů atd.

OS: Podle volby řešitele
Jazyk: PHP, nějaká SQL databáze.

Tento projekt by mohl přerůst v bakalářskou práci.

  OBSAZENO!  

2008/9:

1) Malostranská budova

Cílem práce je navrhnout způsob, kterým by bylo možné změřit a zaznamenat Malostranskou budovu MFF UK, konkrétně polohy a rozměry místností, oken, dveří.

Výsledkem práce by měl být:

  • navržený formát uchovávání údajů
  • přesný postup, jak údaje získávat a zachycovat
  • data popisující netriviální část Malostranské budovy MFF.

K přesnosti dat:

Kromě polohy a rozměrů místností, oken a dveří zadání NEKLADE explicitní požadavky na přesnost/jemnost dat. Důraz je spíše na použitelnost ve smyslu "co nejlepší data, jaká dokážete pořídit, když máte 30 minut na jednu místnost".

Ke způsobu ukládání dat:

  • optimálně textový soubor/textové soubory
  • musí umožnit spojovat odděleně pořízená data o více místnostech (identifikovat společné body)
  • bylo by dobré, kdyby dovoloval dodatečné doplňování a zjemňování přidáním informací (přidat výklenek, sloup)
  • součástí práce by měl být alespoň jeden program na konverzi do některého používaného formátu jako VRML/X3D, Blender, POVRay atd., aby bylo možné pořízená data zobrazit a prohlížet.

K postupu:

  • Měl by představovat přesný postup, který dovolí komukoliv pořizovat data o stavbách, včetně deníku dokumentujícího pořízování a zpracovávání odevzdávaných dat.
  • Může zahrnovat ruční měření, odečítání souřadnic z plánů, fotografií, použití stávajících dostupných programů i programů vytvořených v rámci projektu.
  • Může (a nemusí) využívat volitelných známých údajů - například stejná tloušťka zdi u všech oken v jedné stěně, kolmost podlahy a stěn (v místnostech, kde platí!) atd.
  • Získávání dat z fotografií (pokud bude zahrnuto) by mělo podporovat dopočítávání nedostupných nebo neviditelných míst (když například v rohu místnosti stojí skříň, dovolit dopočítat jeho souřadnice z nezakrytých čar (hrany podlahy a rohu)).
  • Programem/-my by mělo být také vyřešeno například popisování schodišť (výchozí a cílová poloha úseku, počet stupňů namísto zaměřování a ukládání jednotlivých schodů), zadávání podobných oken atd.

K výsledným datům:

  • Pořízení dostatečného množství dat bude testem a zároveň ukazatelem použitelnosti navrženého postupu.
  • Odevzdaná práce by měla obsahovat i pořízená data zkonvertovaná (a tedy prohlížitelná) v některém grafickém formátu - viz výše.

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.


  OBSAZENO!  

2) Evoluce řídícího programu

Na čtverečkové ploše se pohybují organismy řízené algoritmem v podobě programu zapsaného v jakémsi jednoduchém strojovém kódu. O svých akcích se rozhodují podle obsahu sousedních políček a podle obsahu svých paměťových buněk. Algoritmus představuje genetickou informaci organismu.

Možné akce jsou: otočit doleva, otočit doprava, krok vpřed, nedělat nic. Algoritmus může testovat okolní políčka, testovat obsah proměnných, zapisovat do proměnných a provádět akce. Provedením akce končí činnost algoritmu a jeden krok organismu.

Provedení každé instrukce stojí organismus určité množství energie, pokud nemá dostatek energie, hyne. Model nemusí zahrnovat páření, populace bude průběžně doplňována kopiemi a kříženci organismů s největší energií.

Na čtverečcích roste potrava, pro každý čtvereček s individuální pravděpodobností zadávanou jako mapa úrodnosti.

Cílem práce je naprogramovat prostředí umožňující experimentovat s evolucí těchto organismů a nějak čitelně zobrazovat algoritmy nejúspěšnějších jedinců.

Program by měl dovolit před spuštěním nastavovat úrodnost jednotlivých políček mapy, ale i během evoluce globálně měnit úrodnost všech políček najednou (měnit hodnotu, kterou se násobí úrodnost každého políčka), aby bylo možné během výpočtu měnit množství dostupné potravy.

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.


  OBSAZENO!  

3) Digitální evoluce organismu a ekosystému

...

  OBSAZENO!  


2007/8:

1) Evoluce využívání paměti

Na čtverečkové ploše se pohybují organismy řízené algoritmem v podobě tabulky. O svých akcích se rozhodují podle obsahu sousedních políček a podle svého vnitřního stavu představujícího paměť, algoritmus i maximální povolený počet stavů budou součástí genetické informace.

Možné akce jsou: otočit doleva, otočit doprava, krok vpřed, nedělat nic; s každou akcí může být svázán přechod do jiného stavu (pokud má organismus více než jeden stav).

Každá akce stojí organismus určité množství energie, pokud nemá dostatek energie, hyne. Populace je průběžně doplňována kopiemi a kříženci organismů s největší energií.

Na čtverečcích roste potrava, pro každý čtvereček s individuální pravděpodobností zadávanou jako mapa úrodnosti.

Cílem práce je naprogramovat prostředí umožňující experimentovat s evolucí těchto organismů, zejména s ohledem na množství využívané paměti (počet povolených stavů). Předpokládá se, že využití paměti by mělo jedince něco stát (ať už paušálně vyšší cenu operací za to, že má větší paměť nebo jen vyšší cenu operací, které mění stav), zajímá nás, při jaké ceně se paměť vyplatí v podobě lepšího algoritmu, vedoucího k lepšímu vyhledávání potravy.

Program by měl dovolit před spuštěním nastavovat úrodnost jednotlivých políček mapy, ale i během evoluce globálně měnit úrodnost všech políček najednou (měnit hodnotu, kterou se násobí úrodnost každého políčka).

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.
  OBSAZENO!  

2) Evoluce parametrů páření

Na čtverečkové ploše se pohybují organismy řízené algoritmem v podobě tabulky. O svých akcích se rozhodují podle obsahu sousedních políček a podle svého vnitřního stavu představujícího paměť, algoritmus i maximální povolený počet stavů budou součástí genetické informace.

Možné akce jsou: otočit doleva, otočit doprava, krok vpřed, nedělat nic; s každou akcí může být svázán přechod do jiného stavu (pokud má organismus více než jeden stav).

Každá akce stojí organismus určité množství energie, pokud nemá dostatek energie, hyne.

Na čtverečcích roste potrava, pro každý čtvereček s individuální pravděpodobností zadávanou jako mapa úrodnosti.

Organismy se rozmnožují pářením, podmínkou páření je vzájemné splnění podmínek páření. PODMÍNKY PÁŘENÍ každého jedince zahrnují:

  • dolní limit energie partnera
    (ti, kdo si neumí najít potravu, se nemohou pářit)
  • množství energie předávané narozenému potomkovi
  • u jedince VYVOLÁVAJÍCÍho páření: horní limit energie předané partnerovi (kolik je ochoten zaplatit)
  • u jedince PŘIJÍMAJÍCÍho páření: požadavek energie požadované po partnerovi (kolik chce dostat)
  • jedinec vyvolávající páření vyvolá páření akcí krok vpřed na políčko, kde stojí jedinec přijímající páření, přitom se jeho poloha nezmění, a v případě vzájemného splnění podmínek páření
    • dojde k předání energie od vyvolávajícího k přijímajícímu
    • vyvolávající může příštím tahem pokračovat
    • přijímající K tahů ČEKÁ a potom na náhodně vybraném nejbližším volném políčku vznikne nový jedinec
    • nový jedinec dostane od přijímajícího energii v množství daném parametrem přijímajícího

Při přiblížení organismů se vyhodnotí vzájemné podmínky páření a podle toho se každý organismus ve výhledu jeví jako jedinec VHODNÝ nebo NEVHODNÝ k páření. Jedinec, který ČEKÁ, je NEVHODNÝ k páření.

Cílem práce je naprogramovat prostředí umožňující experimentovat s evolucí těchto organismů, zejména s ohledem na vývoj parametrů páření.

Program by měl dovolit nastavovat úrodnost jednotlivých políček mapy i během evoluce globálně měnit úrodnost všech políček najednou (měnit hodnotu, kterou se násobí úrodnost každého políčka).

Dále by měl program dovolit sledovat statistické údaje jako je věk, počet dětí, cena za páření nebo množství energie předávané potomkům - jako průměrné hodnoty i jako histogramy rozložení jednotlivých hodnot v populaci.

OS: Windows
Jazyk: Podle volby řešitele.

Tento projekt by mohl přerůst v bakalářskou práci.
  OBSAZENO!  

3) Katedrální nástěnka

Cílem je vyvinout Webovou aplikaci, která by mohla sloužit jako nástěnka, s vkládáním příspěvků pomocí mailu.

Požadavky:

  • různé, za běhu doplňovatelné, typy příspěvků
    (např. upozornění na seminář, upozornění na přednášku, článek, recenze knihy, řešený problém, nabídka spolupráce...)
    - tj. ukládané uniformním způsobem
  • editace příspěvků Webovým rozhraním
  • vkládání příspěvků zasláním mailu dané struktury
    (pro každý typ příspěvků různé, autentikace heslem)
    - případné vyrozumění o nesprávnosti a nevložení
  • personifikovatelný vzhled stránek složený z oken
    (barva, umístění, velikost, obsah - typ příspěvků, filtr)
    - např. všechny konference s deadline v nejlbližších 30 dnech, všechny příspěvky všech typů vložené za poslední týden atd.
  • ...a připravené šablony těchto vzhledů
  • přibližné vyhledávání
  • volitelně mailové upozorňování na vložené příspěvky vyhovující daným filtrům

OS: Podle volby řešitele.
Jazyk: Podle volby řešitele.
DB: Volitelná, minimálně MySQL a PostgreSQL.

Tento projekt by mohl přerůst v bakalářskou práci.
  OBSAZENO!  

4) Přechody pro editor videa OpenVIP

Vedoucí: RNDr. Antonín Slavík, Ph.D.

Softwarový projekt OpenVIP byl obhájen na MFF v roce 2003; jedná se o volně šiřitelný editor videa pro Windows a Linux.

Cílem práce je rozšíření nabídky pluginů OpenVIPu umožňujících plynulý přechod mezi dvěma videoklipy. Předpokládá se vytvoření pěti až deseti pluginů (podle zvolené obtížnosti) v jazyce C++, grafického rozhraní v jazyce Python (knihovna wxPython) a dokumentace ve formátu DocBook.

Konkrétní podoba přechodů bude dohodnuta s vedoucím práce; inspiraci je možné hledat v jiných editorech videa (např. AviSynth, Windows Movie Maker). Důraz bude kladen také na efektivitu použitých algoritmů.

Tento projekt by mohl přerůst v bakalářskou práci


2006/7:

1) Nástroj pro generování WWW-PHP-MySQL aplikací

Obsahem projektu je navrhnout a implementovat knihovnu v PHP a vývojové prostředí, které by podobně jako třeba Macromedia Dreamweaver dovolovalo generovat současně klientskou (HTML) i serverovou (PHP a MySQL) část databázové aplikace.

Generované aplikace by měly zvládat zobrazení obsahu tabulky, volitelně s nastavitelným filtrem a tříděním, přidávání nových záznamů, dotazy nad více tabulkami (join), prohlížení a úpravu jednotlivých záznamů i zobrazení seznamů ve vztahu master-detail.

Tento projekt by mohl pokračovat bakalářskou prací.
  OBSAZENO!  

2) Nástroj pro automatické testování generovaných WWW stránek

Obsahem projektu je navrhnout a implementovat způsoby, které by podporovaly tvorbu automatických testů (generovaných) HTML-stránek.

Vytvářené testy by měly být co možno nejvíc odolné vůči změnám GUI, například pomocí pojmenovávání míst a objektův generovaných stránkách, odkazů pomocí struktury stránky (druhé políčko ve formuláři s nadpisem XYZ) atd.

Tento projekt by mohl pokračovat bakalářskou prací.
  OBSAZENO!  

3) Knihovna na symbolické počítání

Autorem zadání a konzultantem tohoto projektu je p.Ondřej Čertík (ondrej-at-certik.cz), v případě zájmu se obraťte přímo na něj

Cílem je vytvořit knihovnu pro symbolické počítání, kterou bude možno volat ze standardního vysokoúrovňového interpretovaného jazyka, nejlépe Pythonu. Knihovna může být psaná v čemkoliv, nejlépe však Python a/nebo C/C++. Jedná se v zásadě o opensource alternativu k Maplu/Mathematice. Prioritou není rychlost počítání, ale aby knihovna byla co nejjednodušší a šla snadno rozšiřovat o další symbolické algoritmy a funkce a aby byla snadno použitelná.

Zakladní prototyp jsem napsal v pythonu:
http://code.google.com/p/sympy/

Sympy umí základní operace se symboly, funkce (sin, cos, ...), derivovat a z pokročilejších věcí limity. Na stránkách projektu najdete podrobnější informace a důvody, proč se vyplatí mít takovouto knihovnu. Tzn., to základní už je hotovo, zbývá dodělat pokročilejší věci: faktorizace polynomů, symbolická integrace, komplexní čísla, řešení rovnic (obyčejných i diferenciálních), asymptotický rozvoj, symbolické matice a tenzory, nekomutativní objekty.

Jako ročníkový projekt je možno se zaměřit na libovolnou z těchto věcí, přičemž nejzajímavější je symbolická integrace. Případnou matematiku vysvětlím, na algoritmy (např. na integraci) mám článek, nebo společně vymyslíme.

Nápady, na co všechno by šlo (nebo už lze) Sympy použít jsou zde:
http://code.google.com/p/sympy/wiki/Motivation

Už teď Sympy občas někdo (z celého světa) použije, a myslím si, že pokud se dodělají výše zmíněné věci, tak to bude skutečně velice užitečná knihovna, kterou bude hodně lidí používat.

Tento projekt by mohl pokračovat bakalářskou prací.
  OBSAZENO!  


2005/6:

1) Interface pro programy v Delphi

Obsahem projektu je navrhnout a implementovat knihovnu pro Delphi, která by po svém začlenění do projektu umožňovala externí čtení a nastavování hodnot vlastností komponent projektu a posílání událostí jednotlivým komponentám.

Součástí řešení je i návrh způsobu, kterým jiné programy budou s touto knihovnou komunikovat.

Program používající tuto knihovnu bude možné jiným programem ovládat a také číst hodnoty jeho komponent, předpokládané využití je například pro testování nebo možnost "dávkového spouštění" GUI programů.

Tento projekt by mohl pokračovat bakalářskou prací. =OBSAZENO!

2) Vyhodnocování podobnosti zdrojových textů

Výsledkem projektu by měl být program, který bude porovnávat zdrojové texty v jazyku Pascal (TP, BP, Delphi).

Výstupem programu by měl být údaj udávající míru podobnosti.

Tato míra by přitom byla vypočítávána nějakým netriviálním skládáním hodnot dílčích měr (odhadovaný počet 10-20), počítajících podobnost co možno nejrůznějšími způsoby.

Kriteriem úspěšnosti programu je schopnost rozpoznat zdrojové texty odvozené jeden od druhého.

Tento projekt by mohl pokračovat bakalářskou prací. =OBSAZENO!

3) Vyhodnocování podobnosti českých textů

Výsledkem projektu by měl být program, který bude porovnávat české texty.

Výstupem programu by měl být údaj udávající míru podobnosti.

Tato míra by přitom byla vypočítávána nějakým netriviálním skládáním hodnot dílčích měr (odhadovaný počet 10-20), počítajících podobnost co možno nejrůznějšími způsoby.

Kriteriem úspěšnosti programu je schopnost rozpoznat texty odvozené jeden od druhého.

Tento projekt by mohl pokračovat bakalářskou prací. =OBSAZENO!

4) Yamaha DX7

Výsledkem projektu by měl být program, umožňující tvorbu zvuku stejným způsobem jako Yamaha DX7.

Tento projekt by mohl pokračovat bakalářskou prací. =OBSAZENO!


2004/5:

1) MIDI file

Struktura MIDI souborů je popsaná, ale nepracuje se s ní příliš dobře.

Obsahem projektu je navrhnout a implementovat objektové rozhraní (například jako ActiveX objekt), které umožní přistupovat k obsahu MIDI souboru způsobem odpovídajícím logice dat, tj. krom jiného místo událostí pracovat s notami, adresovat pomocí taktů a dob, pomocí výšek, zjistit, které noty znějí v daném okamžiku a podobně.

Tento projekt by mohl přerůst v bakalářskou práci zabývající se zpracováním hudby (např. harmonická analýza, doplnění harmonie, různé transformace hudebních souborů atd.). =OBSAZENO!

2) Makroprocesor

Obsahem projektu je vytvořit makroprocesor. Měl by mít obvyklé schopnosti jako parametry maker, podmíněné rozvíjení, makra definující makra, ale také možnost pomocí příkazů ve zpracovávaném textu měnit nastavení makroprocesoru, například klíčová slova (příkazy definování a vyvolávání maker) nebo vnořit zpracování jiného souboru (include).

Tento projekt by mohl přerůst v bakalářskou práci. =OBSAZENO!

3) Správce versí

Obsahem projektu je vytvořit program pro správu versí množiny textových souborů (zdrojové texty). Produkt by měl mít podobné vlastnosti jako jiné podobné programy (..CVS), měl by umět odpovídat na otázky typu ze které verse pochází tento řádek, jaké jsou rozdíly mezi versí X a versí Y, jaká byla četnost změn v období od-do atd.

Předpokládáme, že tento projekt bude pracovat jako lokálně spouštěný program, i když s možností odlišení více uživatelů. Mohl by dále přerůst v bakalářskou práci rozšířením o práci v síti včetně řešení možných kolizí, zabezpečení atd. =OBSAZENO!