Á, diskrétku jsem měl před rokem na VŠ. Asi se shodnem, že dost záleží na osnově předmětu. Z té spousty látky, co jsme tam stihli probrat mi přišli zajímavý pro programování dvě témata.
Odhad časové složitosti algoritmůNejde ani tak o tu schopnost umět určit asymptotickou složitost algoritmu, jako spíš uvědomit si, jak je která "velká", jak s tím zamává rekurze, správně zvolený datový stuktury a tak. Když teď píšu kód a jsem nad O(n * log(n)) složitostí, hned se ptám, jestli nedělám něco špatně.
Práce s množinamiNež jsem měl diskrétku, nahlížel jsem na všemožné seznamy, listy, atd. jako na pole hodnot, ke kterým přistupuji pomocí indexu. Představa je to určitě na některý problémy hezká, ale je to takový přízemní, omezující. Když budeš na data nahlížet jako na množiny, nad kterými jdou dělat množinový operace, zobrazení, atd. a máš k dispozici nástroje jako
LINQ, získáš najednou nad celým problémem mnohem větší nadhled, kontrolu a posune tě v přemýšlení zas o něco dál
.
Jinak jak už tady někdo zmínil, nejužitečnější ze všech matik (pro programátora) mi přijde
teorie grafů (a algoritmy s tím související). Na grafy jde totiž napasovat ohromná spousta problému, u kterých to člověk ani nečeká a když znáš obecný algoritmus, umíš najednou vyřešit jakýkoliv z nich. Před grafy jsem to spojení mezi matikou a programováním vždycky viděl trochu chatrně, ale právě grafy mi dost otevřeli oči
.