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 30 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 2025 se uskuteční pátý 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 19. 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ů
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: MSIM, Open firmware Device tree
Podpora zástupných znaků (wildcards) v HelenOSím shellu
HelenOS je mikrojádrový operační systém, kde jsou služby operačního systému poskytovány pomocí samostatných (a relativně malých) aplikací. HelenOS běží na několika různých architekturách (Intel, MIPS, ARM, ...) a často slouží jako platforma pro experimentování s návrhem operačního systému nebo jeho komponent.
Cílem projektu by bylo přidat základní podporu pro tzv. zástupné znaky v shellu. Tj. v případě, že uživatel bude chtít například vymazat všechny soubory s příponou `.txt`, bude moci napsat jen `rm *.txt` místo nutnosti vyjmenovat všechny soubory (jak je tomu dosud).
Požadované znalosti řešitele: Git, C. Znalost shellu výhodou.
Large-scale modelování protein-ligand interakcí experimentálních proteinových struktur
Proteiny jsou klíčovými biomolekulami v živých organismech, kde plní širokou škálu funkcí – od katalýzy chemických reakcí po regulaci buněčných procesů. Mnoho léčiv funguje na principu cílené interakce s proteiny, což ovlivňuje jejich aktivitu a umožňuje léčbu různých onemocnění. Schopnost proteinu vázat malé molekuly (ligandy) závisí nejen na jeho sekvenci, ale také na jeho trojrozměrné struktuře, která může podléhat určitým změnám. Porozumění těmto změnám a jejich vlivu na interakce proteinů s ligandy je klíčové pro návrh nových léčiv a predikci biologických funkcí proteinů.
Cílem tohoto projektu je analyzovat variabilitu protein-ligand interakcí v experimentálně určených proteinových strukturách. Proteiny nejsou rigidní entity – jejich struktura se může měnit v závislosti na prostředí, což ovlivňuje jejich vazebná místa, tedy oblasti, kde interagují s malými molekulami. V rámci projektu bude využit soubor proteinů s dostupnými 3D strukturami v různých konformačních stavech a známými interakčními partnery. Pomocí molekulárního dockingu budou simulovány interakce ligandů s těmito proteiny v jejich různých stavech. Analýza výsledků umožní lépe pochopit, jak strukturní flexibilita ovlivňuje schopnost proteinů vázat své partnery.
Požadavky na studenta: Jedná se o výpočetní projekt a nevyžaduje žádné předchozí znalosti molekulární biologie. Student se seznámí s principy molekulárního dockingu a analýzou proteinových struktur.
Relevantní zdroje: Database of binding site conformations, Molecular docking, Charles University Structural Bioinformatics Group
Agentové simulace v tabulkově orientovaném programovacím systému
Agentové simulace jsou používané například pro ekonomické modelování nebo modelování epidemií. Abychom zpřístupnili tento způsob modelování širšímu rozsahu lidí, vyvíjíme na MFF UK open-source programovací nástroj ABM Sheets který umožní vývoj agentových simulací v tabulkovém prostředí podobném Excelu které navíc podporuje práci s časem.
Cílem projektu je adaptovat některé z existujících simulací napsaných v jiných jazycích do systému ABM Sheets. Řešitel se kromě ABM Sheets bude také muset seznámit se stávajícími nástroji pro agentové simulace. V rámci projektu je také možná přispět přímo do ABM Sheets, implementované pomocí jazyka TypeScript a Reactu, například doplněním potřebné chybějící funkcionality.
ABM Sheets: https://github.com/TomasBoda/abm-sheets-web/
NetLogo Models Library: https://ccl.northwestern.edu/netlogo/models/
Infrastruktura pro vizualizaci běhu programů a interaktivní prohledávání logů
Vývoj rozsáhlých aplikací v této době není prakticky možný bez podpory ve formě různých nástrojů. To platí také pro činnosti jako ladění (debugging), hledání chyb ve zdrojácích, nebo testování, a obecně při snaze dobře pochopit strukturu a chování programu který vytvořil někdo jiný. Například pokud dojde ke selhání aplikace za běhu, tak je nutné objevit chybu ve zdrojácích, která způsobila to selhání.
Důležité je tak mít k dispozici nástroje pro vizualizaci běhu programů (testů) a zobrazování konkrétních informací o jejich stavu (hodnoty proměnných).
Naším dlouhodobým záměrem je vytvořit infrastrukturu, která mimo jiné umožní:
- Vizualizaci podrobných kompletních záznamů o běhu daného programu (takzvaných "execution traces") s podporou interaktivní navigace oběma směry a zobrazování podrobnějších informací třeba o konkrétní proměnné, řádce zdrojáků nebo argumentech volání funkce.
- Interaktivní vyhledávání přes zdrojáky, výsledky testů, a zaznamenané informace o běhu programu (execution traces).
Uživatelské rozhraní bude především ve formě webové aplikace, kterou ale částečně doplní ovládání a spouštění určitých akcí z příkazové řádky. Ovládání musí podporovat některé z těchto akcí: rozbalit nebo schovat informace, označit konkrétní proceduru o které chceme získat nová data (jako třeba výsledek testu pro jiné hodnoty parametrů), a zobrazit informace o každém volání jedné konkrétní procedury v rámci běhu programu. Webové rozhraní by mělo prezentovat informace (zdrojáky, výsledky testů, apod) zároveň ve několika oknech.
Kompletní potřebná data o běhu programu a výsledcích testů vždy poskytne jiný systém. Formát těchto dat bude také možné dohodnout a upravit na základě potřeb řešitele tohoto projektu. Vstupní data budou obsahovat výsledky testů pro jednotlivé části aplikace (třídy, procedury) a hodnoty argumentů, především záznamy o běhu testů pro všechny možné volání dotčené procedury (funkce) s různými kombinacemi hodnot parametrů.

