Seznam přednášek aneb Karolínka

Přihlásit

Milý účastníku podzimního soustředění KSP, máš možnost vybrat si přednášky předem, aby se organizátoři mohli pořádně připravit již před soustředěním a přednášky byly co nejkvalitnější.

Přednášky jsou rozděleny do několika kategorií. Každé kategorii přednášek budou vyhrazeny nějaké přednáškové sloty a v každé kategorii se tedy hlasuje nezávisle na ostatních.

Po přihlášení (do webového účtu, který Ti byl vytvořen při registraci, nebo který jsi již předtím měl) můžeš každé přednášce přiřadit 0 až 100 bodů a tím si ji vybrat. Body jsou kladná celá čísla nebo 0 a jejich součet přes všechny přednášky v kategorii musí být menší nebo roven 100. Doporučujeme nevyplýtvat vše na pár přednášek (či dokonce jednu).

Hlasuj prosím do neděle 2. srpna. Na samotném soustředění další hlasování o přednáškách již nebude. Kdyby se Tvá oblíbená přednáška nedostala do výběru nebo budeš chtít slyšet o něčem jiném, můžeš zkusit na soustředění přemluvit k přednášení někoho z organizátorů.

  • Standardní přednášky
  • Půlnoční přednášky
(Kliknutím na název přednášky zobrazíte její detail)

Standardní přednášky

Algoritmy a datové struktury

Základní algoritmy a jejich složitost ("Čím menší je časová složitost algoritmu, tím větší je složitost kódu.") [ZAKL]
Vojta Lančarič

Přednáška pro ty, kdo potřebují dohnat základní znalosti nutné pro ostatní přednášky. Zadefinujeme si základní pojmy jako je algoritmus, program, rekurze, následovat bude přehled základních algoritmů – převážně třídění, rychlé hledání k-tého nejmenšího prvku, práce s výrazy a další.

Grafy & algoritmy ("Pojďme si hrát s obrázky.") [GA]
Vojta Lančarič

Co to jsou grafy, jak je v programech reprezentovat a hlavně k čemu se dají použít. Prohledávání grafu do šířky i do hloubky. Hledání nejkratších cest: Dijkstrův a Floydův algoritmus. Minimální kostry a Union-Find problem.

Těžké problémy [HARD]
Adam Jahoda, Ríša Hladík, Martin „Medvěd“ Mareš

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.

Nejkratší a jiné cesty ("Všechny cesty vedou do Horní Dolní, jen některé přes Řím.") [CESTY]
Martin „Medvěd“ Mareš

O problému hledání cest v grafech trochu podrobněji. Obecné relaxační schéma, Bellmanův-Fordův a Dijkstrův algoritmus a jejich zrychlení pomocí různých datových struktur. Potenciálová redukce a heuristiky (třeba A*), zaokrouhlování délek hran. Souvislosti s násobením matic: tranzitivní uzávěr, Seidelův algoritmus, Kleeneho algoritmus a regulární výrazy.

Toky v sítích ("Když je v grafu povodeň, těsní?") [TOKY]
Adam Jahoda, Dan Skýpala, Ríša Hladík

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ů.

Předpoklady: Umět plavat (zejména v matematice)
Toky v sítích pro pokročilé ("Když Edmonds-Karp nestačí") [TOKY2]
Adam Jahoda, Dan Skýpala, Ríša Hladík

Předvedeme si několik rychlejších algoritmů pro problém maximálního toku. Dinicův algoritmus a jeho mnohá vylepšení. Všelijaké příbuzné problémy: assignment problem, aneb hledání nejlevnějšího bipartitního párování. Maximální tok minimální ceny, aneb co když za průtok trubkami musíme platit? Ukážeme si algoritmus založený na postupném vylepšování a předvedeme si na něm obecnou myšlenku, kterou můžeme použít u optimalizačních problémů. Nahlédneme, že všechny zmíněné problémy můžeme popsat jako lineární programy, a proč se to občas vyplatí dělat. Pokud zbyde čas, řekneme si, co se změní, když budeme chtít vedle ropy v jedné síti zároveň přepravovat i čaj a Kofolu, a proč je to problém výrazně těžší, ale přesto řešitelný.

Předpoklady: TOKY
Datové struktury pro začátečníky ("Pole oraná a neoraná, stromy ovocné a okrasné.") [DS1]
Ján „Janči“ Plachý, Martin „Medvěd“ Mareš

Jak si ukládat data natolik šikovně, abychom je nejen neztratili, ale také našli dříve, než si pro nás přijde Smrť. Klasické struktury jako pole, seznamy, fronta a zásobník, trie, vyhledávací stromy (vyvážené, AVL, a-b, splay), haldy (binární a obecně regulární) a v neposlední řadě hešování.

Datové struktury pro pokročilé ("Haldy a jiné kupky.") [DS2]
Dan Skýpala, Ríša Hladík, Martin „Medvěd“ Mareš

Důmyslnější varianty vyhledávacích stromů: splay stromy, BB-α stromy, rankové stromy, vícerozměrné stromy. Chytřejší haldy: binomiální, Fibonacciho, rank-pairing. Amortizovaná analýza složitosti. Též několik přátelských randomizovaných datových struktur: skip listy a treapy.

Datové struktury pro ještě pokročilejší ("log log log log ... glo glo glo ...") [DS3]
Martin „Medvěd“ Mareš

Na přednášce si ukážeme některou z méně známých složitějších datových struktur. Pokud Ti ostatní přednášky přijdou moc jednoduché, tato je ta pravá pro Tebe.

Splay stromy ("Lepší než uklízení je organizovaný chaos.") [SPLAY]
Dan Skýpala, Ríša Hladík, Martin „Medvěd“ Mareš

Zapomeňte na pracné vyvažování vyhledávacích stromů. Místo toho zavedeme triviální pravidlo: pokaždé, když pracujeme s nějakým prvkem, vytáhneme ho do kořene stromu. Ukážeme, že toto pravidlo stačí na dosažení logaritmické složitosti, tedy aspoň amortizovaně. Také dokážeme, že Splay strom je nejhůře konstanta-krát horší než libovolný jiný strom, a možná i spousta dalších magických vlastností.

Treapy ("Když se nemůžete rozhodnout mezi haldou a stromem...") [TREAP]
Matúš Púll

Implementovat vyvažovaný binární strom je sice super, ale zkoušeli jste to někdy? Ukážeme si na místo toho, co by se stromu stalo, pokud bychom z něj udělali haldu. To nám, jak se ukáže, zpestří život. Ukážeme si randomizovanou datovou strukturu treapy, která se chová průměrně jako vyvážený strom, ale k tomu její operace nejsou totální pain.

Stromové algoritmy ("Půjdeme na to od lesa") [TREES]
Dan Skýpala, Martin „Medvěd“ Mareš

Stromy jsou jednou z nejtypičtějších (a nejjednodušších) odrůd grafů. Ledacos pro ně umíme řešit mnohem rychleji než pro obecné grafy, tak se pojďme podívat, jak se to dělá. Předvedeme několik obecných technik pro práci se stromy: DFS očíslování, „vandalskou indukci“, intervalové reprezentace. Různé rozklady: heavy-light, Fredericksonův, separátorový a ST-stromy.

Magické algoritmy ("Pokročilá magie není rozlišitelná od technologie.") [MAGIC]
Martin „Medvěd“ Mareš

O algoritmech značně magických a nečekaných. Jak násobit n-ciferná čísla rychleji než v kvadratickém čase. Kouzlo na slévání setříděných posloupností v konstantním prostoru. Isomorfismus stromů pomocí přihrádkového třídění. Bitové kejklířství. Hledání největší díry.

Persistentní datové struktury ("Datové struktury cestující časem.") [PERS]
Dan Skýpala, Matúš Púll, Martin „Medvěd“ Mareš

Ukážeme si (téměř) obecný způsob, jak naučit datové struktury zapamatovat si celou svou historii. Předvedeme si, jak tuto historii modifikovat a k čemu to je celé dobré.

Aproximační algoritmy ("Součet úhlů v trojúhelníku je vždycky tři ... tedy alespoň ± 5%.") [APX]
Dan Skýpala, Ríša Hladík

Některé úlohy jsou tak těžké, že je za dobu existence tohoto vesmíru nedokážeme vyřešit (naneštěstí to zatím o většině takových úloh ani nesvedeme dokázat). Co kdyby nám ale stačilo i řešení, které je nejhůře o 10 % horší, než to optimální? Ukážeme si pár klasických aproximačních algoritmů a aproximačních schémat: 2-aproximace bin packingu, obchodní cestující ve 2D, množinové pokrytí, MaxSAT a další.

Online algoritmy ("Ten borec s křišťálovou koulí mě ale pěkně vytáčí!") [ONL]
Ríša Hladík

Některé algoritmy (kešování, kupování lyží, chytání krav) fungují tak, že vstupní data dostávají jaksi postupně. Máte-li se rozhodnout, kdy si půjčit lyže a kdy si je lepší je koupit, je to jednoduché, když víte, kdy si zlomíte nohu. Ale jaká je optimální strategie, když to nevíte?

Intervalové stromy ("Já bych ty intervaly nejradši... dal do stromu!") [ITREE]
Dan Skýpala, Ríša Hladík

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.

Dynamické programování ("Kampak jsem si to jenom schoval?") [DYNP]
Ján „Janči“ Plachý

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.

Hledání v textu (">>Vyšíváme v seníku!<< – kde jsem to jen viděl?") [TEXT]
Ondra Sedláček, Ríša Hladík, Ján „Janči“ Plachý, Martin „Medvěd“ Mareš

Někdy potřebujeme najít podřetězec ve velkém množství textu. Stromeček trochu připomínající ten biologický aneb trie. Proč se ve vstupu vracet neboli Knuthův-Morrisův-Prattův algoritmus. Hledání více řetězců najednou podle Aha a Corasickové. Okénkové hešování Rabina a Karpa.

Suffixové stromy a pole ("Jak obrátit řetězec naruby?") [SUFF]
Martin „Medvěd“ Mareš

Suffixový strom je zajímavá datová struktura, pomocí níž jde vyřešit většinu řetězcových problémů v lineárním čase. Podíváme se, jak suffixový strom vypadá, k čemu se hodí a jak ho sestrojit. Též prozkoumáme několik příbuzných zvířátek, jako třeba suffixové pole a suffixový automat.

Amortizace ("Celek bývá daleko menší než součet částí.") [AMORT]
Dan Skýpala, Ján „Janči“ Plachý, Martin „Medvěd“ Mareš

Spousta algoritmů je mnohem rychlejší, než jak na první pohled vypadají. Šikovný způsob, jak takové chování zkoumat, je amortizovaná časová složitost. Předvedeme několik trochu překvapivých příkladů amortizace: dvojková a jiná počitadla, datové struktury založené na přebudovávání, vyhledávací stromy bez otravného vyvažování, dynamizace datových struktur, udržování historie.

Beyond worst-case algoritmy a datové struktury ("Třídit rychleji než v Θ(n log n) porovnání nejde... ledaže...") [BWC]
Ríša Hladík

Při analýze algoritmů a datových struktur nás většinou zajímá chování na nejhorším vstupu. Reálný svět ale často není tak pesimistický – čas od času třídíme skoro setříděné pole nebo ve vyhledávacím stromě přistupujeme k těm samým prvkům stále dokola. Ukážeme si datové struktury, které se umí přizpůsobovat obtížnosti vstupu a na snadných vstupech pracovat klidně i v konstantním čase na operaci.

Expertem snadno a rychle ("Občas k úspěchu stačí mít chytré kamarády") [MWU]
Ríša Hladík

Co má společného sázení na koňské dostihy, vězňovo dilema a hledání kružnice opsané množině bodů? Ve všech z nich se dá uplatnit obecná algoritmická technika zvaná "multiplicative weight update". Ukážeme si její přímočaré použití na problému expertů – jak, máme-li vícero expertů (sázkařů, předpovědí počasí, heuristik), se řídit jejich radami a vyrovnat se nejlepšímu z nich, i když předem nevíme, kdo to je. Pak si, vyzbrojeni tímto kladivem, ukážeme další hřebíky, které s ním jdou zatlouct.

Programovací jazyky a nástroje

Programování v jazyce C [C]
David „Dejwut“ Pacák

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.

Programování v jazyce C# ("abstract internal record class Thing<T>(T thingy) where T : new()") [CIS]
Jakub Hampl, Ondra Machota

C# je programovací jazyk sice vysokoúrovňový, ale stále silně typovaný a plný velmi zajímavých funkcí. Podíváme se, jak příjemné vlastně může být programování v jazyce, který je na první pohled plný zbytečné byrokracie. Také si něco povíme o novinkách v C# a také o tom, jak tenhle jazyk ze země oken pohodlně používat na Linuxu.

TypeScript ("Typový heavy metal!!!") [TS]
Kuba Pelc

TypeScript je nadstavba nad JavaScriptem, která do něj přidává statické typování. A nejen ledajaké! Umí spoustu pěkných věcí, jenž v ostatních mainstream jazycích nenajdeme. Ukážeme si, jak v něm pohodlně popsat i velmi složité koncepty, a jak moc nám tento jazyk zpříjemní psaní webových věcí oproti JavaScriptu, který je notorický svou náchylností na nenápadné chyby, které odhalíte, až jakmile vám aplikace spadne.

Pokročilé povídání o Pythonu ("import antigravity") [PYTH2]
Dan Skýpala, David „Dejwut“ Pacák

Povídání o méně známých částech Pythonu. Datový model: objekty, třídy, metatřídy, dekorátory a deskriptory. Magické metody a na nich postavené protokoly. Generátory, generátorové výrazy a funkcionální styl programování. Asynchronní a paralelní programování. Zajímavé moduly nejen ze standardní knihovny. Propojení Pythonu s C, ...

Předpoklady: Základy Pythonu.
Funkcionální programování ("I/O je monoid v kategorii endofunktorů") [FUNC]
Adam Jahoda, Dan Skýpala

Funkcionální programování je přístup ke stavbě programů, který se stává rok od roku populárnějším, a to i mimo jazyky, které se běžně považují za funkcionální. Ukážeme si krásy jazyka Haskell, kde je vše funkce a sideefekty neexistují. I tak v něm ale jde zapsat úplně vše, často navíc velmi elegantně.

Předpoklady: Základní schopnosti programování v libovolném jazyce
Procesy, vlákna a zámky ("Koupil jsem dalších 15 procesorů, proč je to stále stejně pomalé?") [THREAD]
Dan Skýpala, Ondra Machota

Zrychlovat procesory už moc neumíme, tak si jich pořídíme více. Jak psát programy, které běží paralelně ve více procesech nebo vláknech. Jak vlákna usměrnit, aby nám nerozbila program na nečekaných místech. Rozebereme, jak fungují zámky, kdy je musíme použít a jakou cenu za to platíme.

Git a jiné systémy pro správu verzí ("U svatýho tučňáka, kdo sem napsal tohle? Ono to tvrdí, že JÁ?!") [GIT]
Dan Skýpala, Vojta Káně

Jak vyvíjet program delší dobu a nezbláznit se u toho. Různé systémy pro správu verzí od diff/patch přes CVS a SVN až ke Gitu. Jak Git funguje: stromy, commity, větve, tagy. Merge mezi větvemi nebo mezi různými počítači.

Git pro pokročilé ("In case of fire, commit, push, and exit the building.") [GIT2]
Vojta Káně, Martin „Medvěd“ Mareš

Používáte Git pro všechny své programy a k svačině místo novin čtete commit logy svých oblíbených projektů? V tom případě pojďme nahlédnout pod pokličku, jak Git funguje uvnitř. Reprezentace historie pomocí hešování grafů. Pracovní strom, index, commity a jejich adresy, větve. Pack files jako elegantní způsob komprese dat na disku i na síti. Kouzelnické triky: hledáme bugy půlením historie, přepisujeme dějiny, automaticky konvertujeme soubory. Git v praxi: jak se liší správa zdrojáků v projektech o jednom, deseti a tisíci programátorech.

Jak se nestat vepřem ("/* You are not expected to understand this */") [STYLE]
Dan Skýpala, Vojta Káně, Martin „Medvěd“ Mareš

Tvrdí se, že číst kód je mnohdy těžší, než ho psát – dokonce i po sobě, stačí krátká doba. Je několik obecně uznávaných pravidel, jak kód psát a jak ne, aby byl hezký a dobře čitelný. Od základních (rozumná pojmenovací konvence, systematické odsazování), až po to, kdy opravdu použít goto, jak členit program na funkce a jak využít nějaké třídy, moduly a podobně. Jak napsat užitečný komentář nebo dokumentaci. A kdy se vyplatí se na všechna tato pravidla vybodnout.

Textový editor Vim ("Víš, jaký je nejlepší textový editor? Vim.") [VIM]
Dan Skýpala, Matúš Púll, Martin „Medvěd“ Mareš

Odložme na chvíli své myše a pojďme si vyzkoušet textový editor, který umí poslouchat na slovo. Pravda, budeme se ta slova muset chvíli učit, ale výsledek bude proklatě efektivní. Základní příkazy, textové objekty, regulární výrazy, makra, kouzla. Neovim, Lua a language servery. Vimovité ovládání jiných programů, třeba webového prohlížeče.

SQL databáze ("SELECT something FROM knowledge LIMIT 90min") [SQL]
Dan Skýpala, Martin „Medvěd“ Mareš

Jak si schovat data do relační databáze a jak je tam zase najít, ideálně rychle. Definice tabulek a indexů. Dotazy a jejich skládání a vnořování. Pohledy, funkce a triggery. Transakce a různé druhy konzistence. Rozdíly mezi dialekty SQL.

Kompilátory ("Překládá se to půl roku, ale stejně to rychle nebeží.") [COMP]
Ondra Machota

Povídání o tom, jak překladače fungují uvnitř. Krátce se podíváme na historický vývoj překladačů, zjistíme, jak je kód reprezentovaný uvnitř překladače, rozdělíme překladač na front end, middle end, back end. Poté se podíváme na základní optimalizace, řekneme si, co je to dataflow a SSA forma a ukážeme si, jak se používají.

Hardware a operační systémy

Principy počítačů ("A opravdu uvnitř počítače běhají malí trpaslíci?") [HW]
Martin „Medvěd“ Mareš

Vydáme se do země skřítků, kteří pohánějí počítače. Počítačové architektury od hodinek po superpočítač od Craye, jejich křivolaká historie i současnost. Co je to procesor, jak se programuje a jak se chová. Různé druhy pamětí a jejich cacheování. Jak procesory komunikují s okolím – sběrnice, čipové sady, vstupní a výstupní zařízení. A co když je procesorů několik, nebo třeba pár tisíc? Přednáška bude praktická: pár počítačů při ní rozebereme a možná i nějaký postavíme.

Operační systémy ("Můj procesor přeci umí spouštět instrukce, tak na co ještě čekáme?") [OS]
Dan Skýpala, Martin „Medvěd“ Mareš

Operační systémy jsou pro mnohé programátory black box – víme co od nich chceme a co všechno za nás umí zařídit, ale málokdo si umí představit, jak to ty operační systémy vlastně dělají. Povíme si, jak vypadá architektura dnešních operačních systémů, tedy co všechno za nás umí takový operační systém zařídit, co naopak za něj zařídí procesor a jak to všechno funguje dohromady. Správa procesů a vláken, plánování, synchronizace. Paměť, adresace a její přidělování. Volání syscallů.

Toulky assemblerem ("Pojďme se společně ztratit.") [ASM]
Martin „Medvěd“ Mareš

Procesor nerozumí proměnným, podmínkám, cyklům ani jiným věcem, které jsou pro nás při programování běžné. Podíváme se, jak lze výše zmíněné konstrukce přepsat do procesorových instrukcí. Co přesně se děje při volání funkce? Jak kód vytunit, aby běžel rychleji? Také se podíváme na souvislosti s návrhem dnešních procesorů.

Předpoklady: Umět přečíst jednoduchý program v C.
Zrychlování na úrovni procesoru ("30 je možná konstanta, ale čekat minutu nebo půl hodiny už je docela rozdíl") [FAST]
Ondra Machota

Multiplikativní konstanty se sice „schovají pod óčko“, ale často mohou dělat rozdíl mezi instantní odpovědí a něčím, na co se nikomu nebude chtít čekat. Dnešní procesory už opravdu nejsou jednopáskové Turingáče, ale multijádrová monstra plná vektorových instrukcí a podivných optimalizací. Ukážeme si spoustu nástrojů, které nám pomohou schopnosti našeho CPU využít na plno – OpenMP, vektorové extenze a intrinsika, argumenty kompilátoru, profilování a mnoho dalšího.

Předpoklady: Umět číst programy v C a jednoduchém C++
Programování v Linuxu ("Všechno na světě je tak trochu soubor.") [PLX]
Vojta Káně, Martin „Medvěd“ Mareš

Jak vypadá rozhraní mezi jádrem Linux a uživatelskými programy. Co se doopravdy stane, pokud ve svém céčkovém programu zavoláme printf nebo malloc. Jak napsat program, který vůbec nepotřebuje standardní céčkovou knihovnu. Co všechno se umí chovat jako soubor a co jako signál. A což takhle komunikovat po síti?

Předpoklady: Schopnost přečíst a napsat jednoduchý program v C.
Linux pro správce serveru ("Printer is on fire???") [LSERV]
Martin „Medvěd“ Mareš

Jak vytvořit jednoduchý Linuxový server, který poskytuje služby vaší domácnosti, nebo třeba nějaké větší síti. Co se tam hodí provozovat? Povíme o SSH, kličích, šifrování, systemd, Apache a Nginxu, nastavení mailového serveru i DNS. Jak server zabezpečit před útočníky, jak před ztrátou dat a jak před uklízečkou. Vše si vyzkoušíme prakticky, třeba na virtuálním počitači.

Předpoklady: Základní znalost Linuxu.

Sítě a bezpečnost

Sítě a Internet ("Sítě nejen na ryby.") [NET]
Vojta Káně, Martin „Medvěd“ Mareš, David „Dejwut“ Pacák

Jak funguje Internet a počítačové sítě vůbec: od elektronů v drátech (fotonů v optických kabelech nebo elektromagnetických vln) přes komunikaci na jedné malé síti až ke komunikaci v celém Internetu. Vysvětlíme si rámce, pakety, MAC a IP adresy, routování v malých i ve velkých sítích. Jak to reálně funguje s IPv4 a NATem, co to jsou porty a jak se od sebe liší TCP a UDP. A na závěr radosti a strasti IPv6 (až ho konečně zavedeme).

Sítě II – protokoly ("Jak si přečíst maily... sousedovy maily.") [NET2]
Vojta Káně, Martin „Medvěd“ Mareš, David „Dejwut“ Pacák

Volné navázání na NET aneb máme fungující síť a chceme nad ní provozovat složitější komunikaci. ICMP aneb servisní protokol Internetu, DNS a překlad doménových jmen, jednoduché textové protokoly jako je FTP, SMTP, IMAP nebo nejpoužívanější webové HTTP. U HTTP se zastavíme trochu déle – hlavičky, návratové kódy, cookie, více domén na stejné IP adrese a SSL certifikáty.

Předpoklady: Základní povědomí o počítačových sítích v rozsahu NET
Webové stránky [WWW]
Jakub Hampl

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.

Hackování webů [WEBHACK]
Jakub Hampl

Praktické ukázky různých útoků na webové stránky. Od útoků na server samotný (neošetřené parametry, SQL injection, template injection) přes kradení přihlašovacích cookies pomocí XSS útoků až po přinucení udělat uživatele něco, co udělat nechce pomocí CSRF útoků. Vše si budeme prakticky ukazovat a zároveň demonstrovat, jak se proti těmto útokům bránit.

Předpoklady: Rozumět základům HTTP
Chatovací protokol Matrix [MATRIX]
Martin „Medvěd“ Mareš

Matrix je moderní chatovací protokol navržený tak, že každý si může provozovat svůj server, který se domluví se všemi ostatními servery. Pojďme nahlédnout, jak taková věci uvnitř funguje. Synchronizace stavových grafů a spousta zajímavé kryptografie. Zkušenosti (dobré i špatné) z provozování vlastních serverů.

Hesla ("Byl tam dolar, nebo ampersand?") [PASS]
David „Dejwut“ Pacák

Kdo si má všechna ta hesla pamatovat? A ještě po mně chcete, abych je měnil každý měsíc? Hesla jsou dnes potřeba skoro všude, většině lidí však působí jen problémy. Povíme si, jak vylepšit své zabezpečení bez nutnosti pamatovat si desítky různých hesel. Většinu odvodíme na základě toho, jak se hesla ukládají na serverech a jak se prolamují. Nakonec ještě zmíníme jiné způsoby přihlašování, které hesla v mnohém překonávají.

Kryptografie ("Gbgb arav zbp gnwan mcenin.") [CRYPT]
Adam Jahoda, Matúš Púll, Martin „Medvěd“ Mareš

Kryptografie čili tajuplná nauka o šifrách, jejich konstrukci a hlavně o jejich luštění. Šifrovací systémy jako lego: základními kostičkami nám budou symetrické a asymetrické šifry, jednosměrné funkce a náhodné generátory. Stavět z nich budeme kryptografické protokoly na bezpečný přenos, autentikaci, digitální podpisy a třeba i na házení korunou po telefonu. Předvedeme nerozluštitelnou šifru a dokonce to o ní i dokážeme.

Aplikace kryptografie ("6140 a184 c9a6 41f1 de99 e733 354a f451") [CRYPT2]
Martin „Medvěd“ Mareš

Pokročilejší a občas nečekané aplikace základních kryptografických primitiv. Jak přesvědčit server, že známe heslo, aniž bychom mu ho posílali? Jak zajistit, aby útočník nemohl dešifrovat komunikaci, ani když dodatečně získá soukromý klíč? Jak funguje BitCoin (decentralizovaná digitální měna) či Tor (protokol znemožňující komukoli po cestě vědět, kdo s kým komunikuje)?

Předpoklady: Základní povědomí o šifrování (CRYPT) a víra v existenci náhodných čísel
Praktická kryptografie ("A proč jsou všechny ty zámky na papírových dveřích?") [PCRYPT]
Martin „Medvěd“ Mareš

Programátoři si často myslí, že pro bezpečnou komunikaci stačí vybrat si z knihovny osvědčenou silnou šifru. Jak naivní! Navrhnout bezpečný protokol není maličkost a dá se při tom ledacos zpackat. Replay útoky (jak otevřít auto krabičkou za 30 dolarů), útoky na padding a na blokovou strukturu. Čí že je ten podpis? Jak nepoužívat RSA a jak nehešovat hesla. Jak náhodná jsou vaše čísla? Postranní kanály: časování, spotřeba, záření. K čemu se crackerům hodí termoska s tekutým dusíkem.

Mikrokontroléry ("Nejlepší debugger je LEDka.") [MCU]
Martin „Medvěd“ Mareš

Srdcem mnoha dnešních technických hraček je mikrokontrolér. To je čip, na kterém je integrovaný nejen procesor, ale i paměť a spousta zajímavých periferií. Ukážeme si, jak se mikrokontroléry programují, jaké periferie typicky obsahují a jak je používat ke komunikaci s okolním světem. Něco si vyzkoušíme i prakticky na STM32.

Předpoklady: Hodí se základní znalost jazyka C.
Bezpečnostní chyby v procesorech ("Sběrnicí obchází Přízrak a krade klíče.") [CPUBUG]
Martin „Medvěd“ Mareš

Že jsou v programech bezpečnostní chyby, na to jsme si už zvykli. Ale teprve zvolna si zvykáme na to, že mohou být i v hardwaru, dokonce v samotném procesoru. Poslední tři roky přinesly několik ošklivých překvapení tohoto druhu s veselými jmény, jako je Meltdown a Spectre. Budeme se zabývat fungováním procesoru uvnitř, zejména všelijakými triky na zrychlení výpočtu: superskalárním zpracováním instrukcí, kešováním a predikcí skoků. A ukážeme, co pokazil Intel, co AMD a jak toho jde zneužít.

Umělá inteligence

Přírodou inspirované algoritmy [PRINSALG]
Ján „Janči“ Plachý

Příroda je nádherná a celá tisíciletí se jí inspirujeme. Kolik už inspirovalo spisovatelů, básníků a malířů. Nyní jsou na řadě programátoři. Když si nebudeme vědět s nějakým těžkým problémem rady, tak zkusíme nenápadně opisovat od přírody.

Strojové učení ("Nechme stroje se samy učit.") [ML]
Vojta Lančarič

Co je to strojové učení? Jaké typy strojového učení existují? Začneme u jednoduché lineární regrese, přes perceptron až skončíme u kouzelného slovíčka neuronové sítě. Povíme si rozdílné druhy neuronových sítí a nakonec si odskočíme k algoritmu, který nepotřebuje kromě surových dat nic navíc a dokáže dělat užitečné věci.

Neuronové sítě [NEURO]
Vojta Lančarič

Základy strojového učení – od lineární a logistické regrese přes husté neuronové sítě až po konvoluční neuronové sítě, které se používají při rozpoznávání obrázků.

Bayesovské sítě ("Kdyby si Bayes kreslil grafíky...") [BN]
Ondra Sedláček

Máme například nemocného pacienta s určitými symptomy a chceme odhadnout, jaká nemoc ho trápí. Nebo máme nějaký stroj a chceme odhadnout, zda se porouchá. Nebo máme nějakou situaci a chceme odhadnout, co se stane dál. Bayesovské sítě jsou jedním z nástrojů, které nám umožní takovéto problémy řešit. Na rozdíl od moderních nástrojů strojového učení, které jsou často černou skříňkou, Bayesovské sítě nám umožní vidět, jak ke svému rozhodnutí došlo, a umožní nám to i vysvětlit. Povíme si, co to jsou Bayesovské sítě, jaká je za nimi motivace, jak se staví a jak se v nich provádí inference, a to jak exaktní, tak aproximační.

Předpoklady: Základní znalosti pravděpodobnosti doporučeny.

Grafika a typografie

Typografie ("What You See Is all What You've Got!?") [TYPO]
Martin „Medvěd“ 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.

TeX ("No pages of output. Ask a TeXnician.") [TEX]
Martin „Medvěd“ Mareš

Z předchozí přednášky máme představu o tom, jak vypadá pěkná sazba. K její výrobě nám pomůže typografický systém TeX. Praktická přednáška s ukázkami použití TeXu od hladké sazby knihy až po zběsilosti hraničící s programováním. Jak do TeXu vkládat obrázky a jak to raději nedělat. Kde shánět další informace: TeXbook, TeXbook naruby a další zajímavá literatura. Praktické rozdíly mezi různými dialekty TeXu. Všelijaká rozšíření: pdfTeX, eTeX, LuaTeX.

Asymptote ("Vy obrázky kreslíte? My je programujeme!") [ASY]
Dan Skýpala

Rádi byste své řešení KSP ozdobili hezkými obrázky? Dají se nakreslit ručně, ale často je snazší obrázky programovat. Předvedeme Asymptote, což je programovací jazyk určený na kreslení 2D a 3D obrázků. Také se zastavíme u jeho předchůdců MetaPostu a MetaFontu a knihovny pro vektorové kreslení Cairo.

Formát PDF [PDF]
Martin „Medvěd“ Mareš

Jeden z nejrozšířenějších formátů na předávání dokumentů má za sebou spletitou historii i dokumentaci. Ukážeme si, jak vypadá uvnitř a co se do něj dá uložit: grafické objekty, text, fonty, odkazy, všelijaké anotace a meta-data, a dokonce i kryptografické podpisy. Zmíníme se o profilech, třeba PDF/X a PDF/A. Při troše štěstí si vytvoříme jednoduchý PDF soubor ručně a možná půjde i otevřít.

Unicode ("Jaký kód má sněhulák s kudrnatými vlasy?") [UNI]
Martin „Medvěd“ Mareš

Jak funguje znaková sada Unicode, která se snaží zapsat všechny jazyky světa? Codepointy versus glyfy. Kombinující znaky, čtvero normálních forem a pátá lehce nenormální. Typografické a neviditelné znaky. Co všechno prozradí Unicode Character Database. Uložení v paměti: formáty UCS-2, UCS-4, UTF-8 a UTF-16, nešvar s BOM. Tajemný svět emoji. Jak se s Unicode programuje? A jako vždy: bezpečnostní problémy.

Teoretická informatika

Pravděpodobnostní algoritmy ("Kudy dál? Hoďme si kostkou!") [PPALG]
Ondra Sedláček, Ríša Hladík

Když nevíme, jak se v algoritmu rozhodnout, někdy pomůže ponechat to náhodě a prostě si „hodit kostkou“. Dokážeme sestrojit algoritmy, které jsou rychlé, i když spravný výsledek vydají jen v 99 % případů. Ale i takové, které odpoví správně vždycky, ale rychlé jsou jen v průměru (třeba QuickSort). Též ukážeme, jak pomocí náhody zabraňovat kolizím v hešování.

Kvantové počitání ("return 0.5*dead + 0.5*alive;") [QC]
Martin „Medvěd“ Mareš

Stručný úvod do kvantového počítání. Kvantová superpozice stavů výpočtu a její kolaps při měření. Základní kvantové operace: negace, řízená negace, permutace, Hadamardovo hradlo, Tofolliho hradlo. Kvantová teleportace a jakto, že není v rozporu s teorií relativity. Groverův algoritmus na hledání v odmocninovém čase. Kvantová Fourierova transformace a Shorův algoritmus pro faktorizaci.

Předpoklady: Znalost komplexních čísel je nutností, znalost lineární algebry výhodou.
Jazyky, gramatiky a automaty ("Existuje regex, který rozpoznává regexy?") [AUTO]
Adam Jahoda, Martin „Medvěd“ Mareš

O jazycích přirozených, programovacích a matematických, jejich popisu a rozpoznávání. Začneme těmi nejjednoduššími: regulární jazyky a výrazy, konečné deterministické a nedeterministické automaty. Pak budeme stoupat po příčkách Chomského hierarchie, kam až to půjde. Jak výpočetně silný je třeba takový automat na kafe?

Buněčné automaty a Game of Life ("Čtverečkovaný svět, co není Minecraft") [LIFE]
Martin „Medvěd“ Mareš

Game of Life je dvojrozměrný svět, ve kterém se buňky vyvíjí podle průzračně jednoduchých pravidel. Už desítky let v tomto světě objevujeme další a další zajímavé jevy. Tak do něj také nahlédneme, prozkoumáme souvislosti s evoluční biologií i s algoritmy. Též uvidíme, jak Život zapadá do obecnějšího světa buněčných automatů.

Složitější složitost ("Kolik sekund stojí jeden bajt?") [SLOZ]
Dan Skýpala, Martin „Medvěd“ Mareš

Teorie výpočetní složitosti opravdu důkladně. Různé definice výpočetního modelu a velikosti vstupu. Složitostní třídy a vztahy mezi nimi. Různé druhy redukcí. Třídy P, NP, L, NL, PSPACE a NPSPACE. Nedeterministické stroje, orákula, alternující stroje a polynomiální hierarchie. Neuniformní složitost.

Dolní odhady složitosti [ODHADY]
Ríša Hladík, Martin „Medvěd“ Mareš

Jak dokázat, že jsme našli nejrychlejší možný algoritmus na danou úlohu? To je docela těžká otázka, ale aspoň u několika úloh na ni dokážeme najít odpověď. Nutnost přečíst celý vstup (opravdu?). Měříme množství informace: vážení kuliček, hledání, třídění a různost prvků v porovnávacím modelu. Omezená paměť a princip holubníku: závorkování. Komunikační složitost: palindromy na jednopáskových strojích. Nekonstruktivní důkazy existence těžkých problémů.

Aplikace informatiky

Komprese dat ("Jnm idln kpln j nstlčtln.") [ZIP]
Martin „Medvěd“ Mareš

Pokud jsou data příliš velká, můžeme je zkusit zkomprimovat. Předvedeme základní kompresní algoritmy: triviální (RLE), slovníkové (LZ77), statistické (Huffmanovo a aritmetické kódování) a některé pokročilejší techniky, jako třeba Burrowsovu-Wheelorovu transformaci (BZIP). Zmíníme se o kompresi zvuku, obrazu a videa (prediktory, wavelety, všelijaká ztrátová komprese).

Zpracování dat ("Bez práce nejsou koláč...ové grafy.") [DATA]
Martin „Medvěd“ Mareš

O světě jde sehnat spousta zajímavých dat ve strojově zpracovatelné podobě: obce a domy v nich, linky hromadné dopravy, katalogy hvězd, slova v češtině, katalog pokémonů, ... Pojďme se podívat, jak s daty zacházet. Naučíme se číst různé formáty dat od CSV až po XML, data zkoumat, filtrovat a kreslit podle nich pěkné grafy. Vyzkoušíme si prakticky v Pythonu. Předvedu své oblíbené nástroje, pojďte ostatním předvést ty své.

Automatické řízení ("Jak se řídí auto? A jak raketa?") [CTRL]
Vojta Lančarič

Řízení těchto dvou věcí sdílí teoretický základ, který je ale aplikovatenlý na mnohem širší spektrum aplikací. Na přednášce si nejprve vybudujeme něco málo z teorie, povíme si o zpětnovazebním řízení, PID regulátorech a dalších užitečných technikák, které se v automatickém řízení uplatňují. Poté se vrhneme na nejrůznější aplikace, podle toho, kam nás přednáška zanese.

Matematické přednášky

Pravděpodobnost ("Může se to stát ve třech přápadech z tisíce... takže nikdy.") [PAST]
Adam Jahoda

Jak pracovat s pravděpodobností matematicky. Ukážeme si pravděpodobnosti jevů, nezávislé jevy střední hodnotu, náhodné proměnné a další. Také si vše procvičíme na několika příkladech. Pravděpodobnost bývá mnohdy neintuitivní, proto poukážeme na časté nachytávky z reálného života. Pokud zbyde čas, tak si také ukážeme, jak se dá pravděpodobnost využít v informatice.

Fourierova transformace [FFT]
Martin „Medvěd“ Mareš

Jak rychle umíte násobit n-ciferná čísla? My to umíme lineárně. Hodí se k tomu chytrý trik pana Fouriera, který už dávno patří k matematické a fyzikální klasice. Ukážeme, co je Fourierova transformace zač, jak ji rychle spočítat a k čemu je dobrá: rychlé násobení polynomů i čísel, digitální zpracování zvuku a obrazu (spektrální analýza či třeba komprese).

Předpoklady: Základy komplexních čísel
Teorie (vesměs samoopravných) kódů ("f y cn rd ths, y wll b gd cmptr prgrmmr!") [KODY]
Martin „Medvěd“ Mareš

Jak komunikovat po lince, která průměrně každý k-tý bit přenese špatně? K tomu se hodí teorie samoopravných kódů, která nás naučí: vzdálenost slov a jejich souvislost s detekcí a opravou chyb, paritní a lineární kódy, perfektní kódy, Reed-Solomonovy a vůbec polynomiální kódy a několik dolních odhadů nádavkem. A jak s teorií kódů souvisí třeba čeština?

Lineární programování [LINPRG]
Adam Jahoda, Ríša Hladík

Jakýkoliv problém, který lze popsat soustavou lineárních nerovnic lze vyřešit v polynomiálním čase. A to metodou lineárního programování. Povíme si základy k tomu, jak lineární program vypadá, jak se vyřeší a jak se různé úlohy dají popsat pomocí lineárního programu. Přednáška se může buď více zaměřit na samotnou teorii lineárního programování, a nebo na jeho aplikaci v různých algoritmických úlohách.

Úvod do matematické analýzy ("lim8→ 9 sqrt(8) = 3") [MA]
Vojta Lančarič

Jak zjistit, jaký tvar má graf nějaké funkce? Jak najít její minimum? Jak spočítat délku spirály nebo objem sudu (třeba i čtyřrozměrného)? Jak spočítat sin x nebo třeba π? Na to všechno se hodí limity, derivace a integrály. Nejprve si o nich vybudujeme jednoduchou geometrickou představu, pak je nadefinujeme pořádně a naučíme se s nimi počítat.

Úvod do lineární algebry ("Tuhle matici nebudeme šroubovat") [LA]
Ján „Janči“ Plachý

Něco málo o vektorech, maticích a jak pomocí nich řešit lineární rovnice. Pokud zbyde čas, tak také o tom, jak matice souvisí s otáčením nebo zvětšováním a jak málo stačí k tomu, abyste si z pár předpokladů vyrobili použitelný výpočetní systém.

Grafy bez algoritmů [GRAFY]
Adam Jahoda

Teorie grafů trochu teoretičtěji. Grafy nakreslitelné jedním tahem a ty, které jdou nakreslit bez křížení hran. Jak se dají obarvit mapy a jak všechny grafy? Co znamená graf popárovat a kdy to jde dokonce perfektně?

Úvod do teorie čísel [NUT]
Ondra Sedláček, Martin „Medvěd“ Mareš

Co a k čemu je teorie čísel. Počítání v kongruenci, Euklidův algoritmus 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.

Teorie čísel a RSA ("267 - 1 = 193 707 721 · 761 838 257 287") [NUT2]
Ondra Sedláček, Martin „Medvěd“ Mareš

Pokračování teorie čísel, které nás dovede až k RSA – asi nejpoužívanějšímu asymetrickému šifrovacímu algoritmu dnešní doby. Počítání modulo složené číslo a Eulerova věta. Jak RSA funguje, proč funguje a jestli bude ještě fungovat. Generování klíčů, faktorizace kontra testování prvočíselnosti. Časová složitost aritmetiky.

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

Při navrhování algoritmů a počítání jejich složitosti narazíme na celou řádku zajímavých a ne úplně triviálních kombinatorických problémů, a tak se naučíme, jak na ně. 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, rekurentní rovnice a princip inkluze a exkluze. Možná se také potkáme s Dlouhým, Širokým a poněkud zmatenou šatnářkou.

Teorie množin ("Kdo holí holiče, který holí všechny, co se sami neholí.") [TEMNO]
Matúš Púll, Martin „Medvěd“ Mareš

Co jsou to vlastně ta přirozená čísla? Jak je definovaná matematika? Kdo jsem já? Proč jsme tady? Na dvě z těchto otázek jsou odpověď množiny. Ukážeme si, co to vlastně je, jak to definuje celý svět, čím se zaručuje co od světa matematiky chceme a jaké s tím jsou potíže. Zadefinujeme si relace a funkce, které nám umožní s množinami něco dělat a pak si s nimi budeme hrát, dokud nás to bude bavit.

Základy algebry [ALGBR]
Martin „Medvěd“ Mareš

Ukážeme si, jak zkoumat matematické operace, aniž bychom řešili, jestli se bavíme o sčítání, násobení, nebo třeba skládání geometrických zobrazení. Co jsou grupy, podgrupy, okruhy, tělesa a další zviřátka v algebraickém zvěřinci.

Logika aneb jak se staví matematika ("Následujicí věta není pravdivá. Předchozí věta je pravdivá.") [LOGI]
Matúš Púll, Martin „Medvěd“ Mareš

Pokud budeme v životě věřit všemu, co je „přeci zřejmé“, dostaneme se brzy do potíží a v matematice to platí dvojnásob. Proto své teorie musíme stavět pečlivě. Na to si filosofové a matematici pořídili logiku. Ukážeme, jak funguje výroková a predikátová logika, co je to výrok, axiom a důkaz. Vybudujeme pár jednoduchých teorií a podíváme se, co dovedou, a co už ne. Důkazy za nás ověří počítač, aspoň když mu trochu pomůžeme. Cílem je zobecnit tak nějak všechnu teorii, co používáme.

Catalanova a Fibonacciho čísla ("1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, ?") [CAT]
Ondra Sedláček, Martin „Medvěd“ Mareš

Kolik existuje binárních stromů? Kolika způsoby jde uzávorkovat výraz? A kolika způsoby projít čtvercovou mřížku, aniž bychom překročili úhlopříčku? Kam oko pohlédne, všude se skrývají Catalanova čísla. Kromě případů, kdy za ně zaskakují čísla Fibonacciho. Povídání o dvou zajímavých posloupnostech a jejich početném příbuzenstvu. Dlouhá cesta od hezkého vzorečku k rychlému algoritmu.

Křivky v počítačové grafice ("Jak se měří elegance křivky?") [BEZI]
Martin „Medvěd“ Mareš

Jak se na počítači kreslí křivky, které „vypadají hezky“, třeba tvar karoserie auta nebo tvar písmenka? Kružnice a jiné kuželosečky se k tomu moc nehodí, tak se poohlédneme po obecnějších křivkách. Základy matematiky okolo Bernsteinových polynomů, Bézierových křivek a spline funkcí. Práce s křivkami pomocí rekurzivního rozkladu a de Casteljauova algoritmu. Matematické modelování estetiky.

Předpoklady: Pro část přednášky se hodí vědět, co je derivace, a nebát se ji použít.
Z-transformace ("Když nevíš, tak to zezetuj.") [TRANZ]
Vojta Lančarič

Když nám někdo zadá diferenční rovnici, můžeme si ji elegantně převést na úplně jinou polynomiální rovnici, kterou už umíme snadno vyřešit. A potom řešení převedeme zpátky na posloupnost, která je řešením původní diferenční rovnice. Kouzla a čáry? Ani ne – to jen Z-transformace. Tu na přednášce nejprve vybudujeme a povíme si, jak s její pomocí řešit výše uvedené. Poté se podíváme k čemu dalšímu je vhodná a možná zbyde čas i na aplikace v teorii řízení nebo to, jak z ní odvodit transformaci Fourierovu.

Předpoklady: Hodí se znalost komplexních čísel

Fyzikální přednášky

Fyzikální senzory ("Dvakrár měř, jednou řež. Anebo raději víckrát.") [SENZ]
Vojta Lančarič

Jak se měří fyzikální veličiny? Obvykle pomocí různých senzorů, které si vhodně vypůjčí nějaký fyzikální zákon a převedou měřenou veličinu na jinou, snáze „měřitelnou“. Co to ale vlastně znamená? Během přednášky si vysvětlíme jak fungují A/D převodníky, které jsou často tím můstkem mezi senzorem a počítačem, a poté se podíváme pod pokličku dalším senzorům i s praktickými ukázkami.

Ostatní přednášky

Lingvištika ("Přísudek je v této větě podmět.") [LING]
Martin „Medvěd“ 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. Proč jeden jazyk potřebuje 15 pádů, zatímco jiný se bez nich obejde úplně. Jak se jazyky vyvíjejí a jak se navzájem ovlivňují. Kde se berou jazyková pravidla. Kde se vzalo písmo a proč se mluvený a psaný jazyk tolik liší. Jak se na jazyk dívá matematik a jak se na matematiku dívají lingvisté.

Quo vadis, češtino? ("Muž žena skopce dokopce si píská.") [CZLANG]
Martin „Medvěd“ Mareš

O češtině časů minulých, současných i (potenciálně) budoucích. Kde se čeština vzala a jak souvisí s ostatními evropskými jazyky. Co jsme během staletí získali, o co jsme přišli a o co nejspíš brzy přijdeme. A je to škoda? Vykrádáme cizí jazyky a ony zase nás. Kolik je češtin a která je ta správná? Proč už Jan Hus spílal Pražanům? Pojďme navrhnout pravopisnou reformu!

Fonetika ("Pojďte, zachrochtáme si spolu!") [FON]
Martin „Medvěd“ Mareš

Malá inventura zvuků, které lidé dovedou vytvářet, a jejich použití v komunikaci. Různé způsoby vytváření a modulace zvuku. Kolik různých B dokážete říci? Fonetické kontrasty a co si z nich různé jazyky vybraly. Rázy, polosamohlásky a jiní obyvatelé polosvěta. Přízvuk kontra délka. Asimilace, přehlasování a další „principy líné huby.“ Vše prakticky procvičíme.

Jak si pořídit vlastní jazyk ("Minao remabi malelio koribeto.") [CONLANG]
Martin „Medvěd“ Mareš

Hodí se vám, aby postavy ve vaší hře nebo povídce mluvily neznámým jazykem? Tak si vymyslete vlastní! Ale jak na to? Jak se vytváří různé vrstvy jazyka: slovní zásoba, morfologie, gramatika, frazeologie, ale i písmo a výslovnost. Proč si pořídit imaginární uživatele a imaginární historii. Jak najít správnou míru nepravidelnosti. Čím se můžeme inspirovat z existujících jazyků a čím raději nechceme.

Čárové kódy ("Jak naučit počítače číst láhve od Coly.") [BAR]
Martin „Medvěd“ 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, ...

Programování na grafické kartě ("Řídí se to jako raketa – létá rychle, ale nemá volant.") [GPU]
Kuba Pelc

Dnes již není grafická karta jen placka převádějící digitální pixely na analogový signál. Dá se na ní počítat kde co. Zde si představíme trochu technologie CUDA a compute shadery v OpenGL a zmíníme, že tento ďábelský kus HW umí počítat zatraceně rychle, ale pokud tam uděláme malou chybičku, tak také zatraceně pomalu. Zmíníme, proč tomu tak je, jaké druhy paměti můžeme v programu používat a co je to multiprocesor.

Shadery ("Malujeme kódem") [SHADER]
Kuba Pelc

Programování nemusí být jen o terminálech a webech. Ukážeme si, jak i z několika málo řádků kódu může vzniknout něco hezkého a barevného. Shadery jsou krátké prográmky, které každému pixelu obrázku přiřadí nějakou barvu. Podíváme se s jejich pomocí do hlubin fraktálů a z trošky náhody uděláme mraky nebo vodní hladinu. Přednáška bude převážně praktická.

Fotorealistická grafika aplikovaná na hrochy ("Nechť je hroch perfektní koule ve vakuu.") [HIPPOGOD]
Kuba Pelc

Vyhlídkový výlet světem pomalé fotorealistické počítačové grafiky (na rozdíl od rychlé herní grafiky v GAMEGFX), demonstrovaný na :hippo_god: (viz https://www.shadertoy.com/view/wtGczK). Projdeme základní principy simulace světla, raytracingu, GPU a proceduální generace. Jak definovat scénu s hrochem pomocí pár řádek kódu a jak to celé použít pro nakreslení obrázku v Shadertoy.

Grafika v počítačových hrách ("But can it run Crysis?") [GAMEGFX]
Kuba Pelc

Vyhlídkový výlet světem rychlé herní počítačové grafiky (na rozdíl od pomalé fotorealistické v HIPPOGOD). Dozvíte se, jak se vyráběly hezké pixely rychle a efektivně na různých érách hardwaru i softwaru, od konce devadesátek až po současnost. Jak funguje vykreslování a GPU zevnitř a co jsou všechny ty obskurní zkratky v grafických nastaveních. A taky pár her rozpitváme zaživa frame debuggerem.

Webové mapy ("Země je perfektní jednotkový čtverec, že ano?") [WEBMAP]
Kuba Pelc

Webové mapy - takřka všudypřítomné a velmi užitečné. Jak ale fungují? No a co teprve, když chceme mapy vektorové? A co když chceme zobrazovat Zemi jako kouli? A zároveň vektorově? Zdánlivě jednoduchá věc jako mapa totiž dokáže skrývat mnoho zajímavých technických detailů. Nahlédneme pod pokličku knihoven Leaflet a především MapLibre, které nedávno získalo podporu vektorového glóbu. Možná jsem v tom měl prsty...

Programátoři versus realita ("Jeniffer Null ze Scunthorpe by mohla vyprávět ...") [FALSE]
Martin „Medvěd“ Mareš

Sbírka představ o světě, kterým většina programátorů věří, ale vlastně nejsou pravdivé. Jsou všechny dny stejně dlouhé? A všechny minuty? Kolik znaků má jeden znak? Čím jsou oddělené comma-separated values? Kde ve Zlíně je tř. Tomáše Bati č.p. 202? Kolikrát že? Má každý občan EU příjmení? A jméno? A právě jedno rodné číslo? Kolik zavináčů může obsahovat e-mailová adresa?

(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í.

Čaj ("Jak vypadá odvar z nezralých pražců?") [TEA]
Martin „Medvěd“ 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.

Úvod do hudební teorie ("What do you get when you drop a piano into a mine shaft? A flat miner.") [MUSIC]
Ríša Hladík, Ondra Machota

Přednáška, na které se pokusíme od základu vybudovat hudební teorii, od vibrující struny až k písničkám. Proč má klavír 7 bílých a 5 černých kláves a proč na 80% populární hudby stačí ty bílé. Povíme si o tónech, stupnicích, rytmu, melodii, akordech. Zaměříme se na co a jak, a když bude čas, dotkeneme se i proč. Pokud Tě zajímají základy toho, jak hudba funguje, ale zatím v tom tápeš, je tato přednáška přesně pro Tebe. Podle publika můžeme volně přejít v MUSIC2.

Střípky hudební teorie ("Já nehraju blbě, falešně a mimo rytmus, to je mikrotonální polyrytmická improvizace.") [MUSIC2]
Ríša Hladík, Ondra Machota

Velmi volné pokračování předchozí přednášky. Jak si složit vlastní písničku, proč mollové akordy znějí smutně a jak to souvisí s kruhem kvint. Základy jazzové harmonie aneb spicy akordy pro každou příležitost. Když bude chuť voicingy, substituce, improvizace, nezápadní hudba a mnoho dalšího. Přednáška hodně laděná podle zájmu publika.

První pomoc a zdravověda pro začátečníky ("Je to jednodušší a méně tajemné než to vypadá") [ZDRV]
Ríša Hladík, Ondra Machota

Pobavíme se o základech první pomoci. Jak se postarat o člověka v bezvědomí? Jak o člověka, ze kterého teče krev? A jak si ošetřit odřené koleno, aby se co nejdřív zahojilo? Proč nevysávat jed z rány a nepodkládat člověku hlavu. Pokud bude zájem, tak si můžeme i něco vyzkoušet prakticky. Cílem přednášky není z vás udělat zdravotníky (to v 90 minutách ani nejde), ale spíš ukázat, že první pomoc je překvapivě logická a zábavná, a ukázat si věci, se kterými máte reálnou šanci se potkat.

Demoscéna - galerie programátorského umění ("I've seen things you people wouldn't believe.") [DMSCN]
Kuba Pelc

Když se počítače poprvé staly dostupné pro běžné smrtelníky, nic moc ještě neuměly. Ale měly k sobě přibalený manuál od nějakého programovacího jazyka. A tak lidi začali programovat. A začali si hrát. Psali malé hry, ale také prográmky, které kreslily něco hezkého jen tak. Takzvané „intra“ nebo „dema“. A pak se začali předhánět a soutěžit v tom, kdo udělá lepší, hezčí, technicky propracovanější demo. Někdy s limitem na velikost 64 kb, někdy 4 kb, někdy bez limitu. A tak se v průběhu desetiletí vyvinula demoscéna. Pojďme se podívat na ty nejhustější dema! A možná si i říct něco o tom jak fungují.

FPV droník ("O dimenzi lepší než jen řídit auto.") [DRON]
Jakub Hampl

Malé drony, takzvané Tinywhoops, jsou kvadrokoptéry o velikosti dlaně, se kterými je kopec srandy. Ukážeme si, jak s dronem létat, jak ho nastavit, opravit a jak se o něj a o příslušenství starat, aby dlouho vydrželo. Řekneme si něco málo o protokolu ELRS a analogovém videu. Budete si moci vyzkoušet simulátor a pokud budou podmínky příznivé, zalítáme si i venku.

Textový (nejen) editor Emacs ("Přece sem ty klávesy nemontovali zbytečně") [EMACS]
Vojta Káně

Po letech člověk začne mít pocit, že už vše zná, vždyť přece umí udělat interaktivní rebase z příkazové řádky, parametry rsyncu zná nazpaměť a vimovým makrem za pár chvil přechroupe tisíci řádkové dokumenty. Je tak ještě co objevovat? Zjistil jsem, že je, a rád se o zkušenost podělím. Řeč bude o editoru Emacs z dílny GNU. Ten je známý pro svou skriptovatelnost (pravda, ve vlastním dialektu LISPu), klávesové zkratky o nichž se ani uživatelům vimu nezdálo a též pro svou těžkotonážnost. Na všech těch podhledech něco je a v tom je právě to kouzlo. Neodpovím, který textový editor je ten nejlepší na světě, ale ukážu další možné pohledy na svět, jež se hodí znát, i kdyby se přes ně člověk nakonec dívat nechtěl.

Zážitky z cest ("Říkáte, že poslední vlak už odjel? A nemáte tu alespoň nějaký útulný parčík s lavičkami?") [VYLET]
Vojta Káně

Jsa skaut rád cestuji poznávat kraje domácí i cizí a při tom se spíše než na neprůstřelný plán spoléhám na šťastné náhody a lidskou dobrosrdečnost. Povím, co krásného jsem zažil, na co jsem se při tom nachytal a doufám, že vás přesvědčím, abyste to zkusili taky. Jedná se o velmi volné pokračování povídání ze Smršti 25, které tenkrát vyteklo z vyhrazeného časového bloku, jak jen mohlo. Rozhodně ale nevadí, pokud jste předehru neslyšeli.

Různé démonky SystemD ("talkctl start –speaker Vojta") [SYSTEMD]
Vojta Káně

Balík systemd čítá desítky nástrojů a démonků a každým dnem přibývají další. Nakoukněme, co je uvnitř a na co   zvráceného   neobvyklého se to dá použít. Přednáška cílí hlavně na ostřílené Linuxáky.

Zápisky organizátorovy ("Co se (ne)může pokazit, to se pokazí.") [ZORG]
Martin „Medvěd“ Mareš & Dan Skýpala

Medvěd se nachomýtl k organizování nejrůznějších olympiád – od naší matematické až po mezinárodní informatickou. Místy vážné povídání o jejich zákulisí, prokládané spoustou příhod, které jsou tak neuvěřitelné, že se musely stát. Proč je potřeba počkat na půlnoc? Kdo chytí vačici v serverovně? Počítáte s Godzillou?

Making of Víkendovka ("Rapidly declining sanity of Víkendovka orgs, as expressed through commit messages") [AAVIK]
Kuba Pelc

Na Víkendovce na to nebyl čas, tak aspoň na sous chci nabídnout povídání o zákulisí a přípravě (nejen) letošní Víkendovky. Nastíním, jak taková akce vzniká a jak se příprava liší od klasického sousu, a obecně bych chtěl přiblížit proces přípravy soustředkovité akce. Povím, jak vznikaly některé hry a jakým designovým problémům jsme čelili (a čelíme). A také prozradím, jak vznikaly artefakty a úvodní filmeček hlavní hry.

Pilotování dopravních letadel [LAND]
David „Dejwut“ Pacák, Ondra Machota

Zajímalo vás někdy, co se děje v kokpitech dopravních letadel? Co před sebou piloti vidí, čím letadla ovládají, jak vlastně dokážou přistát v noci nebo za husté mlhy? Popovídáme si o tom, jak se pilotují moderní dopravní letadla, co mají za zajímavé systémy, jak s nimi piloti interagují a o cokoliv dalšího bude zájem (a budeme o tom dost vědět).

Rozbalit všechny přednášky