Jarní soustředění KSP 2019

Seznam přednášek – Karolínka

Přihlásit

Hlasování o přednáškách na Jarní soustředění KSP již skončilo.

Níže se alespoň můžeš podívat na seznam přednášek, může Ti být inspirací nebo motivací třeba pro příští soustředění.

  • Základní přednášky
  • Pokročilé přednášky
  • Půlnoční přednášky
Rozbalit všechny přednášky
(Kliknutím na název přednášky zobrazíte její detail)

Základní přednášky

Mezi těmito přednáškami jsou věci, které by měl každý začínající programátor umět. Bez pochopení většiny věcí přednášených na těchto přednáškách se budete na pokročilých přednáškách, které na ně navazují, jen obtížně chytat. Doporučujeme proto nejdříve zvládnout tyto přednášky a osvěžit si nějaký základní programovací jazyk, než se pustíte do pokročilejších věcí.

Základy programování ("Má x=x+1 řešení?") [ZAKL]

Úvodní trojdílná přednáška pro ty, kteří mají s programováním jen malé, nebo dokonce žádné zkušenosti. Vysvětlíme si od základů problematiku programování, jako je zápis cyklů, podmínek a funkcí, ukážeme si základní datové typy (n-tice, seznamy, slovníky), datové struktury (fronta, zásobník) a zkusíme si prakticky naprogramovat několik základních algoritmů. Vše se bude ukazovat hlavně na jazyku Python, který je jednoduchý na naučení a přesto zároveň velmi mocný. Jednotlivé přednášky se budou prolínat s přednáškami ZALG.

Základy algoritmizace, složitosti a datových struktur ("Co by měl každý programátor znát.") [ZALG]

Základní vícedílný kurz algoritmů a datových struktur, který se bude prolínat se ZAKL. Jak poznat, který algoritmus je efektivnější? Přehled základních algoritmů. Co je to datová struktura a několik jejích ukázek. Vše si procvičíme na příkladech.

Grafy & algoritmy I ("Pokud jste ještě neslyšeli o informatických grafech, tak tato přednáška je právě pro vás.") [GA1]

Úvod z teorie grafů a použití grafů při řešení algoritmických problémů. Naučíme se hledat nejkratší cestu v bludišti, pochopíme základní princip, jak funguje GPS navigace a mnohé další. Vše si procvičíme na konkrétních příkladech.

Dynamické programování ("Kampak jsem si to jenom schoval?") [DYNP]

Dynamické programování je programátorská technika využívající velice prostinkého nápadu: Proč něco počítat několikrát, když to mohu spočítat jednou a výsledek si uložit? Na této přednášce si ukážeme, že tento jednoduchý nápad může pomoci efektivně vyřešit i poměrně obtížné úlohy.

Základní programovací jazyky a techniky

Principy počítačů ("A opravdu uvnitř počítače běhají malí trpaslíci?") [HW]
Standa Lukeš, Jirka Setnička, Filip Štědronský

Ukážeme si proč programy fungují tak, jak jsme zvyklí. Co umí procesor, co dělá paměť a jak se to dá k něčemu použít. Ukážeme si nějaký program v Céčku a v Asembleru a koukneme se, kolik toho řeší Python za nás. Co dělá operační systém, jak je třeba možné, že na jednom procesoru běží najednou několik procesů. Ukážeme si, že počítače jsou překvapivě hloupá stvoření, co umí jenom základní počty, ale na programování nám to stačí.

Python [PYTH]
Filip Štědronský

Jak programovat v Pythonu a jak v něm „nepsat Cčko“. Syntaxe, datové typy, funkce, třídy, ... Na co si dát pozor, v čem se Python liší od ostatních jazyků a proč je mezi nimi tak oblíbený.

Struktura programů ("Když potřebujete komentáře, tak to máte blbě napsané.") [ARCH]
Standa Lukeš

Je dobrý nápad si udělat pole polí, kde první prvek je index předchůdce ve stromu, druhý prvek je první potomek, ...? K čemu mají programovací jazyky funkce? A jak je správně používat, jak taková hezká funkce vypadá? Jak si napsat vlastní datovou strukturu, podobnou těm ze standardní knihovny? Napsat program může být jeden velký problém, co tak na něj aplikovat metodu „rozděl a panuj“? Jak nechat nějaký problém vyřešit jinou část programu a v této se o to nestarat? A jasně, přineseme si ošklivé i krásné praktické příklady :)

Předpoklady: Měl by stačit základní kurz programování.
(Kliknutím na název přednášky zobrazíte její detail)

Pokročilé přednášky

Tyto přednášky by měly jednak dále rozvíjet znalosti ze základních přednášek, ale také nabízet další zajímavé programátorské techniky a technologie, které se mohou každodenně hodit.

Algoritmizace

Parsing čili analýza textu ("1+2*4 = 12") [PARSE]
Martin Mareš, Filip Štědronský

Často potřebujeme načíst nějaký složitý textový vstup: matematický výraz, webovou stránku v HTML, zdroják programu, .... Ukážeme si, jak texty analyzovat (neboli parsovat), aniž bychom v nich zabloudili: rozdělení na lexikální a syntaktickou vrstvu, železničářský algoritmus na parsování výrazů, popis syntaxe pomocí regulárních výrazů a gramatik.

Hledání v textu (">>Vyšíváme v seníku!<< – kde jsem to jen viděl?") [TEXT]

Často se stane, že máme velký objem textu (knihu, všechny dokumenty na našem disku, celý internet), ve kterém opakovaně hledáme krátké řetězce (slova či sousloví). Pak se vyplatí předpočítat si pro text pomocnou datovou strukturu, která nám hledání urychlí. V našem případě touto strukturou bude sufixové pole, které nám umožní vyhledávat v čase logaritmickém k délce prohledávaného textu. Ukážeme si i další vyhledávací algoritmy, které se vyplatí třeba pokud naopak hledáme hodně dlouhá „slova“. To se hodí na trochu překvapivých místech – například se pomocí hledání v textu dají řešit některé úlohy o stromech.

Intervalové stromy ("Já bych ty intervaly nejradši... dal do stromu!") [ITREE]
Ríša Hladík, Jirka Setnička, Filip Štědronský

Intervalový strom je datová struktura pracující s intervaly, se kterou se můžeme setkat v mnoha úlohách (zejména soutěžních). Řekneme si, co to intervalový strom je, jaké všechny druhy intervalových stromů existují, a jejich použití si ukážeme na úlohách. Na závěr si představíme jednu „magickou“ datovou strukturu jménem Fenwickův strom.

Datové struktury pro pokročilé ("Pojďme na procházku binárním lesem") [DS]
Ríša Hladík, Standa Lukeš, Jirka Setnička, Martin Mareš, Filip Štědronský

Přehled šikovných datových struktur, které se nevešly do ZALG. Vyhledávací stromy a různé způsoby jejich vyvažování a „ozdobení“. Hešování aneb hledáme v téměř konstantním čase. Líné datové struktury a amortizovaná složitost.

Geometrie a počítače ("Nerušte mé kruhy! (ani jiné kvadriky)") [GEOM]
Jirka Setnička

Základní algoritmy pro řešení geometrických úloh – zametání roviny, konvexní obal, dva nejbližší body v rovině, výpočet obsahu nekonvexního mnohoúhelníka, lokalizace bodu, scanline algoritmus a jeho použití, Voroného diagramy a souvislost s persistentními datovými strukturami.

Toky v sítích ("Když je v grafu povodeň, těsní?") [TOKY]
Ríša Hladík, Jirka Setnička, Martin Mareš, Zuzka Urbanová, Filip Štědronský

K čemu je dobré, když grafem teče voda. Předvedeme si klasický problém toků v sítích a jeho všelijaké, mnohdy dosti překvapivé aplikace. Jak rozestavět n věží na šachovnici a jak ji místo toho pokrýt dominovými kostkami? Další souvislosti, jako třeba násobná souvislost grafů.

Těžké problémy [HARD]
Ríša Hladík, Standa Lukeš, Filip Štědronský

V rámci této přednášky se budeme zabývat problémy tak těžkými, že nikdo na světě pro ně neumí vymyslet efektivní (rozuměj polynomiální) algoritmus. Spousta lidí dokonce věří, že to vůbec možné není. Abychom mezi tyto problémy pronikli, seznámíme se s pojmy NP-úplnosti a NP-těžkosti. Především si však konkrétní těžké úlohy ukážeme a naučíme se i některé těžké úlohy rozpoznat. Závěrem si řekneme, jak se s těžkými úlohami vypořádat v praxi.

Další programovací jazyky a techniky

Procesy a vlákna ("Koupil jsem dalších 15 procesorů, proč je to stále stejně pomalé?") [THREAD]
Standa Lukeš, Jirka Setnička, Filip Štědronský

Jak vypadá víceprocesorové či vícejádrové PCčko a co to znamená pro programátora. Procesy, vlákna a úskalí komunikace mezi nimi. Jak se snese n kohoutů na jednom smetišti? Synchronizační primitiva: mutexy, semafory, podmínkové proměnné. Spinlocky, deadlocky a livelocky. Jde to i bez synchronizace: atomické operace, transakční paměť. Které jazyky nám pomáhají a které spíš škodí. Kdy je lepší vlákna použít, a kdy ne.

Předpoklady: Trochu představy o hardwaru
SQL databáze ("SELECT something FROM knowledge LIMIT 90min") [SQL]
Standa Lukeš

Představíme si SQL, jazyk databází. Ukážeme si základní příkazy i práci o kus složitější. Jak databázi dát data a jak se na ně potom ptát. K čemu se hodí složený dotaz a klíčové slovo JOIN. Jak si data skupinkovat pomocí GROUP a kdy radši použít PARTITION. Dnes už SQL databáze typicky umí i mnoho rozšíření, tak si třeba ukážeme jak do ní naházet JSON dokumenty a použít ji jako dokumentovou databázi.

Programování v jazyce Java [JAVA]
Vašek Šraier

Java je jeden z nejrozšířenějších objektových programovacích jazyků za posledních deset let. Na přednášce se seznámíme s jeho myšlenkou a naučíme základy. Přednáška je dělaná pro posluchače, kteří umí alespoň základy jiného programovacího jazyka.

Programování v jazyce C# ("Co se stane, když strčíme Céčko za mříže?") [CIS]
Kuba Pelc, Standa Lukeš

C# je moderní objektově orientovaný jazyk, který za patnáct let svého bouřlivého vývoje dostal do vínku některé funkcionální rysy. Mimo popisu základních konstrukcí si projdeme také nejzákladnější vestavěné třídy.

Programování v jazyce C [C]
Filip Štědronský

Jazyk C patří k nejrozšířenějším jazykům, hodí se pro low-level programování i kusy kódu, které mají zejména být rychlé. Představíme si datové typy a běžné programové konstrukce, vysvětlíme si základy práce s ukazateli a také se seznámíme se standardními knihovnami jazyka C.

Jazyk Go [GOLANG]
Jirka Setnička

Go je moderní kompilovaný jazyk (vyvinutý původně v Google), který se pokouší být takovým Cčkem na steroidech. Umí být podobně rychlý, zaručuje větší typovou bezpečnost, ale má i prvky dynamicky typovaných jazyků. Jeho velkou silou je velmi snadné provázání na existující kód v C/C++, systém balíčků distribuovaných převážně přes Github, funkce vracející libovolný počet hodnot nebo třeba vestavěná podpora Unicode a vestavěná hashovací tabulka. Také se silně dbá na coding-style pro zajištění snadné čitelnosti programů.

Prolog ("Co s jazykem bez přiřazovacího příkazu?") [LOGP]
Ríša Hladík

Proč psát dlouhé a složité programy, když stačí dostatečně přesně popsat situaci a pak se prostě zeptat? Toť princip logického programování, který si ukážeme na Prologu.

Haskell ("V téhle proměnné je uložen okolní svět.") [HASK]
Ríša Hladík

Základní kurz Haskellu – moderního funkcionálního jazyka. Zkusíme se na chvíli k funkcím programu chovat jako k těm matematickým a uvidíme, že zákaz side-efektů a globálních proměnných může vést k přehlednějšímu a spolehlivějšímu kódu. Přesvědčíme si, že náš program často umíme poskládat ze spousty malých, ale šikovných funkcí. Ukážeme si syntaxi, vysvětlíme typovou kontrolu a typový systém. Rekurze, aneb seznam je tak dlouhý, jako seznam bez prvního prvku plus jedna. Přičichneme k třídám, zrušíme výjimky a zavedeme zcela bezpečná vlákna. Řekneme si, proč v Haskellu nejde komunikovat s okolním světem a proč nám pomůže si okolní svět uložit do proměnné. A že vlastně v Haskellu žádné proměnné nejsou, jen visačky na datech.

JavaScript [JS]
Standa Lukeš

Každá chytrá webová aplikace musí dneska mít aspoň trochu (nebo co nejvíc?) JavaScriptu. Ukážeme si, jak v něm psát, rozhýbeme pomocí něj webovou stránku, předvedeme si, jak fungují funkce, objekty, moduly a tak. A taky jak to debugovat, jak si pořídit typovou kontrolu nebo novější featury, než prohlížeče umí.

Předpoklady: WWW

Počítače, sítě, systémy

Webové stránky [WWW]
Standa Lukeš

Co se děje za oponou, když do prohlížeče zadáte adresu svých oblíbených stránek? A jak si takovou stránku taky pořídit? Přelet nad protokolem HTTP, seznámení s HTML a předvedení kaskádových stylů. Jak fungují dynamické stránky od formulářů až po JavaScript běžící v prohlížeči.

Sítě a Internet ("Sítě nejen na ryby.") [NET]
Vašek Šraier, Jirka Setnička, Martin Mareš, Filip Štědronský

Jak funguje Internet a počítačové sítě vůbec. Lokální sítě s dráty i bez nich a různé způsoby, jak je mezi sebou propojovat. Protokoly rodiny TCP/IP a nad nimi postavené aplikační protokoly: DNS, SMTP, HTTP a celý zvěřinec dalších. Bezpečnost sítí a všelijaké útoky na ni. Pár taktů hudby budoucnosti: IPv6, multicasting, přenos v reálném čase atd.

Emaily, chat a jiné formy online komunikace [OCOMM]
Vašek Šraier

Dnes a denně komunikujeme s dalšími lidmi za pomoci internetu. Jak tyto komunikační služby fungují? Proč může mít někdo emailový účet u Googlu, někdo jiný u Seznamu a přesto se mezi sebou domluví? Co brání tomu, aby uživatel Facebook Messengeru napsal uživateli Telegramu? Některé služby navíc mluví o E2E šifrování, co přesně to znamená? A můžeme to samé dělat i s emaily?

Digitální elektronika aneb jak se vlastně dá tranzistory něco počítat [HRADLA]
Standa Lukeš

Jak fungují digitální elektronické obvody, ze kterých jsou postavené nejen počítače. Všimli jste si někdy, že tranzistor je vlastně jenom takový vypínač a zajímalo by vás, jak je vůbec možné s tím něco počítat? Nebo jak se to dá dělat v Minecraftu nebo ve Factoriu? Postavíme si nějaké kombinační obvody – transistory, hradla, multiplexery, sčítačky, automatické ovládačky výroby elektřiny a cokoliv dalšího vás bude zajímat.

Jak si z hradel postavit procesor [CPU]
Standa Lukeš, Filip Štědronský

Už umíte postavit sčítačku a různé kontrolní obvody, ale pořád není jasné, jak se na tom dají spouštět programy? V této přednášce si z hradel postavíme nějakou paměť, registry, vymyslíme si instrukce, které bude náš procesor umět, a pak ho postavíme, nebo tedy spíše nakreslíme.

Předpoklady: HRADLA
Od zdrojáku k programu ("Před spuštěním program přeložte. Stačí třikrát podélně?") [KOMP]
Standa Lukeš, Martin Mareš, Filip Štědronský

Mezi programem ve vašem oblíbeném příčetném programovací jazyce, který jste právě dopsali, a tranzistory uvnitř vašeho procesoru leží obrovské území obývané překladači, JITy, knihovníky, operačními systémy, loadery a jinými bájnými bytostmi. Pojďme zjistit, co jsou zač a co všechno s programem provádějí. Co udělá kompilátor za nás a co musíme naopak udělat my za něj.

UNIX ("UNIX gives you enough rope to hang yourself.") [UNIX]
Jirka Setnička, Filip Štědronský

Unixové operační systémy (zejména Linux) dobývají svět. Jak fungují uvnitř a jaké nabízejí výhody? Unixová filosofie a historie. Proč je systém složený ze spousty malých a jednoduchých kousků stabilnější a bezpečnější? Proč je ovládání prostřednictvím textových příkazů často efektivnější než klikátka? Jaké to je mít svůj systém pod kontrolou a „vidět mu pod ruce“? V čem spočívá moc textových souborů?

Boot process ("Tehdy, když počítač startuje...") [BOOT]
Vašek Šraier

Vše začíná cvaknutím. Cvaknutím zapínacího tlačítka. Na konci nás typicky čeká přihlašovací obrazovka. Co se ale děje v mezidobí? Proč to trvá tak dlouho? Povíme si obecně, co se děje při startu počítače. Příklady si budeme ukazovat na operačních systémech s Linuxovým jádrem, porovnáme lehce mobilní telefony a stolní počítače. Vysvětlíme si, jaké problémy musí startující operační systém řešit a proč. Zároveň siale vysvětlíme, co znamenají zkratky BIOS a EFI, a proč je potřebujeme.

Předpoklady: HW
Skriptování v shellu [SHELL]
Jirka Setnička, Filip Štědronský

Praktičtěji zaměřená přednáška než UNIX, zabývající se hlavně tím, jak efektivně používat příkazovou řádku. Ukážeme si na spoustě příkladů, jak nám může automatizace všedních činností ulehčit život a jak silné nástroje pro ni UNIXový shell (který navzdory svému názvu existuje i pro Windows) svou jednoduchostí a flexibilitou poskytuje. Budeme spojovat spoustu jednoduchých příkazů do mocných celků a s nimi plnit i na první pohled komplexní úlohy, jako třeba automatické stahování a parsování věcí z webu. Některé činnosti vyžadují lidskou nápaditost a vhled. Ty ostatní bychom měli přenechat strojům.

Linuxový server ("Chci provozovat vlastní linuxový server, ale nevím jak") [ADMIN]
Jirka Setnička

Na co se mi hodí vlastní server a jak ho provozovat? Domácí server nebo něco sedícího v cloudu? A když už ho mám, tak jak ho zabezpečit a jaké věci se mi na něm hodí provozovat? Budeme si povídat o SSHčku, klíčích, šifrování, systemd, Apache a Nginxu, mailech, DNS, Let's Encrypt, zálohování a všem dalším, co nás bude zajímat. Ideálně prakticky na nějaké virtuálce. Pokud bude zájem, můžeme zabrousit i do provozování serverů a služeb ve větším aneb Kubernetes a další hračky.

Předpoklady: Základní znalost Linuxu.
Docker a Kubernetes ("Stavíme služby jako kostičky") [DOCKER]
Jirka Setnička

Docker umožňuje snadno vytvořit kontejnery – třeba nějaké aplikace a všech jejích závislostí – a tyto kontejnery jednoduše distribuovat a spouštět. Docker se hodí ke snadné instalaci věcí s mnoha závislostmi nebo naopak stejné aplikace na mnoho serverů. Ukážeme si, jak si Dockerový kontejner vyrobit, jak z něj dostat porty a do něj naopak nějaké úložiště a kam kontejner umístit. Na závěr si ukážeme, jak Docker provozovat ve větších clusterech (Kubernetes), aneb když chceme distribuovat zátěž na mnoho strojů a mít redundanci.

Vývoj software

Systém pro správu verzí Git ("U svatýho tučňáka, kdo sem napsal tohle? Ono to tvrdí, že JÁ?!") [GIT]
Standa Lukeš, Jirka Setnička, Martin Mareš

Když se něco vyvíjí delší dobu, přijde vhod nějaký nástroj, který by uměl zjistit kdo co přidal a proč, uměl by se vrátit k předchozí verzi nebo třeba vrátit jenom jednu změnu, co udělal kamarád před rokem. Na jeden takový, Git, se podíváme. Povíme si, jak Git ukládá změny, co jsou commity, větve, tagy a jak vypadá merge mezi větvemi. Nakonec možná předvedeme i nějaké užitečné triky: třeba hledání bugů půlením historie.

Testování a kvalita softwaru [QA]
Standa Lukeš

Výroba software není zdaleka jenom o programování. Ukážeme si, jak psát kód tak, aby nejenom fungoval, ale aby vyzařoval krásu a pokoj všem programátorům dobré vůle. Povíme si o různých způsobech testování, o tom, jak udržet v kódu pořádek, a dalších nástrojích, které pomáhají vyvíjet kvalitní software.

Předpoklady: Znát aspoň jeden příčetný programovací jazyk
Jak se píše dlouhodobě udržovaný software? [VETSISW]
Vašek Šraier

V práci píšete nějakou aplikaci. Víte, že se bude používat ještě dlouho. Nepíšete ji sami, ale máte i spolupracující kolegy. Víte, že jednou odejdete z firmy a aplikaci tak bude nejspíš spravovat někdo další po vás. Jakým způsobem tyto podmínky ovlivňují vývoj? Jaké nástroje se v praxi při vývoji používají? Co vám práci ulehčí a co ji ztíží?

Předpoklady: Určeno primárně pro ty, co už někdy něco naprogramovali.

Aplikace informatiky a matematiky

Herní algoritmy ("Když nemáte na to, abyste vyhráli šachový turnaj...") [AIGAME]
Jirka Setnička

Povídání o tom, jak programovat počítačové soupeře do šachů a her jim podobným. Základní minimaxový algoritmus a jeho vylepšení neboli α-β ořezávání. Stále pomalé? Několik nápadů na efektivnější ořezávání. Ne u všech her však funguje hrubá síla (minimax) dobře, ukážeme si tedy, jak hru zanalyzovat.

Počítačová grafika ("Namaluj mi beránka...") [GFX]
Kuba Pelc

Kreslení a zpracování obrazu na počítači. Co vše obnáší vykreslení obyčejné čáry, aby to bylo rychlé a pěkně vypadalo. A co teprve, když ty čáry zatáčí! Jak reprezentovat barvy a jak obrázky. Také maticové filtry pro zpracování fotek (zaostření, rozmazání), anti-aliasing a dithering. Pokud se stihne, tak navíc základy 3D vykreslování.

Realtime 3D grafika a OpenGL ("Namaluj mi 60krát za vteřinu beránka...") [GL]
Kuba Pelc

Základy 3D vykreslování na grafické kartě pomocí OpenGL a jazyka GLSL. Jak se reprezentují objekty v paměti. Co jsou to textury, co shadery a jak je psát. Jak udělat oheň či vodotrysk jako živý. Jak se dělá světlo či stín a jak různé druhy povrchů. Co všechno umí dnešní grafické karty.

TeX ("No pages of output. Ask a TeXnician.") [TEX]
Ríša Hladík, Jirka Setnička, Martin Mareš

Donald E. Knuth napsal TeX před desítkami let proto, že mu nikdo nebyl schopen vysázet matematický text podle jeho požadavků. Od té doby se hojně používá pro sazbu nejrůznějších publikací. V této spíše praktické přednášce si ukážeme použití TeXu od hladké sazby knihy až po zběsilosti hraničící s programováním. Pozornost věnujeme i zdrojům informací a rozdílům mezi různými dialekty TeXu.

Kryptografie ("Gbgb arav zbp gnwan mcenin.") [CRYPT]
Standa Lukeš, Jirka Setnička, Martin Mareš, Filip Štědronský

Kryptografie se zabývá šiframi, jejich konstrukcí a zejména jejich luštěním. Začneme se symetrickými a asymetrickými šiframi a jednosměrnými funkcemi. Z nich pak vybudujeme složitější kryptografické protokoly na bezpečný přenos, autentikaci a digitální podpisy. Vymyslíme dokonce, jak si hodit korunou po telefonu, a také předvedeme nerozluštitelnou šifru a dokonce to o ní dokážeme.

Komprese dat ("Jnm idln kpln j nstlčtln.") [ZIP]
Jirka Setnička, Martin Mareš, Filip Štědronský

Přehled základních kompresních algoritmů: triviální algoritmy (RLE), statistické metody (Huffmanovo a aritmetické kódování), slovníková komprese (LZ77, LZ78, LZW), Burrowsova-Wheelerova transformace (BZIP). Pokud zbude čas, tak i něco o ztrátové kompresi obrázků a zvuku (prediktory, wavelets, JPEG, MPEG, fraktály).

Čárové kódy ("Jak naučit počítače číst láhve od Coly") [BAR]
Martin Mareš

Čárové kódy dnes potkáváme na každém kroku, ale jak doopravdy fungují? Prozkoumáme klasické jednorozměrné kódy (UPC, EAN, Code39, Code128), jakož i novější dvojrozměrné (QR, Aztec, DataMatrix). Kódovací a dekódovací algoritmy plus trocha matematiky okolo zabezpečení proti chybám. Další počítačem čitelné značky: RFID, bíle křížky na asfaltu, ...

Matematické přednášky

Dirichletův princip ("Kolik hrochů se vejde do n postelí?") [HOLUB]
Zuzka Urbanová

Dirichletův princip je překvapivě jednoduché matematické tvrzení, pomocí kterého lze vyřešit celá řada úloh. Dokážeme, že existují dva Pražané se stejným počtem vlasů na hlavě, že nějací dva matfyzáci mají narozeniny ve stejný den, a podíváme se, kdy můžeme zabít k much jednou ranou. Přednáška bude koncipovaná víc jako cvičení, vyřešíme při ní spoustu lehkých i těžších úloh.

Grafy bez algoritmů [GRAFY]
Ríša Hladík, Jirka Setnička

Teorie grafů trochu teoretičtěji. Různé druhy grafů a jejich vlastnosti. Stromy a lesy. Kreslení grafů jedním tahem. Princip sudosti a skóre grafu. Jaké speciální vlastnosti mají rovinné grafy a jak je lze obarvit šesti nebo možná i pěti barvami. Jak poznat, že dva grafy (ne)jsou isomorfní. Mosty, artikulace a ušaté lemma. Párování, střídavé cesty a Hallova věta.

Pravděpodobnost ("S pravděpodobností 50 % bude tato přednáška, tak si ji s pravděpodobností 50 % připravím.") [PST]
Standa Lukeš

Jak matematici zacházejí s náhodou? Co je to pravděpodobnost, náhodná veličina, střední hodnota, k čemu je ten kloboukový graf a lemma o džbánu, kterému se ucho utrhne? Podíváme se na odvětví matematiky zkoumané původně kvůli karbaníkům a gamblerům a také na to, jak se dá pravděpodobnost využít v programování: výpočet čísla π a algoritmy Monte Carlo.

Kombinatorika ("Nemám rád faktoriály. Faktoriály nemám rád. Rád nemám faktoriály...") [KOMB]
Martin Mareš

Středoškolská kombinatorika bývá otravnou „zoologií“ plnou pojmů a vzorečků. My si místo toho ukážeme přístup k počítání založený na elegantních úvahách. Základní triky s faktoriály a kombinačními čísly, sčítání konečných a občas i nekonečných řad a rekurentní rovnice. Také zajdeme na návštěvu k Dlouhému a Širokému a za poněkud zmatenou šatnářkou.

Funkce a jejich chování [MA1]
Standa Lukeš

Co je to vlastně funkce, co umí a jak může vypadat. Co znamená, že funkce někam konverguje a jak si pořádně nadefinovat O-čkovou notaci. Co jsou to limity a k čemu je to dobré? Jak popsat, kde a jak moc jde naše funkce do kopce nebo naopak z kopce, aneb derivace. Nebudeme se příliš trápit vzorečky na výpočty, ale nějaké základní triky si ukážeme.

Průlet lineární algebrou [LIN1]
Zuzka Urbanová

Podíváme se, čím se to ta lineární algebra vlastně zabývá. Řekneme si, co jsou matice, jak se s nimi počítá a k čemu jsou dobré. Seznámíme se s pojmy jako těleso, vektor a vektorový prostor, představíme si jejich zajímavé vlastnosti a uvedeme je do různých souvislostí.

Teorie nemožného ("Neexistence důkazu není důkazem neexistence. Dokažte.") [NONEX]
Martin Mareš

Existenci slona v Africe snadno dokážete tím, že ho přivedete. Jak ale ukázat, že tam žádný slon není, případně že sice je, jenže ho nejde najít pomocí pravítka, kružítka a jeepu? Přímo se to dělá těžko, ale existuje spousta krásných triků, jak neřešitelnost problémů dokazovat. Nesložitelné hlavolamy, nerozvázatelné uzly, nepopsatelná čísla, neroztřetitelné úhly, nealgoritmické problémy a jiné slasti nekonstruktivní matematiky. Jak naopak ukázat, že něco existuje, aniž bychom věděli, jak to vypadá?

Úvod do teorie čísel [NUT]
Ríša Hladík, Martin Mareš

Co a k čemu je teorie čísel. Počítání modulo n, Euklidův algoritmus na nalezení největšího společného dělitele a jeho použití. Konečná tělesa a Malá Fermatova věta. Prvočísla a Eratosthenovo síto. Čínská zbytková věta a její algoritmická verze. Jak si odvodit kritéria dělitelnosti.

Základy algebry ("Síla abstrakce") [GALG]
Ríša Hladík

Už před dlouhou dobou někoho napadlo, že místo čísel můžeme počítat s písmenky, která nám nějaká konkrétní čísla zastupují, a plno věcí si tím usnadníme. Proč se ale omezovat jen na čísla? Předvedeme si, že sčítat můžeme libovolné dvě věci, tedy aspoň když si jejich součet nadefinujeme tak, aby dával smysl. Přidejme ke sčítání i odčítání a dostaneme grupu. Ukážeme si, že grupy jsou všude kolem nás, k čemu je dobré studovat je obecně a jak je to vůbec možné, když se vyskytují v tolika odrůdách. Lagrangeova věta. Jak grupy souvisí s prvočísly, jak s šifrováním a jak s osovou souměrností.

(Kliknutím na název přednášky zobrazíte její detail)

Půlnoční přednášky

Aneb přednášky přednášené (nejen) o půlnoci na různá zajímavá témata nejen o informatice. Pokud nějaká z nich nebude oficiálně vypsaná, je možné si konkrétního organizátora ve volné chvíli chytit a přesvědčit ho k přednášení.

Základy první pomoci ("Jak někomu zachránit život a jak málo k tomu stačí") [ZDRAV]
Vašek Šraier, Jirka Setnička

Pobavíme se o základech první pomoci. Jak správně vyhodnotit situaci a kdy je potřeba volat pomoc? Jak se postarat o člověka v bezvědomí, jak kontrolovat životní funkce a jak člověka stabilizovat do příjezdu pomoci? Ukážeme si, jak málo stačí k záchraně života a naučíme se nebát se první pomoci. A také, že naše bezpečí je v každé situaci na prvním místě.

Létání a natáčení s dronem ("Ne ne, to není řízená raketa, tam jen visí velký foťák.") [DRON]
Jirka Setnička

Na co je dobré mít drona, kdy se dá reálně použít a kdy je to jen drahá hračka. Přehled o technologiích, jejich možnosti a omezení. Jak se liší armádní drony od dronů pro kameramany a nebo od dronů, které pořídíte za pár šupů v hračkářství. Také lehký výlet do legislativy – s čím smíme létat, kde smíme létat a co s tím můžeme dělat. Pokud počasí dá, tak i praktické hrátky s dronem.

Lockpicking ("Jak si odemknout, když si náhodou my (nebo soused) zapomeneme klíč :-)") [PICK]
Jirka Setnička

Jak fungují dnešní zámky, co jsou to stavítka a jak vlastně fungují klíče. A jak se pomocí jednoduchých nástrojů dají využít výrobní nedokonalosti zámků k jejich odemčení. Použití planžet, napínáků, praktické ukázky odemykání, nastínění technik bumpingu a dalších postupů, jak se dostat přes zamčené dveře.

Soukromí na webu ("Pokud nechcete, abychom vás sledovali, samozřejmě nemusíte naše služby používat.") [PRIVACY]
Standa Lukeš, Vašek Šraier

Co všechno o vás webové služby umí zjistit? V čem to vlastně vadí? Jak to dělají? A proč nás sledují? Dobře, dá se nějak efektivně bránit? Facebook je jediný zlý, že? Z trochu jiného soudku – co se o vás dá na veřejném internetu jednoduše najít, a jestli je to vlastně špatně. No ale GDPR nás spasí, že? Navzdory anotaci bude přednáška spíše praktická a technická než filosofická, a rozhodně nebude právnická.

Teorie množin ("Jablka a hrušky se dají nejen sčítat, ale třeba i násobit.") [TEMNO]
Ríša Hladík, Standa Lukeš, Martin Mareš

Základoškolský přístup „množina je kupříkladu miska jablíček“ nabízí spoustu otázek: Když jablíčka přesuneme do sáčku, bude to stále tatáž množina? A co když kousek jablíčka ukousneme? V rámci této přednášky se pokusíme o vybudování teorie množin od základů (rozuměj axiomů) a to v duchu Zermelo-Fraenkelovském. Pak uvidíme, jak na teorii množin vystavět zbytek matematiky.

Lingvištika ("Přísudek je v této větě podmět.") [LING]
Martin Mareš

Převážně nevážné a mírně nepřed-vídatelné po-vídání o jazyku i jazyce. Základní jazykové rodiny a jejich podobnosti i odlišnosti. Co má společného čínština s angličtinou a co nikoliv. Jak se jazyky vyvíjejí a jak se navzájem ovlivňují. Kde jsme přišli k pravidlům a jaký je jejich smysl. Existují synonyma? Proč je jazyk nejednoznačný a proč je to dobře. Jak se na jazyk dívá matematik a jak se na matematiku dívají lingvisté. Jak vzniklo písmo? A jak otazník? Jak zapsat zachrochtání a jak třeba mlasknutí &c.

Typografie ("What You See Is all What You've Got!?") [TYPO]
Martin Mareš

Jak na počítači text nejen napsat, ale také vysázet tak, aby pěkně vypadal a aby (což je důležitější) se i příjemně četl. Jak se sází pohádka, jak báseň a jak vzorové řešení KSP plné komplikovaných vzorců. Jak jde dohromady staleté umění typografické a moderní technika. Přineste knihy i letáky, zkritizujeme sazeče, co se do nich vejde.

Orientace [ORI]
Martin Mareš

Jak ze neztratit v terénu a jak se neztratit na moři. Vývoj umění navigace. K čemu je důležité slunce a hvězdy, ale proč mořeplavcům nestačí, alespoň dokud neobjevíme hodinky. Použití mapy, busoly a GPSky. Orientace bez pomůcek a použití Ariadniny nitě. Bleskový úvod do sférické astronomie a časomíry čili jak (ne)postavit sluneční a třeba i měsíční hodiny. Jak reprezentovat mapu v počítači a jak raději ne. Jak zapisovat polohu místa na Zemi (přestože Země má tvar podivně nakousnuté hrušky) a kolika způsoby to jde. Různé druhy map a jejich (z)kreslení. Jak se neztratit v kartografii. Praktické cvičení v terénu.

Čaj ("Jak vypadá odvar z nezralých pražců?") [TEA]
Martin Mareš

Pojďme usednout k šálku lahodného čaje a povídat si o tom, co se v něm skrývá. Kde se čaj vzal, kde se pěstuje, jak se zpracovává a jak ho připravovat. Trocha čajového zeměpisu, dějepisu i čajové chemie a čajové kultury. Též o všelijakých substancích čaji podobných.

Racionalita ("Racionalita neslouží k vyhrávání debat, ale k tomu, abychom se rozhodli, na kterou stranu se postavit.") [RAT]
Filip Štědronský

Naše přesvědčení o světě jsou jako mapa nějakého území. Měli bychom se snažit, aby mapa co nejlépe odrážela skutečnost, neustále ji upravovat podle nově objevených faktů. Přesto se lidi často spíš snaží přesvědčit ostatní i sebe, že jejich názor je správný, než aby věnovali veškeré úsilí nalezení názoru nejlépe kopírujícího realitu. Odhlížíme od nepříjemných pravd. Proč? Jak se naučit své názory absolutně podřídit realitě, přijímat svět, jaký je? Jaké systematické chyby v uvažování lidský mozek dělá a jak nám jejich znalost (ne)může pomoci? K čemu se hodí znát teorii pravděpodobnosti či úvahy z oblasti umělé inteligence?

Efektivní altruismus ("Jak zachraňovat svět a moc se u toho nenadřít.") [EFFALT]
Filip Štědronský

Altruismus znamená použití nějakého množství vlastních zdrojů (peněz, času, talentu, ...) na pomoc ostatním lidem a světu. Ale svět má mnoho problémů a k jejich řešení je možné přispět mnoha různými způsoby. Jak si vybrat? Většina lidí si vybere něco, co je jim emocionálně blízké. Ale to nemusí být úplně nejšťastnější. Ukazuje se totiž, že různé způsoby pomoci se výrazně liší efektivitou – tím, kolik reálného užitku (např. zachráněných životů) můžeme získat s daným množstvím vložených zdrojů. Často i o několik řádů. Jaké jsou nejvýznamnější problémy světa a nejefektivnější způsoby jejich řešení? Kdy je lepší finančně podpořit nějakou charitativní organizaci (a jak si vybrat kterou), dobrovolničit či přímo pracovat na řešení nějakého problému? Jak si vybrat kariéru s ohledem na pozitivní přínos světu? Efektivní altriusmus je rostoucí celosvětové hnutí, které se snaží vědeckou metodou hledat odpovědi na tyto a další otázky.

Počítač bez myši ("Může počítač trpět fóbií z hlodavců?") [KEYB]
Vašek Šraier, Ríša Hladík, Filip Štědronský

Ruce programátora patří na klávesnici, přesto se spousta věcí běžně dělá pomocí myši. Podíváme se třeba na to, jak bez myši editovat text (editor Vim), spravovat okna či ovládat webový prohlížeč. Posuďte sami, kolik cenných vteřin to může pokaždé ušetřit.

Outdoorová výbava ("Peří nebo syntetika? Pěna nebo vzduch? Plyn nebo benzín?") [OUTEQUIP]
Vašek Šraier

Pojďme si popovídat o výbavě na pobyt v přírodě. Čím se liší jednotlivé druhy spacáků, jak se dají porovnávat? A co karimatky a vařiče? Do jakých se hodí podmínek? Podíváme se společně na to, jaká výbava se hodí kam a proč. Čím se liší věci na přespání zimě od těch na léto. O čem všem uvažovat při nákupech.

Biologická evoluce ("Ale vždyť je to jen teorie!") [EVOL]
Filip Štědronský

Evoluční teorie je asi jedním z největších převratů v lidském náhledu na svět. Jak se na takovou věc vůbec přišlo, proč to tak dlouho trvalo a proč si myslíme, že je to pravda? Jak si to vše alespoň trochu představit? Mnoho nečekaných překvapení, informatické a fyzikální souvislosti. Proč jsou stromy vysoké, jak souvisí pohlavní rozmnožování s počítačovou bezpečností, co má evoluce společného s Windows a co s halting problémem?

Předpoklady: Základní přednáška nevyžadující předchozí biologické znalosti.
Vykreslování ve hrách ("Nakresli mi 60 krát za vteřinu 100 000 beránků...") [3DENGINE]
Kuba Pelc

Praktický pohled do vnitřností vykreslování herních enginů. Jak se to dělá, aby světla svítila, věci se leskly, aby v lese byly temné stíny a proč je to všechno naprosto špatně. Co znamenají různé obskurní zkratky v nastavení jako SSAO nebo TAA. Co všechno umí grafické karty a jak se toho využívá při optimalizaci her. Co je to raytracing a proč je tak skvělé, že ho nové GPU umí. Co jsou to textury, meshe, shadery a jiné potvůrky, se kterými se setkáte i třeba v Unity nebo Unrealu. Jaké je to něco takového si sám napsat. A kdo ví, možná nějaký ten engine i za živa rozpitváme...

Ekonomie prakticky ("S trochou reklamy ty akcie prodám i za dvojnásobek, ne?") [BUYME]
Standa Lukeš

Ekonomika je process výroby, spotřeby a hlavně směny zboží a peněz. Děje se toho ale hromada, tak se v tom zmatku zkusíme trochu zorientovat a vymyslet jak tyto věci modelovat. Ukážeme si co jsou peníze, trh, akcie, dluhopisy, burzy a hlavně k čemu je to dobré. Jak funguje nabídka a poptávka na spotřebitelském trhu, jak to ovlivňuje marketing nebo jak toto funguje burzách. Kdo určuje cenu másla a kdo cenu Bitcoinu. Nebo třeba co je to substitut a komplement a proč firmy vyvíjí open source.