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

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.

Aplikace informatiky

Neuronové sítě pro rozpoznávání obrázků [NNIMG]
Jenda Hrach

Co je to neuronová síť, jak se učí a jak vypadají současné sítě řešící rozpoznávání obrazu? A co si počít, pokud nemáme data, znalosti a výpočetní výkon na natrénování takové sítě od nuly?

Uživatelská rozhraní ("Nákup potvrďte stiskem tlačítka s černou lebkou.") [UX]
Karry Hořeňovská

Co mají společného automat na jízdenky, velké červené tlačítko v jaderné elektrárně a KSPácké webové stránky? Jsou to rozhraní, jejichž pomocí lidé něco ovládají a plní nějaké úkoly. Jak taková rozhraní navrhovat a jak je následně testovat? Proč raději nenavrhovat to, o co si lidi řeknou, a proč nevadí, že Vim by v běžném testování určitě neuspěl? A je opravdu nejdůležitější poučka „Zapomeňte na poučky“? Projdeme celý proces návrhu uživatelského rozhraní, pojmenujeme zdánlivě samozřejmé, a přece často opomíjené zásady a upozorníme na časté prohřešky.

Zpracování přirozeného jazyka ("Jsou bramborové knedlíky plněné bramborami?") [NLP]
Karry Hořeňovská

Přednáška spíše motivační a hravá, o tom, co se stane, když se střetne svět matematiky se světem divných, neexaktních a nejednoznačných lidských jazyků. Podíváme se na vlastnosti přirozených jazyků a zaměříme se na to, jak moc komplikují jejich počítačové zpracování. Pojmenujeme odlišnosti mezi kontrolou pravopisu, automatickým překladem a konverzací s uživatelem, a zbude-li čas, naznačíme, co se umí a osvědčuje používat.

Zjednodušování textu ("Každá věta má jen pět slov. Už je to jednoduché?") [SIMPL]
Karry Hořeňovská

Zjednodušování textu je zajímavá úloha, kdy na vstupu máme nějaký text v přirozeném jazyce, na výstupu máme text v tom samém jazyce, ale přesto jiný, jednodušší, snáz pochopitelný. Jak se něco takového dělá? A hlavně, jak poznat, že je text opravdu jednodušší? Ukážeme si trochu od všeho – lexikální, syntaktické i pragmatické zjednodušování, nadějné strategie i časté problémy, způsoby vyhodnocení i odlišnosti v požadavcích cílových skupin.

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

Algoritmy pro synchronizaci dat [SYNCALG]
Filip Štědronský

Často se stane, že na dvou počítačích máme kopie týchž dat, které se drobně liší (třeba jsme v jedné udělali nějaké změny). Ukážeme, že takovéto rozdíly jde efektivně přenést na druhou stranu, a to i když nevíme, které části dat se změnily. Podíváme se třeba na slavný rsync, ale i zajímavější a méně známé protokoly a algoritmy.

TeX ("No pages of output. Ask a TeXnician.") [TEX]
Martin Mareš

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

Kryptografie ("Gbgb arav zbp gnwan mcenin.") [CRYPT]
Filip Štědronský, Martin Mareš

Kryptografie čili tajuplná nauka o šifrách, jejich konstrukci a hlavně o jejich luštění. Přísně tajné. Šifrovací systémy jako lego: základními kostičkami nám budou symetrické a asymetrické šifry a jednosměrné funkce, 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]
Filip Štědronský, Martin 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]
Filip Štědronský, 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.

Algoritmy a teoretická informatika

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

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

Nejkratší a jiné cesty ("Všechny cesty vedou do Horní Dolní, jen některé přes Řím.") [CESTY]
Filip Štědronský

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: transitivní uzávěr, Seidelův algoritmus, Kleeneho algoritmus a regulární výrazy.

Dynamické programování ("Kampak jsem si to jenom schoval?") [DYNP]
Filip Štědronský

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?") [REGEX]
Filip Štědronský

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 ("Jak obrátit řetězec naruby?") [SUFF]
Filip Štědronský, Martin 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.

Intervalové stromy ("Já bych ty intervaly nejradši... dal do stromu!") [ITREE]
Filip Štědronský

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

Stromové algoritmy ("Půjdeme na to od lesa") [TREES]
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.

Splay stromy ("Lepší než uklízení je organizovaný chaos.") [SPLAY]
Martin 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í.

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.

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.

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á?

Programovací jazyky a filosofie

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

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

Černá magie v C++ ("Je dobré znát, co umí atomová bomba (a její datový typ), abychom ji nechtěli použít.") [CPP]
Filip Štědronský

Pokročilejší prvky C++ (šablony, přetěžování funkcí a operátorů, preprocesorové hacky, ...) a možnosti jejich (po|zne)užití. Jak s nimi vytvořit věci magické (smart pointers, lambda funkce), ale i na první pohled docela obyčejné, které si bohužel jinak pořídit nejde. Nahlédneme do vnitřností slavné knihovny Boost. Proč je třeba preprocesorem vygenerovat 512 šablonovaných typů jen, abychom mohli rozumně předávat pointery na metody? Jaká akrobacie je nutná pro obyčejnou statickou inicializaci seznamu? A mnohá další překvapení. Přednáška vás naučí psát v C++ složité věci a přesvědčí, že v něm nechcete psát ani jednoduché.

Předpoklady: základní znalost C++, staticky alokovaný kyblík
F# [FSHARP]
Stanislav Lukeš

Něco mezi Haskellem a Perlem - striktní typový systém, primárně funkcionální, hromada syntaktických featur a dobrý na prasení build skriptů i složitější systémy. Ukážeme si zajímavé vlastnosti, nějaké funkcionální vychytávky nebo jak F# zkompilovat do Javascriptu (a že to není tak marný nápad).

Python ("print "Ffff".decode("rot13")") [PYTH]
Filip Štědronský

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

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

Skriptování v shellu ("man 1 woman ... man 2 woman ... man group") [SHELL]
Filip Štědronský

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

Shell pro shíllence [SS]
Filip Štědronský

Co vše se dá napsat za pomoci unixového shellu a spřízněných utilit. Webové aplikace, šablonovací systém, síťová komunikace, OOP, ... Proč to obvykle není dobrý nápad, ale občas taky ano.

Softwarová architektura a funkcionální programování [FP]
Stanislav Lukeš

O tom, s jakými problémy se potkáme, když si pořídíme nějaký větší program, než jen řešení KSPčkové úložky. Co se s tím dá dělat, jak takové věci strukturovat, jak o nich vůbec přemýšlet. No a pak si ukážeme k čemu jsou dobré principy funkcionálního programování, že to není nějaký nástroj pro matematiky, a jak to souvisí s návrhem software.

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.

Programátorské nástroje

Textový editor Vim ("Víš, jaký je nejlepší textový editor? Vim.") [VIM]
Filip Štědronský, Karry Hořeňovská, Martin 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, práce s regulárními výrazy, makra, kouzla. Vimovité ovládání jiných programů, třeba webového prohlížeče.

Git a jiné systémy pro správu verzí ("U svatýho tučňáka, kdo sem napsal tohle? Ono to tvrdí, že JÁ?!") [GIT]
Filip Štědronský, Karry Hořeňovská, 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]
Martin Mareš, Pali Rohár

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.

Gdb a jiné ladící nástroje ("Jak se ladí kytara, jak křišťálová koule a jak program (řazeno dle obtížnosti)") [GDB]
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.

Performance Investigation [PERF]
Stanislav Lukeš

Napsali jste si appku, ale ona je potvora nějak pomalá? Pokusíme se zjistit proč - jaké části žerou nejvíc procesoru, co se změnilo s určitou změnou, jestli se zbytečně nečeká a jak by se to dalo napravit.

Pod pokličkou – hardware, operační systémy, soubory

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

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.

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

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

Předpoklady: Trochu představy o hardwaru
Cache-oblivious algoritmy ("Kešuješ, kešuje, kešujeme") [CACHE]
Martin Mareš

Dnešní procesory mají několik úrovní vyrovnávacích pamětí (cache), což způsobuje, že ačkoliv si jsou všechny části paměti rovny, některé si jsou rovnější. Jak taková cache funguje? Jak se procesor rozhodne, co si v ní zapamatuje a co vyhodí? Jak toho můžeme využívat při programování, aby naše programy běžely rychleji? Předvedeme kousek teorie i několik praktických ukázek s poněkud překvapivým chováním.

Předpoklady: Cachu oříšky
Filesystémy ("Opravdu je FAT tabulka tlustá?") [FS]
Filip Štědronský, Martin Mareš

Povídání o tom, co leží mezi nulami a jedničkami na plotnách disku a přátelskou adresářovou strukturou našeho OS. Jak funguje FAT a jeho varianty (VFAT, FAT32). Tradiční Linuxové filesystémy od EXT2 k EXT4. Nadějný nový BtrFS, který je možná za pár let nahradí. Co se hodí na SSD.

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.

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ý, Martin Mareš

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

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

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

Programování v Linuxu ("Všechno na světě je tak trochu soubor") [PLX]
Filip Štědronský, Martin 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.

Předpoklady: Schopnost přečíst a napsat jednoduchý program v C.
Android z druhé strany [ANDROID]
Vašek Šraier

Nejpoužívanější operační systém na světe nejen jako pouhý uživatel. Jak vlastně Android funguje? Proč nemám nejnovější systém? Jak se pro něj píší aplikace? Pojďme se na to společně podívat! Po troše teorie si zkusíme napsat jednoduchou aplikaci, která nakonec nebude tak úplně jednoduchá. Přednáška bude spíše praktická. Plnohodnotná účast předpokládá stroj, na kterém běží Android Studio.

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.

Sítě, Internet, web

Sítě a Internet ("Sítě nejen na ryby.") [NET]
Filip Štědronský

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 packety a jejich forwarding až k jednotlivým síťovým službám. Adresace, internetworking a dynamický routing. Jak NAT zachránil i zničil Internet a proč se těšíme na IPv6.

Sítě II – protokoly a síťové útoky ("Jak si přečíst maily... sousedovy maily.") [NET2]
Filip Štědronský

Volné navázání na NET. Budeme si povídat o tom, co za data nám po síti běhá a jaké se k tomu používají protokoly – DNS, FTP, HTTP nebo třeba i mailové SMTP a IMAP. Zaměříme se více na ty nejpoužívanější (metody GET a POST v HTTP), nakousneme cacheování a nadlábneme se cookies. A pokud zbude čas, využijeme zranitelnosti některých protokolů a provedeme síťový útok.

Předpoklady: Základní povědomí o počítačových sítích
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
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ý.

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

Většina webu je dnes založena na protokolu HTTP, pojďme se podívat, jak funguje uvnitř. Metody GET, POST, ale třeba i PUT. Dohadování o typu dat. Cacheování, revalidace a transformace dat. Křupavé sušenky. Jak se vypořádat s dynamicky generovaným obsahem aneb protokol CGI. Mezi klientem a serverem aneb DNS a virtuální servery. Nakonec do toho všeho přimícháme SSL/TLS a máme HTTPS. Malá ochutnávka HTTP/2.0.

Programování webových aplikací (nejen) v Pythonu ("Vlastní blog či wiki za 20 minut?") [WEBAPP]
Filip Štědronský

Obecná strutura webových aplikací a protokolu HTTP, v případě potřeby základy HTML. Jak jednoduše vytvářet webové aplikace v Pythonu pomocí webových (mirko)frameworků (Flask, Django, ...): zpracování požadavků a dat z formulářů, generování HTML, práce s databází. Dynamické stránky: AJAX, Server-Sent Events a další. Co nejde napsat na pár řádek, nás nezajímá.

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 cacheovatelné. Případně také nahlédnutí do dalšího zákulisí KSPčka.

Matematika a statistika

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

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

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 :–).

Jak lhát ve studii ("Je vědecky prokázáno, že návštěvnost koupališť ovlivňuje teplotu vzduchu") [STATLIE]
Karry Hořeňovská

Často se na nás valí postřehy a zprávy o tom, jak bylo něco prokázáno, vědecky, na základě studie, prostě zcela nevyvratitelně. Pojďme si ukázat, že to často není tak jednoduché. Korelace neimplikuje kauzalitu (o směru kauzality nemluvě). Rozdíly mezi retrospektivní a prospektivní studií, rozdíly v jejich limitech. Různě zaslepené studie, důsledky zaslepení. Skryté korelace a kohorty. Hladina významnosti a intervaly spolehlivosti.

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

Nematfyzácké přednášky

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 ("Pokud je tvrzení X pravdivé, chci věřit, že je pravdivé. Pokud ne, chci věřit, že je nepravdivé.") [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?

Naturalismus ("Tuto hypotézu jsem nikde nepotřeboval.") [NATUR]
Filip Štědronský

Naturalismus je teorie, že svět řídí neměnné přírodní zákony, které mají poměrně jednoduchý matematický charakter, jsou celkem lhostejné k lidským osudům, měří stejně dobrým i zlým. Že život není magická vitální esence, nýbrž sada komplexních chemických interakcí. Že myšlení je výpočetní proces jako každý jiný. Naturalismus není axiomem vědy, nýbrž jedním z jejích největších objevů. Proč si dnes myslíme, že je nejspíš pravdivý? Jak vypadala mnohasetletá bolestivá cesta k němu a proč se z ní svým způsobem vzpamatováváme dodnes? Jaký vliv to má na naše vnímání hodnot, života a jeho smyslu?

Klikrtrénink (nejen) pro psy [CLICKER]
Karry Hořeňovská

Zmínky o klikrtréninku člověk potká nejčastěji v souvislosti s chovem a výcvikem psů, přesto jde hlavně o nastavení myšlení, které se dá na psy uplatnit stejně dobře jako na kočky, nebo třeba partnera či kolegy. Základní kameny klikrtréninku. Proč to vůbec může fungovat a proč je to tak náročné pro trenéra. O motivaci i o tom, že klikr není ke klikrtréninku vůbec potřeba. A samozřejmě, jak principy klikrtréninku doopravdy přenést i do mezilidských vztahů.

Návod k použití ekonomiky ("S trochou reklamy ty akcie prodám i za dvojnásobek, ne?") [BUYME]
Stanislav Lukeš

Ekonomika je process výroby, spotřeby a hlavně směny zboží a peněz. Děje se toho ale hromada, tak se v tom zmatku zkusíme trochu zorientovat. Ukážeme si co jsou peníze, trh, akcie, dluhopisy, burzy a hlavně k čemu je to dobré? Jak funguje nabídka a poptávka na spotřebitelském trhu, jak to ovlivňuje marketing nebo jak toto funguje burzách s cennými papíry. Kdo určuje cenu másla a kdo cenu Bitcoinu. Jak se třeba dá investovat, a jak si nenechat sežrat úspory inflací. A asi se dostaneme i k novým technickým možnostem, kam by se mohly trhy vyvinout - od Bitcoinu po Airbnb. A proč by se do toho neměl hrabat stát. Varování: Neberte mě moc vážně, protože tomu vůbec nerozumím... jo to asi nikdo

Svoboda a soukromí v digitálním světě [DRIGHTS]
Filip Štědronský

Kdo, proč a jak se nás o ně snaží připravit? Co o vás ví Google, Facebook, Apple či NSA a jakou nad vámi mají moc? Kdo může z vašeho telefonu vzdáleně číst a mazat data? Čím hrozí „kyberzákony“ a mezinárodní dohody? DMCA, SOPA, ACTA, TT(I)P a další. Bude Hollywood rozhodovat o tom, co (ne)smíte vidět na internetu a Microsoft o tom, jaký software (ne)smíte používat? Proč je často protizákonné upozornit uživatele na bezpečnostní chyby? A kdy vás to vše může stát život?

Lingvištika ("Přísudek je v této větě podmět.") [LING]
Martin Mareš, Karry Hořeňovská

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

Znakové jazyky [SIGN]
Karry Hořeňovská

Znakové jazyky byly dlouhou dobu považovány za méně důležité než ty, které mají mluvenou podobu. V polovině 20. století ovšem Wiliam Stokoe ukázal, že americký znakový jazyk má podobnou strukturu jako mluvený jazyk. Jeho dílo odstartovalo množství výzkumů, díky kterým dnes víme, že znakové jazyky jsou plnohodnotnými lidskými jazyky a že se v mnoha ohledech chovají stejně jako ty mluvené. Které ohledy to vlastně jsou a co se od znakových jazyků můžeme naučit o naší řeči? Přednáška převážně teoretická, ale v případě zájmu můžeme vytáhnout i pár znaků z českého znakového jazyka.

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.

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.

Tvorba map ("... aneb v čem nám mapy lžou") [MAPS]
Tomáš „Jethro“ Pokorný

Průlet procesem tvorby mapy od zobrazení až po přidávání popisků, co je a co není mapa, proč mapa není přesným obrazem reality a jaké metody se k tvorbě používají.

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.

Bastlíme (nejen) s Čínou [BASTL]
Tomáš „Jethro“ Pokorný

Jak z vyřazených displejů z vlaku vyrobit hodiny ukazující čas na soustředění krok za krokem. Jak z několika dostupných součástek z Číny postavit bezdrátově ovládaná světla s webovým rozhraním.

Síťujeme na soustředění [CAMPNET]
Tomáš „Jethro“ Pokorný

Jak postavit v objektu síť, prostřednictvím které se přehrává hudba, distribuuje internet a dělají další věci. Síťování v praxi, vzdálené připojení, problémy a možná řešení.

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

Rozbalit všechny přednášky