Matfyz Summer of Code (MSoC) je program určený studentům vyšších ročníků středních škol, který nabízí možnost podílet se na vývoji zajímavého software v rámci projektů běžících na informatické sekci Matfyzu (Matematicko-fyzikální fakulty Univerzity Karlovy).

Vybraní studenti se během letních měsíců (červen - srpen) aktivně zapojí do vývoje software formou "vzdálené brigády" pod vedením zaměstnance fakulty, získají nějaké zkušenosti s prací na rozsáhlejším software a novými technologiemi, a navíc poznají Matfyz zevnitř.

Úspěšní řešitelé na konci projektu také získají odměnu ve formě stipendia (v maximální výši 40 tisíc korun). Tato finanční odměna má za hlavní cíl umožnit studentům, aby mohli věnovat dostatek času práci na řešení projektu (ve smyslu motta "flip bits not burgers"). Stipendia jsou poskytována ze soukromých prostředků podporovatelů, mezi něž patří Nadace RSJ, která rozjezd celého programu podpořila a nadále je jeho významným partnerem.

Všechny dotazy na program MSoC, pravidla a vypsané projekty, zasílejte prosím na emailovou adresu msoc@d3s.mff.cuni.cz. Aktuální seznam nabízených projektů je k dispozici zde ve spodní části této webové stránky.

Organizace - základní pravidla a časový přehled

V létě roku 2026 se uskuteční šestý ročník programu MSoC.

Zájemci se mohou přihlásit zasláním všech potřebných informací a dokumentů na emailovou adresu msoc@d3s.mff.cuni.cz nejpozději do 30. dubna.

Přihláška musí obsahovat zejména následující:

  • zvolené téma projektu z nabídky uvedené zde na této webové stránce
  • jméno a příjmení studenta
  • název a adresa střední školy
  • potvrzení o studiu v elektronické formě (podepsané zástupcem školy, naskenovaný výtisk nebo fotka)
  • popis dosavadních programátorských zkušeností
  • vyjádření učitele na příslušné střední škole například ve formě doporučujícího dopisu (podepsané, naskenovaný výtisk nebo fotka) adresovaného organizačnímu týmu MSoC

Doporučujeme zájemcům také přiložit zdrojáky několika reprezentativních programů, které doposud vytvořili.

Odesláním přihlášky udělujete souhlas se zpracováním poskytnutých informací a osobních údajů výhradně pro účely organizace programu MSoC.

Součástí procesu hodnocení jednotlivých přihlášek může být také vstupní "test" pro ověření technických znalostí a programátorských schopností uchazeče.

Výsledné rozhodnutí o přijetí do aktuálního kola programu MSoC bude každému zájemci oznámeno nejpozději do 18. května.

Průběh řešení každého projektu bude zahrnovat pravidelné konzultace s vedoucím projektu. Nabízíme také možnost osobní návštěvy Matfyzu, kde především v úvodní fázi řešení projektu to může být vhodná příležitost k určení jednotlivých dílčích úloh a vytvoření hrubého plánu činnosti na celé léto. Další návštěva může proběhnout na konci projektu za účelem předvedení výsledku.

Očekávaný celkový průběh každého projektu je ten, že v červnu daného roku se řešitel důkladně seznámí se technologiemi nezbytnými pro úspěšné řešení, zatímco jádro programátorských prací bude rozvrženo na letní prázdniny (červenec, srpen).

Seznam projektů

Controlability of recommender systems

Doporučovací systémy jsou dnes zásadní součástí webových projektů a tvoří stěžejní kanál pro komunikaci s uživateli na platformách jako je Netflix, Spotify, TikTok, Amazon, Zalando, Instagram, Steam, atp. Na rozdíl od vyhledávání doporučovací systémy na svém vstupu neočekávají explicitní dotaz od uživatele. Místo toho vytvářejí profily uživatelů na základě jejich předchozích interakcí se systémem a doporučují na základě relevance jednotlivých produktů k profilu daného uživatele. I když takový interakční model obvykle funguje poměrně dobře a nevyžaduje žádnou součinnost od uživatele, v některých situacích může selhávat. V takových případech by bylo vhodné mít možnost znalosti o uživateli upravit na základě jeho aktuální potřeby (vyjádřené například pomocí textových promptů jako "Dnes nemám náladu na komedie").

Cílem projektu je vytvořit extension do existující Streamlit aplikace prezentující výsledky doporučení (např. https://compressed-elsa-demo.streamlit.app/demo). Rozšíření by mělo uživateli zpřístupnit text-based případně jinou obdobnou kritiku výsledku doporučování. Kritiku uživatele je třeba následně zpracovat do podoby upraveného uživatelského profilu (využívající hidden layer ve sparse autoencoderu) a zobrazení upravených doporučení. K mapování uživatelovy kritiky na změnu jeho profilu je možné využít stávající metody (práce se pak může více zaměřit na implementační část a návrhsamotných interakcí), nebo experimentovat s inovativními postupy mapování.

Požadavky na řešitele: jedná se primárně o implementační projekt, předpokládá se znalost cílového prostředí (Python + povědomí o HTML, JS a CSS). Výhodou je základní přehled o problematice doporučovacích systémech, případně o metodách strojového učení, případně předchozí zkušenost s vytvářením aplikací ve Streamlit.

Vytváření modelů enterprise aplikací v systému Alloy

Typický proces vývoje rozsáhlých enterprise aplikací je složen z mnoha kroků, od sběru požadavků a vytváření design modelů až po implementaci jednotlivých komponent (a funkcí) v programovacích jazycích (C#, Java, SQL, atd), testování a následné uvedení do provozu (release). Design modely a specifikace jsou často vytvořeny jako určitá kombinace diagramů (v UML) a textového popisu, ale pouze v některých případech zapsány ve formálních jazycích. Příkladem takového jazyka pro modelování architektury software a klíčových algoritmů je Alloy. Modely vytvořené na začátku celého procesu vývoje software ale typicky rychle zastarávají, nejsou průběžně aktualizovány tak aby reflektovaly změny implementace (například přidávání dalších funkcí s ohledem na požadavky uživatelů). Dále pro takzvané legacy aplikace nebo software vytvořený pomoci LLM (metodou "vibe coding") formální modely nejsou k dispozici vůbec. Jedno možné využití těch modelů je hledání bezpečnostních zranitelností, například chybějících a nedostatečných kontrol uživatelských vstupů, mechanismů na řízení přístupu k citlivým datům (dokumentům) v případě informačních systémů, atd.

Hlavní cíl tohoto projektu bude vytvoření formálního modelu v jazyce Alloy pro vybranou enterprise aplikaci s vhodnými reprezentativními charakteristikami (využívání několika frameworků, přítomnost databázové vrstvy a webového rozhraní). Otestuje se tak vhodnost systému Alloy pro tento účel a náročnost realizace vytváření modelů pro existující software zpětně, a také se podaří identifikovat významná technická úskalí celého postupu. Důležitá hlediska (kritéria) jsou přesnost modelů a zachycení vlastností (funkcí) software relevantních pro bezpečnost.

Součástí projektu bude také psaní různých skriptů (v jazyce Python) k automatizaci některých kroků tvorby modelů a rozumné použití AI nástrojů založených na velkých jazykových modelech.

Mapa připojených zařízení v emulátoru MSIM

MSIM je simulátor jednoduchých počítačů s procesory MIPS a RISC-V. Cílem MSIMu není být rychlým simulátorem, ale především být předvídatelným prostředím pro výuku operačních systémů. I z tohoto důvodu je simulace procesoru velmi věrná, ale periferní zařízení jsou emulována v co nejjednodušší podobě.

Cílem projektu je naprogramovat emulaci nového pseudo-zařízení, které bude popisovat ostatní připojená zařízení v právě běžícím (simulovaném) stroji. Inspirací pro podobné zařízení je například PCI configuration space nebo (Open firmware) Device tree. Cílem není emulovat žádný z podobně komplexních standardů, ale nabídnout jednoduchý způsob jak detekovat připojená zařízení, který bude koncepčně odpovídat běžným praktikám současného hardwaru.

Požadované znalosti řešitele: C, Git, chápání konceptu paměťově mapovaných registrů (zařízení). Znalost MIPS nebo RISC-V architektury výhodou.

Odkazy: MSIMOpen firmware Device tree