Název projektu: CodEx - The Code Examiner Lidé: ----- Martin Mareš - vedoucí projektu Martin Kruliš - návrh a analýza, koordinace prací, implementace webové části, dokumentace Jiří Svoboda - návrh a analýza, implementace webové části, testování, dokumentace Lukáš Turek - implementace webové části, testování, dokumentace, úpravy systému Mono pro použití v CodExu Tomáš Gavenčiak - implementace jádra vyhodnocovacího systému a jeho konfigurace Popis projektu: --------------- CodEx bude softwarový systém pro automatické vyhodnocování zdrojových kódů. Bude umožňovat zadávání jednoduchých algoritmických úloh řešitelům (např. studentům), kteří odevzdají svá řešení formou zdrojového kódu. Zdrojový kód bude v systému zkompilován existujícími kompilátory a v zabezpečeném prostředí (MO-evalu) spuštěn na sadu testovacích dat. Při testování se bere především ohled na korektnost výstupu testovaného řešení, ale stejně tak na jeho časovou a paměťovou složitost. Pro maximální pohodlí uživatelů a kompatibilitu s nejrůznějšími platformami bude celá aplikace nabízet přehledné webové rozhraní realizované jazyky XHTML a PHP s použitím techniky AJAX. Jádro vyhodnocovacího systému bude implementováno pomocí standardních Linuxových utilit a několika skriptů v Pythonu. Jako základ bude použita již existující aplikace (MO-eval od Martina Mareše). Jako rozhraní mezi webovou a vnitřní částí bude sloužit MySQL databáze a souborový systém. Webové rozhraní bude nabízet následující vlastnosti: - automatická registrace uživatelů s ověřováním (např. pro účely nasazení na MFF ověříme existenci nového uživatele v centrální DB SISu, než bude zaregistrován) - autentizace a autorizace uživatelů Přístup do systému je povolen pouze registrovaným uživatelům, kteří se při vstupu musí prokázat platnou kombinací přihlašovacího jména a hesla. Každý uživatel má v systému definována práva, která omezují přístup k jednotlivým částem systému a jeho funkcím. - správa uživatelů Součástí systému bude administrační rozhraní uživatelů (přídávání a mazání, nastavování práv, řešení zapomenutých hesel...) - dělení do skupin Uživatelé jsou děleni do skupin. Jeden uživatel může být) ve více skupinách. Systém nabídne jednoduchou správu skupin a přidávání/odstraňování uživatelů do/z skupin. Skupiny budou mít navíc nejrůznější vlastnosti (bodové limity, způsob hodnocení uživatelů...) - zadávání úloh V každé skupině může její správce (nebo jiný uživatel, který na to má právo) zadat k řešení nějaké úlohy. Úlohy jsou vybírány z existující databáze. Uživatelé ve skupině pak vidí zadání těchto úloh a mohou k nim odevzdávat řešení. Správce vidí řešení všech studentů, hodnocení, bodové součty ... - vytváření úloh Databázi existujících úloh půjde upravovat rovněž přes webové rozhraní. Každá úloha se skládá z textu zadání, sady testovacích dat a konfiguračních skritpů. Všechny tyto vlastnosti půjde editovat pomocí webových formulářů. Přiložené soubory (testovací data, obrázky ...) zde půjdou uploadovat, mazat a modifikovat. - archiv vzorových řešení Ke každé existující úloze bude veden archív vzorových řešení, která budou k dispozici lidem s potřebným oprávněním (správci skupin, zadavatelé úloh ...) - notifikační systém Do celého CodExu bude vetkán notifikační systém, který bude upozorňovat uživatele (pokud si to budou přát) emailem (nebo i jiným způsobem) na nové události (zadána nová úloha, změna v zadání ...) Celý systém bude vícejazyčný (čeština a angličtina) s formálním bezpoečnostním modelem a systémovým logem pro případné chyby a jiné nedostatky. Cílovou platformou pro projekt bude operační systém Linux a jednotlivé části aplikace (web, databáze, vyhodnocovací systém) budou moci běžet distribuovaně, díky čemuž bude aplikace schopná zpracovávat velké množství uživatelů pracujících současně. Předpokládané nasazení projektu: - Jako systém pro vyhodnocování domácích úkolů studentů na cvičení z předmětů Programování I a II (případně i jiných předmětů). - Sběrná aplikace pro řešení praktické úlohy Korespondenčního Semináře z Programování. - Systém pro veřejné soutěže v programování, které běží paralelně s programátorskými olympiádami a jinými podobnými akcemi.