Krutá Smršť Přednášek 2019

Seznam přednášek – Karolínka

Hlasování o přednáškách na Smršt již skončilo a Smršt již také proběhla.

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í Smršt.

  • Matfyzácké přednášky
  • Nematfyzácké přednášky
(Kliknutím na název přednášky zobrazíte její detail)

Matfyzácké přednášky

V této kategorii sídlí přednášky týkající se informatiky, případně matematiky či fyziky.

Algoritmy a datové struktury

Intervalové stromy ("Já bych ty intervaly nejradši... dal do stromu!") [ITREE]
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.

Toky v sítích ("Když je v grafu povodeň, těsní?") [TOKY]
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)
Stromové algoritmy ("Půjdeme na to od lesa") [TREES]
Ríša Hladík, Martin 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.

Těžké problémy [HARD]
Ríša Hladík, Vašek Končický

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.

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

Někdy potřebujeme najít podřetězec ve velkém množství textu. Základní řetězcové algoritmy a datové struktury (např. trie). Indexování: jak si pro velké množství textu předpočítat datovou strukturu (v našem případě sufixové pole), která umožní vyhledávat v něm rychleji než v lineárním čase? Další témata dle zájmu časových možností, např. regexy a vyhledávací automaty.

Suffixové stromy a pole ("Jak obrátit řetězec naruby?") [SUFF]
Martin Mareš, Filip Štědronský

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.

Komprese dat ("Jnm idln kpln j nstlčtln.") [PRESS]
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).

Splay stromy ("Lepší než uklízení je organizovaný chaos.") [SPLAY]
Martin Mareš, Vašek Končický

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

Datové struktury ve volném stylu ("Všechno důležité jde spočítat v konstantním čase.") [DSX]
Martin Mareš

Pojďme spolu na výlet krajinou datových struktur. Vyšlapané cestičky lesem vyhledávacích stromů mineme a raději zahneme do opravdové džungle. Potkáme struktury pracující ve skoro konstantním čase, dynamické reprezentace grafů, roztodivné druhy hešováni a cokoliv dalšího, o co si průvodci řeknete.

Fourierova transformace [FFT]
Martin 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
PageRank [PGRANK]
Matej Lieskovský

Na pomezí mezi lineární algebrou a teorií grafů se nachází algoritmus PageRank. Jedná se o zajímavé dílo Larryho Page, na kterém ve svých začátcích stál celý Google. Povíme si o tom, co jsou to vlastní vektory, co to má společného s Markovovskými procesy a proč občas může fungovat definice kruhem.

Programovací jazyky a filosofie

Logické programování ("Mohu být svým vlastním dědečkem?") [LOGP]
Pali Rohár

Což takhle projednou neříkat počítači, jak má věci počítat, ale jenom mu zadat podmínky, které má výsledek splňovat? Neprocedurální programování vychází přesně z této myšlenky. Podíváme se na programovací jazyk Prolog, který vychází z formální logiky. Zjistíme, které problémy se v něm neobyčejně zjednoduší a které naopak programování promění v noční můru. Pokud jsi milovník rekurze, budeš u této přednášky nejspíš skoro celou dobu spokojeně vrnět.

Perl ("Jak Pejsek a Kočička vymýšleli programovací jazyk") [PERL]
Pali Rohár

Jednoho dne se Larry Wall rozhodl, že nasype do jednoho velkého kotle spousty programovacích jazyků a unixových utilit, za stálého míchání povaří, posléze přecedí, přikoření a implementuje. Tak vznikl Perl, jazyk původně určený hlavně na zpracování textu, ovšem jak se ukázalo, též šikovný na spoustu dalších věcí. Asociativní pole, libovolně složité datové struktury za pomoci referencí, balíčky a objekty zdarma a hlavně regulární výrazy zde a všude. Zkrátka jazyk, který lze jedině milovat nebo nenávidět, nic mezi tím. Co se Perl 5 přiučil od Perlu 6.

Perl 6 ("Slečno, mohu vám ukázat svou sbírku operátorů?") [PERL6]
Filip Štědronský, Martin Mareš

Je to Perl, a přitom to Perl není. Co je to? Aneb jak to dopadne, když se pokusíme navrhnout programovací jazyk budoucnosti a inspirovat se přitom filosofií Perlu. Typový systém, pokud zrovna chcete. Objekty, třídy a metatřídy. Periodická soustava (meta)operátorů. Definování jazyka v sobě samém. A co se to stalo s regulárními výrazy? Jak vypadají implementace P6 a kdy je prozatím lepší programovat na papíře. Praktické cvičení ve stavbě vzdušných zámků a bydlení v nich.

Pokročilé povídání o Pythonu ("import antigravity") [PYTH2]
Filip Štědronský

Povídání o méně zmiňovaných částech Pythonu. Dekorátory, metaclasses, generátory, funkcionální styl programování v Pythonu. Jak napsat quicksort jako lambda funkci. Představení zajímavých modulů nejen ze standardní knihovny. Další témata dle přání účastníků: paralelní programování (asyncio, multiprocessing), síťová komunikace, GUI, matematické výpočty, propojení Pythonu s C, ...

Předpoklady: PYTH
Webové UI funkcionálně [REACT]
Standa Lukeš

Vyrábět složitější aplikaci čistě v Javascriptu a HTML může být trochu peklo, tak si ukážeme, jak se v tom neutopit. Vyrobíme si totiž magickou abstrakci a z každé části stránky uděláme jenom funkci, která dostane stav svojí části a vrátí HTML, které nám prohlížeč zobrazí. Pomocí toho se dá v aplikaci udělat hezky pořádek, tak si ukážeme jak se v tomto modelu dá naprogramovat všechno potřebné.

Asynchronní programování [ASYNC]
Standa Lukeš

Jak nečekat až se něco stane, ale místo toho reagovat až když se to opravdu stane. Jak pracovat s událostmi, jak programovat událostmi řízené systémy. Ukážeme si jaké problémy za nás řeší Promises a vrátíme se od řešení událostí k normálnímu programování. Jak se nezbláznit z toho, že se děje několik věcí současně.

Složitost a vyčíslitelnost

Amortizace ("Celek bývá daleko menší než součet částí.") [AMORT]
Martin 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.

Modely počítačů ("Nač Pentium? Máme Turingovy stroje!") [MODEL]
Martin Mareš

Podívejme se, na jakých počítačích programují čistokrevní teoretici. Všechny počítače jsou si rovny, jen některé jsou si rovnější. Turingův stroj obyčejný, vícepáskový, nedeterministický a univerzální. Random Access Machine (RAM) a Pointer Machine. Trocha minimalismu aneb stroj s počítadly. Až nám začne být smutno, pořídíme si klidně N2 procesorů a spřáhneme je do paralelního počítače (PRAM). Rychlé paralelní slévání a třídění. Pokud zbude čas, ukážeme si buněčné a grafové automaty, nebo třeba dlaždičky v koupelně.

Dlaždičková složitost ("Co je negace koupelny?") [TILES]
Martin Mareš

Nadefinujeme trochu netradiční počítač založený na dlaždičkách v koupelně. Prostudujeme, jak se různé druhy dlaždičkových počítačů chovají, a zjistíme, že to docela dobře odpovídá klasické teorii složitostních tříd. Jaké problémy má matematik, jehož koupelna je nekonečně velká?

Vyčíslitelnost a Gödelovy věty [VYCIS2]
Filip Štědronský

První Gödelova věta o neúplnosti je jedním z nejznámějších a nejpodivnějších tvrzení v historii matematiky. Říká, že v každé rozumné matematické teorii existují tvrzení, která jsou pravdivá, ale nelze je dokázat. Ukážeme si, že Gödelovy věty poměrně úzce souvisí s informatikou a ve světle informatiky si místo „Jak takováhle divná věc může platit?“, budete říkat „No to je naprosto jasné, že to musí platit, a nikdy by to nemohlo být jinak.“ Podíváme se i na další zajímavé partie teorie vyčíslitelnosti, třeba věty o rekurzi a Riceovu větu.

Předpoklady: Základní povědomí o vyčíslitelnosti, přinejmenším co je Turingův stroj a halting problém.

Programátorské nástroje

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

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]
Pali Rohár, Martin 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. Udržujeme patche k cizímu programu aneb StGit.

Předpoklady: GIT
Gdb a jiné ladící nástroje ("Jak se ladí kytara, jak křišťálová koule a jak program (řazeno dle obtížnosti)") [GDB]
Pali Rohár, Filip Štědronský

Kdo píše programy, které vždy hned fungují, ať se přihlásí. A kdo ne, ať se přihlásí na tuto přednášku. Ukážeme si několik nástrojů, jak si pomoci z nejhoršího. Mezi nimi třeba gdb, řádkový debuger (odvšivovač), strace, nebo valgrind. Kdy je použít a kdy se více hodí printf. Proč assert je tak užitečná věc.

Jak se nestat vepřem ("/* You are not expected to understand this */") [STYLE]
Pali Rohár, Standa Lukeš, Martin 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.

Testování a kvalita softwaru [QA]
Pali Rohár & 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
Workshop o Code Review [CREAD]
Standa Lukeš & Pali Rohár

Čtení cizího kódu se na přednášce spíš nenaučíte, tak se na to zkusme podívat více prakticky. Projdeme si nějaké kousky kódu a zkusíme se v nich vyznat, zjistit co dělají a co by třeba dalo opravit/zlepšit.

Předpoklady: Pošlete nám prosím nějaký kousek kódu, ať se můžeme zabývat něčím co vás zajímá :)
Textový editor Vim ("Víš, jaký je nejlepší textový editor? Vim.") [VIM]
Martin Mareš, Filip Štědronský

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, práce s regulárními výrazy, makra, kouzla. Vimovité ovládání jiných programů, třeba webového prohlížeče.

Hardware a operační systémy

Filesystémy ("Aká až tučná môže byť FAT tabuľka?") [FS]
Pali Rohár

Ako sú dáta uložené na disku? Rozdelenie disku na partície pomocou MBR a GPT schémy. Ako funguje FAT (12, 16, 32) a jej rozšírenia VFAT, TFAT. Krok dozadu v podobe exFAT. Linuxové filesystémy EXT2 až EXT4. Multiplatformový UDF nielen na optické disky. Čo použiť na SSD? A ak ostane čas, tak niečo o UBIFS používaný na flash pamätiach bez radiču.

Programování v Linuxu ("Všechno na světě je tak trochu soubor") [PLX]
Pali Rohár, Martin Mareš, Filip Štědronský

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.

Předpoklady: Schopnost přečíst a napsat jednoduchý program v C.
Jak postavit (rychlý) procesor [CPU]
Standa Lukeš

Vysypeme z rukávu, jak se dá vyrobit procesor, a půjdeme ho zrychlit. Proč nejde jednoduše zvýšit frekvenci, a jak to teda udělat. Jak ušetřit čas při přístupu do paměti, na co je ta slavná predikce skoků a jak se dá spouštět víc instrukcí najednou a si přeházet program podle toho jak se to zrovna procesoru hodí.

Paralelní programování ("Koupil jsem dalších 15 procesorů, proč je to stále stejně pomalé?") [THREAD]
Standa Lukeš

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? Jak se procesory poperou o jednu RAMku. Komunikace pomocí sdílední dat a sdílení dat pomocí komunikace. Atomické operace, zámky, semafory, komunikační kanály. Jak fungují vlákna v různých jazycích. Kdy je lepší vlákna použít, a kdy ne.

Předpoklady: Trochu představy o hardwaru

Sítě a bezpečnost

E-mail ("Drahoušek zákazník.") [EMAIL]
Pali Rohár

Co se stane s e-mailem, když jej odešlete? Kudy chodí a kudy jej čerti nesou? Jaké máte záruky, že přijde; proč občas přijde pozdě nebo vůbec. Problém formátů a kódování, chyby webových i jiných klientů. Protokoly SMTP, POP, IMAP a co se stane, když do nich přimícháme SSL/TLS. E-mailová bezpečnost, SPAM a (nefunkční?) obrana pomocí SPF, DKIM a DMARC. Nakonec se podíváme na ne zrovna triviální grafový problém, který je v emailech skrytý.

Telefonovanie cez internet ("Postavme si vlastnú telefónnu ústredňu") [VOIP]
Pali Rohár

Pod skratkou VOIP sa označuje prenos hlasu cez internet. Na tejto prednáške sa budeme venovať protokolu SIP a pridruženým protokolom SDP a RTP, ktoré sú azda najviac rozšírené. Takmer všetky dnešné pevné a internetové linky, ktoré poskytujú telefónni operátori zákazníkom, sú práve na protokole SIP. Ako prebieha priame volanie na IP adresu telefónnu, ako sa volá cez prostredníka (proxy server) a ako do PSTN siete. Ako sa riešia problémy s NAT a prečo je SIP ALG taký zlý. Akým spôsobom sa dá prenášať FAX, textová správa, video hovor alebo konferenčný audio/video hovor. DNS záznamy pre verejné telefónne čísla (ENUM) a prečo sa to neujalo.

Předpoklady: NET
IPv6 ("Viac adries znamená aj viac problémov") [IPV6]
Pali Rohár

Internetoví provideri nám pomaly začínajú ponúkať pripojenie do sveta IPv6 Internetu. Čo to IPv6 je? Čím sa líši od svojho staršieho kolegu IPv4? Prečo by sa o neho mal zaujímať aj obyčajný užívateľ? Pozrieme sa aké problémy IPv6 rieši, aké má výhody oproti IPv4 ako aj na súčasný stav podpory IPv6 v operačných systémoch. A hlavne s akými problémami sa človek bežne stretne než si bude môcť doma spraviť IPv6 sieť.

Předpoklady: NET
Testování opensource routerů [RTRTST]
Katka „Lasivia“ Lorenzová

Mít router s automatickými aktualizacemi zní skvěle. Co se stane, když budeme chtít release před vydáním otestovat?

Bezpečné programovanie ("V každom programe je aspoň jedna bezpečnostná chyba, tak poďme to napraviť") [SECPRG]
Pali Rohár

Dosť často sa programy nepíšu iba na jedno spustenie, ale sa používajú dlhé roky. Veľa z nich naviac bude používať úplne niekto iný. Na tejto prednáške sa pozrieme na časté chyby v programoch a ako im predchádzať. Ako klasifikovať či chyba je závažná a bezpečnostná. Ďalej si povieme, čo robiť v prípade, ak nájdeme nejakú (možno bezpečnostnú?) chybu. Komu ju oznámiť a komu radšej nie.

Web uvnitř ("Error 402: Payment Required. Please insert a coin.") [HTTP]
Standa Lukeš

Většina webu je dnes založena na protokolu HTTP, pojďme se podívat, jak funguje uvnitř. Na první pohled vypadá jako triviální textový protokol na stahování souborů, ale ve skutečnosti umí docela hodně. Metody GET, POST, ale třeba i PUT. Dohadování o typu dat, jazyce, kompresi. Cacheování a revalidace. Křupavé sušenky. Jak vlastně fungují URL adresy. Ukážeme si nějaké webové útoky a jak jsou od sebe izolované různé weby. Nakonec do toho všeho přimícháme SSL/TLS a máme HTTPS. Malá ochutnávka nových verzí HTTP.

Hippo::Web ("Znovu vynalézáme kolo, ať konečně není hranaté.") [HIPPO]
Martin Mareš

Organizátoři KSPčka rádi dělají pokusy na sobě samých, a tak při vývoji nového webu semináře pohrdli všemi vyzkoušenými webovými frameworky a napsali si potvůrku jménem Hippo. Trochu netradiční, ale v mnoha ohledech velice příjemnou. Namátkově: HTML coby datová struktura, triky s kryptografickými tokeny, kombinování programovacích jazyků a tvorba dynamickych stránek, které jsou přitom skvěle kešovatelné. Případně také nahlédnutí do dalšího zákulisí KSPčka.

Webový framework Django ("The web framework for perfectionists with deadlines.") [DJANGO]
Filip Štědronský & Tomáš „Jethro“ Pokorný

Django je framework (sada knihoven a nástrojů) výrazně zjednodušující psaní webových aplikací v Pythonu. Řeší za vás „otravné“ nízkoúrovňové detaily, jako práce s databází či vytváření a zpracování HTML formulářů, taky vám třeba (polo)automaticky vytvoří administrační rozhraní. Vy se tak můžete soustředit na to, co vaše aplikace dělá užitečného a psát co nejméně zbytečného kódu. Ukážeme si přehled funkcionality Djanga, jak napsat jednoduchou aplikaci a jak ji nasadit na webový server.

Praktický úvod do Jekyllu [JEKYLL]
Tomáš Sláma

Chtěl sis někdy vytvořit vlastní webovou stránku, ale ručně psát HTML a CSS tě otravuje? Zajímalo by tě, jak z Markdownu generovat pěkně vypadající, databázemi a jinou havětí nezatížené webové stránky? Nerozumíš názvům zbylých přednášek v tomhle slotu? Pokud jsou tvé odpovědi na některé z těchto otázek ano, pak je tato přednáška právě pro tebe! Ukážeme si, jak si pomocí Jekyllu vytvořit, spravovat a v neposlední řadě také publikovat webovou stránku.

Stručné dějiny kryptografie [CRYPTHIST]
Markéta Calábková

Prolétneme klasickou historií šifrování a utajení informace od starověku až do relativně nedávné minulosti. Toto bude spíše přehledová přednáška z rychlíku, žádnou hlubokou teorii nečekejte.

Aplikace kryptografie ("6140 a184 c9a6 41f1 de99 e733 354a f451") [CRYPT2]
Martin Mareš, Filip Štědronský

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

Pod pokličkou – hardware, operační systémy, formáty

Formát PDF [PDF]
Martin 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.

Mikrokontroléry ("Nejlepší debugger je LEDka.") [MCU]
Martin Mareš, Filip Štědronský

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.
Knihovny pro STM32: libopencm3 a HAL [STM32LIB]
Tomáš „Jethro“ Pokorný

V čem programovat STM32, pokud vás neláká Arduino ekosystém, ale nechcete si to celé psát sami. Budeme se držet jazyka C, ukážeme si oficiální HAL knihovnu včetně toho, jak si většinu periferií naklikat a komunitní knihovnu libopencm3, která je stručnější a podporuje více mikrokontrolérových rodin.

Od zdrojáku k programu ("Před spuštěním program přeložte. Stačí třikrát podélně?") [KOMP]
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.

Matematické a fyzikální přednášky

Základy teorie čísel [NUT]
Ríša Hladík

Rychlokurz teorie čísel pro začátečníky. Číselné obory. Dělitelnost a prvočísla. Modulární aritmetika (aneb počítání jako na hodinách, kde 10 + 9 + 8 = 3). Kongruenční rovnice. Malá Fermatova věta.

Teorie čísel a RSA ("267 - 1 = 193 707 721 · 761 838 257 287") [NUT2]
Martin 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.

Prvočíselné věty [NUT3]
Martin Mareš

Věty o rozložení prvočísel jsou tradičně považovány za jednu z nejmysterióznějších oblastí teorie čísel. Zde ukážeme, jak některé z nich odvodit snadným pozorováním vlastností kombinačních čísel: rozbor časové složitosti Eratosthenova síta, Bertrandův postulát („Mezi n a 2n je aspoň jedno prvočíslo.“), hustota prvočísel.

Základy algebry [ALGEBRA]
Ríša Hladík

Jak matematici dokáží vzít „obecné“ a ještě více jej zobecnit. Lehký úvod do grup. Ukážeme si, jak zkoumat matematické operace, aniž bychom řešili, jestli se bavíme o sčítání, násobení, nebo skládání zobrazení.

Grafy bez algoritmů [GRAFY]
Ríša Hladík

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.

Hausdorffův zvěřinec ("Jaký objem má π-rozměrná koule?") [HAUS]
Martin Mareš

Možná vás už také zarazilo, že některé fraktály nejsou ani dvourozměrné, ani třírozměrné, ale něco mezi tím. Pojďme se podívat, co to znamená. Cestou potkáme různé zajímavé partie matematiky (jako třeba metrické prostory a teorii míry) a různá podivuhodná zvířátka: Cantorovo diskontinuum, von Kochovu vločku a Hilbertovu křivku.

Catalanova a Fibonacciho čísla ("1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, ?") [CAT]
Martin 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.

Meta-matematika ("Tato věta sem nepatří.") [METAM]
Martin 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. Přírodní vědy si vymyslely opakovatelné pokusy a matematici axiomatický přístup. Ukážeme, jak z jednoduché sady axiomů vybudovat takřka celou matematiku. Dokonce tak, že správnost důkazů za nás ověří počítač, aspoň když mu trochu pomůžeme. Nadšení trochu ochladí Gödelova věta: ať děláme, co děláme, vždy zbude nějaké nerozhodnutelné tvrzení. Pomůže přidávat axiomy? Asi ne, ale za odměnu získáme mnoho různých matematik. A dá-li bůh, stihneme dokázat jeho existenci i neexistenci :–).

Barevné systémy ("Co je na konci duhy?") [COLOR]
Martin Mareš

O podstatě světla a barevného vidění a různých pokusech o reprezentaci barev v počítačích, fotoaparátech, televizích a podobných zařízeních. Systémy RGB, CMY(K), HSV, XYZ, Lab s jejich výhodami i neduhy. „Systém“ Pantone. Reálné kontra imaginární barvy aneb proč nejde vyfotit duha.

Kvantové počitání ("return 0.5*dead + 0.5*alive; ") [QC]
Martin 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. 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.
Kombinatorika ("Nemám rád faktoriály. Faktoriály nemám rád. Rád nemám faktoriály...") [KOMB]
Martin 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.

Hrajeme si s kostkami [CUBES]
Markéta Calábková

Když se řekne „krychle“, spousta lidí si představí těleso. Tady se budeme bavit o grafech, a grafové krychličky mají spoustu hezkých vlastností, které se uplatňují v mnoha oblastech matematiky. Můžou se hodit základy lineární algebry, ale žádné složitosti nečekejte.

Ostatní

TeX ("No pages of output. Ask a TeXnician.") [TEX]
Ríša Hladík, 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.

TeXnické detaily ("TeX capacity exceeded. Ask a wizard to enlarge me.") [TEX2]
Martin Mareš

Pokročilejší přednáška o TeXu pro ty, kdo ho už nějaký čas používají. Budeme v TeXu programovat, kreslit obrázky, otáčet text, používat různé podivné fonty a třeba si i vysázíme odstavec ve tvaru kolečka.

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

Nematfyzácké přednášky

Hlasitá přednáška [METAL]
Jan Černý & Tomáš Vítek

Oddychová interaktivní přednáška o historii a vzniku metalu a jeho subžánrů. Slavné i neslavné příběhy různých interpretů. V případě zájmu můžeme dát několik důležitých rad jak přežít metalový festival. Dozvíte například se co je to blastbeat nebo breakdown. Budeme si dělat srandu z metalových stereotypů. Bude i živá ukázka obskurdních hudebních nástrojů a možnost si je vyzkoušet. Ale hlavní otázka zůstává stejná... BUT DOES IT DJENT ?!

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.

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

Fonetika ("Pojďte, zachrochtáme si spolu!") [FON]
Martin 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.

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.

Čá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, ...

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

Železnice a kolejová doprava ("Vlak bude opožděn z důvodu ztráty lopatky na uhlí.") [RAIL]
Martin Mareš & Vašek Končický

Cestování po železnici už dlouho patří do života mnoha z nás. Kolik o ní ale víme? Trocha historie, zajímavosti z předpisů, pár pohledů za hranice. Jak se staví trať, jak vlak a jak to všechno, když už to je hotové, skloubit do fungujícího systému. Čím se zajišťuje bezpečnost (a jak může z pohledu systému vlak prostě odletět) a k čemu jsou všechna ta návěstidla u tratí.

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.
Racionalita ("Racionalita neslouží k vyhrávání debat, ale k tomu, abyste 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.

Teorie her v reálném světě ("Někdy hloupé chování každého je rozumnou reakcí na hloupé chování někoho jiného") [GAMTH]
Filip Štědronský

Ukážeme si, jak jednoduché principy z matematické disciplíny teorie her vysvětlují mnoho na první pohled zvláštních jevů v lidské společnosti i přírodě – poškozování životního prostředí, monopol vědeckých časopisů, jaderné zbrojení, úspěch Facebooku, předražené zboží a další. Povíme si o známém vězňovo dilematu a problému obecní pastviny. Seznámíme se s pojmem Nashova ekvilibria – aneb proč někdy všichni hráči dělají rozhodnutí, které vede na pro ně nepříznivý výsledek, ale nikdo není motivován své rozhodnutí změnit. Ukážeme si, že se občas paradoxně vyplatí omezit si vlastní možnost volby. Další aplikace: aukce, vyjednávání, volební systémy, ...

Jak jsem stavěl pasivní radar [RADAR]
Jenda Hrach

V první části projdeme způsoby aktivního i pasivního zaměřování všech možných věcí, zejména letadel a počasí. Ve druhé části ukážu, jak jsem z obyčejných USB klíčenek pro příjem televize postavil pasivní radar pro zaměřování vysílačů pracující na stejném principu jako Tamara. Funkcionalitou a citlivostí se sice nemůže skutečné Tamaře rovnat, ale opravdu funguje a dokáže zaměřit reálné rozhlasové a televizní vysílače.

Základy molekulární biologie a genetiky [MOLBIO]
Jenda Hrach

Crashcourse do fungování organismů, zejména od DNA přes RNA k proteinu a všechno co s tím souvisí. Co je to DNA? Co znamená „GMO“ na obalu od kukuřičných lupínků? Jak buňka ví, co má dělat? Jak se čte genetický kód?

Bastlení (polo)profesionálně [BASTL]
Tomáš „Jethro“ Pokorný

Kreslíte plošňáky fixou, krabičky vyřezáváte z překližky ručně a konektory krimpujete kombinačkami? V dnešní době je spousta věcí jednodušších, jen o nich vědět. Přednáška o tom, co si kde dnes můžete relativně levně nechat udělat, co si udělat sami a jaké na to použít nástroje a nářadí.

Tance – cherry pick matematika [DANCES]
Katka „Lasivia“ Lorenzová

Výběr tanců, které pohledem matematika „fungují jinak“, než momentálně masověji tancované tance v ČR. Speciální nabídka s dobrým poměrem zábavnosti ku náročnosti (testováno na lidech po dobu minimálně několika generací). Volné pokračování minulého roku.

Komunikace v párových tancích [DANCOMM]
Katka „Lasivia“ Lorenzová

Popis fyzické vrstvy (solid i wireless), nejpoužívanější protokoly a problematika opravy chyb. Jako vždy bude prostor si probírané technologie vyzkoušet.

Program vytvářený účastníky

Lightning talks [LTALK]

Prostor pro minipřednášky (cca 3-10 min každá) z řad účastníků na libovolná témata. Pro tento blok hlasujte pouze, pokud byste si nějaký lightning talk chtěli připravit.

Sdílení life hacků [LIFEHACK]

Neorganizovaný prostor pro sdílení nástrojů, postupů a triků, které používáte pro šetření času a zlepšení produktivity či jiných aspektů života. Od skriptů a automatizace přes zefektivnění každodenních činností po zlepšení soustředěnosti.

Sdílení doporučení na knihy [BOOKREC]

Prostor pro sdílení doporučení na knihy, které vám přijdou zajímavé – jak odborné ze všech možných oborů, tak beletrie. Představení bude probíhat formou lightning talks: každý dostane cca 3 min na představení jedné knihy. V případě dostatku času možno představit i více knih.

Rozbalit všechny přednášky