## Přehled

Tento předmět sestává z cvičení (včetně domácích příprav na ně) a
závěrečného praktického testu (kolokvia). Protože se jedná
o „programovací“ předmět, většina práce v předmětu – a tedy i jeho
hodnocení – se bude zaměřovat na praktické programování. Je
důležité, abyste programovali co možná nejvíce, ideálně každý den,
ale minimálně několikrát každý týden. K tomu Vám budou sloužit
příklady v této sbírce (typicky se bude jednat o velmi malé programy
v rozsahu desítek řádků, kterých byste měli být v průměru schopni
vyřešit několik za hodinu). V průběhu semestru bude stoupat
náročnost – je tedy důležité, abyste drželi krok a práci neodkládali
na poslední chvíli.

Protože programování je těžké, bude i tento kurz těžký – je zcela
nezbytné vložit do něj odpovídající úsilí. Doufáme, že kurz úspěšně
absolvujete, a co je důležitější, že se v něm toho naučíte co
nejvíce. Je ale nutno podotknout, že i přes svou náročnost je tento
kurz jen malým krokem na dlouhé cestě.

### Probíraná témata

Předmět je rozdělen do 4 bloků (čtvrtý blok patří do zkouškového
období). Do každého bloku v semestru patří 4 kapitoly (témata) a
jim odpovídající 4 cvičení.

│ bl. │     │ téma                                  │
├─────│────▻┼◅──────────────────────────────────────│
│  1  │  1. │ základy práce se soubory              │
│     │  2. │ datagramy                             │
│     │  3. │ čekání na událost                     │
│     │  4. │ mapování souborů do paměti            │
│┄┄┄┄┄│┄┄┄┄┄│┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄│
│  2  │  5. │ řetězce a cesty                       │
│     │  6. │ adresáře                              │
│     │  7. │ adresy a síť                          │
│     │  8. │ spustitelné soubory                   │
│┄┄┄┄┄│┄┄┄┄┄│┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄│
│  3  │  9. │ souběžná komunikace                   │
│     │ 10. │ procesy                               │
│     │ 11. │ vlákna                                │
│     │ 12. │ synchronizace                         │

### Organizace sbírky

V následujících sekcích naleznete detailnější informace a «závazná»
pravidla kurzu: doporučujeme Vám, abyste se s nimi důkladně
seznámili.¹ Zbytek sbírky je pak rozdělen na části, které odpovídají
jednotlivým týdnům semestru. «Důležité:» během prvního týdne
semestru už budete řešit přípravy z první kapitoly, přestože první
cvičení je ve až v týdnu druhém. Nulté cvičení je volitelné a není
nijak hodnoceno.

Kapitoly jsou číslovány podle témat z předchozí tabulky: ve druhém
týdnu semestru se tedy «ve cvičení» budeme zabývat tématy, ke kterým
jste v prvním týdnu vypracovali a odevzdali přípravy.

¹ Pravidla jsou velmi podobná těm v kurzu IB111, ale přesto si je
  pozorně přečtěte. V tomto semestru je hlavním rozdílem absence sad
  příkladů.

### Plán semestru

Tento kurz vyžaduje značnou aktivitu během semestru. V této sekci
naleznete přehled důležitých událostí formou kalendáře. Jednotlivé
události jsou značeny takto (bližší informace ke každé naleznete
v následujících odstavcích tohoto úvodu):

 • „#X“    – číslo týdne v semestru,
 • „cv0“   – tento týden běží „nulté“ cvičení (kapitola B),
 • „cv1“   – tento týden probíhají cvičení ke kapitole 1,
 • „X/v“   – mezivýsledek verity testů příprav ke kapitole X,
 • „X/p“   – poslední termín odevzdání příprav ke kapitole X,
 • „test“  – termín programovacího testu.

Nejdůležitější události jsou zvýrazněny: termíny odevzdání příprav a
poslední termín odevzdání úloh ze sad (obojí vždy o 23:59 uvedeného
dne).

│                             září                             │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │   Po  │   Út  │   St  │   Čt  │   Pá  │   So  │   Ne  │
├─────▻│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│
│   #1 │ 23    │ 24    │ 25    │ 26    │ 27    │ 28 sv │ 29    │
│ cv 0 │       │       │       │ 01/v  │       │«01/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #2 │ 30    │       │       │       │       │       │       │
│ cv 1 │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│


│                            říjen                             │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │   Po  │   Út  │   St  │   Čt  │   Pá  │   So  │   Ne  │
├─────▻│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│
│   #2 │       │ 1     │ 2     │ 3     │ 4     │ 5     │ 6     │
│      │       │       │       │ 02/v  │       │«02/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #3 │ 7     │ 8     │ 9     │ 10    │ 11    │ 12    │ 13    │
│ cv 2 │       │       │       │ 03/v  │       │«03/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #4 │ 14    │ 15    │ 16    │ 17    │ 18    │ 19    │ 20    │
│ cv 3 │       │       │       │ 04/v  │       │«04/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #5 │ 21    │ 22    │ 23    │ 24    │ 25    │ 26    │ 27    │
│ cv 4 │       │       │       │ 05/v  │       │«05/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #6 │ 28 sv │ 29    │ 30    │ 31    │       │       │       │
│ cv 5 │       │       │       │ 06/v  │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│


│                           listopad                           │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │   Po  │   Út  │   St  │   Čt  │   Pá  │   So  │   Ne  │
├─────▻│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│
│   #6 │       │       │       │       │ 1     │ 2     │ 3     │
│      │       │       │       │       │       │«06/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #7 │ 4     │ 5     │ 6     │ 7     │ 8     │ 9     │ 10    │
│ cv 6 │       │       │       │ 07/v  │       │«07/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #8 │ 11    │ 12    │ 13    │ 14    │ 15    │ 16    │ 17 sv │
│ cv 7 │       │       │       │ 08/v  │       │«08/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│   #9 │ 18    │ 19    │ 20    │ 21    │ 22    │ 23    │ 24    │
│ cv 8 │       │       │       │ 09/v  │       │«09/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│  #10 │ 25    │ 26    │ 27    │ 28    │ 29    │ 30    │       │
│ cv 9 │       │       │       │ 10/v  │       │«10/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│


│                           prosinec                           │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │   Po  │   Út  │   St  │   Čt  │   Pá  │   So  │   Ne  │
├─────▻│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│
│  #10 │       │       │       │       │       │       │ 1     │
│      │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│  #11 │ 2     │ 3     │ 4     │ 5     │ 6     │ 7     │ 8     │
│ cv10 │       │       │       │ 11/v  │       │«11/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│  #12 │ 9     │ 10    │ 11    │ 12    │ 13    │ 14    │ 15    │
│ cv11 │       │       │       │ 12/v  │       │«12/p» │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│  #13 │ 16    │ 17    │ 18    │ 19    │ 20    │ 21    │ 22    │
│ cv12 │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │ 23    │ 24    │ 25    │ 26    │ 27    │ 28    │ 29    │
│      │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │ 30    │ 31    │       │       │       │       │       │
│      │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│


│                            leden                             │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │   Po  │   Út  │   St  │   Čt  │   Pá  │   So  │   Ne  │
├─────▻│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│◅──────│
│      │       │       │ 1     │ 2     │ 3     │ 4     │ 5     │
│      │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │ 6     │ 7     │ 8     │ 9     │ 10    │ 11    │ 12    │
│      │       │ test  │       │ test  │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │ 13    │ 14    │ 15    │ 16    │ 17    │ 18    │ 19    │
│      │       │ test  │       │ test  │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │ 20    │ 21    │ 22    │ 23    │ 24    │ 25    │ 26    │
│      │       │ test  │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
│      │ 27    │ 28    │ 29    │ 30    │ 31    │       │       │
│      │       │       │       │       │       │       │       │
│┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│┄┄┄┄┄┄┄│
