====== b6b36zal -- Základy algoritmizace ====== ===== Představení ===== Předmět si klade za cíl seznámit posluchače se základy algoritmizace a začít u nich rozvíjet analytické myšlení. Posluchači budou během semestru vypracovávat zadané úlohy. Více v sekci [[https://cw.fel.cvut.cz/wiki/courses/b6b36zal/cviceni|Cvičení]]. Účast na cvičeních je povinná. Detailní informace k jednotlivým cvičením budou uvěřejňovány ve složce cvičení. Účast na přednáškách je doporučená, ale na cvičení se vyžadují znalosti, které posluchač nabyl na přednáškách. ===== Konzultační hodiny vyučujících ===== | ^ Konzultační hodiny ^ E-mail ^ Místnost ^ Poznámka ^ ^ doc. Ing. Jiří Vokřínek, Ph.D. | po domluvě emailem | | KN:E-333b | Přednášející | ^ RNDr. Ladislav Serédi | po domluvě emailem | \\ Messenger: ladislav.seredi \\ Skype: zarand0k | KN:E-431 | Cvičící | ===== Přednášky ===== Odkaz na [[http://goo.gl/nX15rH|hlasovací aplikaci]] Materiály mohou být průběžně aktualizovány -- //takto jsou označeny materiály z minulého roku beze změn// a **takto revidované pro aktuální ZS 2019/2020**. | **1** | 24.9.2019 | Úvod. Algoritmus, vstup a výstup. {{:courses:b6b36zal:prednasky:zal01.pdf| }}| | **2** | 1.10.2019 | Proměnné a datové typy. Funkce. {{:courses:b6b36zal:prednasky:zal02.pdf| }}| | **3** | 8.10.2019 | Řízení běhu programu. {{:courses:b6b36zal:prednasky:zal03.pdf| }}| | **4** | 15.10.2019 | Problémy, algoritmy, data. {{:courses:b6b36zal:prednasky:zal04.pdf| }} Příklady: {{:courses:b6b36zal:prednasky:gcd.py|GCD}} {{:courses:b6b36zal:prednasky:nim.py|NIM}} {{:courses:b6b36zal:prednasky:tictactoe.py| Tic Tac Toe}}| | **5** | 22.10.2019 | Vyhledávání a řazení 1. {{:courses:b6b36zal:prednasky:zal05.pdf| }} Příklady: {{:courses:b6b36zal:prednasky:insertion_sort.py|I-S}} {{:courses:b6b36zal:prednasky:selection_sort.py|S-S}} {{:courses:b6b36zal:prednasky:bubble_sort.py|B-S}} | | **6** | 29.10.2019 | Abstraktní datové typy (zásobník, fronta, spoj. seznam). {{:courses:b6b36zal:prednasky:zal06.pdf| }} Příklady: {{:courses:b6b36zal:prednasky:stack.py|stack}}, {{:courses:b6b36zal:prednasky:queue.py|queue}}, {{:courses:b6b36zal:prednasky:linkedlist.py|Linked list}}| | **7** | 5.11.2019 | Vyhledávání a řazení 2. {{:courses:b6b36zal:prednasky:zal07.pdf| }} Příklady: {{:courses:b6b36zal:prednasky:merge_sort.py|M-S}}, {{:courses:b6b36zal:prednasky:quick_sort.py|Q-S}}, {{:courses:b6b36zal:prednasky:heap_sort.py|H-S}} | | **8** | 12.11.2019 | Rekurze. {{:courses:b6b36zal:prednasky:zal08.pdf| }} Příklady: {{:courses:b6b36zal:prednasky:factorial.py|factorial}}, {{:courses:b6b36zal:prednasky:list_reverse.py|list reverse}}, {{:courses:b6b36zal:prednasky:hanoi.py|hanoi}}, {{:courses:b6b36zal:prednasky:fibonacci.py|fibonacci}} | | **9** | 19.11.2019 | Vyhledávání a řazení 3. {{:courses:b6b36zal:prednasky:zal09.pdf| }} Příklady: {{:courses:b6b36zal:prednasky:graphpaths.py|Cesty v grafu}}, {{:courses:b6b36zal:prednasky:citypaths.py|Cesta z města}} | | **10** | 26.11.2019 | Složitost a výkon algoritmů. {{:courses:b6b36zal:prednasky:zal10.pdf| }} [[http://bigocheatsheet.com/| Přehled složitosti algoritmů a datových struktur]] | | **11** | 3.12.2019 | Přehled programovacích jazyků. Úvod do překládaných programovacích jazyků. {{:courses:b6b36zal:prednasky:zal11.pdf| }} | | **12** | 10.12.2019 | - | | **13** | 17.12.2019 | Programovací styly a kódovací konvence: čistý kód. {{:courses:b6b36zal:prednasky:clean-code.pdf}} | | | 24.12.2019 | Vánoce | | | 31.12.2019 | Silvestr | | **14** | 7.1.2020 | - | /* Programovací styly a kódovací konvence: čistý kód. {{:courses:b6b36zal:prednasky:clean-code.pdf}} */ **Poklady tvoří podpůrný materiál a jejich učelem není nahradit vlastní zápisky z přednášky, které slouží také jako prostředek osvojení si studované problematiky.** ===== Hodnocení předmětu a zkouška ===== Hodnocení se řídí [[https://www.cvut.cz/sites/default/files/content/7e72349e-3ea5-4693-9853-5147f1238481/cs/20180718-studijni-a-zkusebni-rad-pro-studenty-cvut.pdf|Studijním a zkušebním řádem ČVUT]]. Předmět je zakončen zápočtem a zkouškou. K úspěšnému absolvování předmětu je nutné získat **zápočet** a vykonat **zkoušku**. Pro získání zápočtu je třeba úspěšně vyřešit **domácí úkoly** a získat alespoň 10 bodů. Po získání zápočtu je nutné vykonat **implementační zkoušku**. Implementační zkouška probíhá v počítačové učebně na školních počítačích. Instalované prostředí odpovídá tomu, na které jste zvyklí ze semestru, s tím rozdílem, že nemáte přístup na internet ani ke svým personálním souborům (pracujete tedy v "čistém laboratorním prostředí"). Zkouškové zadání se skládá z šesti úloh, každé hodnocené až 10 body. Úlohy na sebe mohou navazovat. Není vyžadována speciální znalost specifických algoritmů, ale předpokládá se schopnost navrhnout jednoduchý algoritmus podle zadání a jeho bezchybná implementace. Čas na řešení úloh je dostatečný. Body lze získat v kategoriích: ^ Kategorie ^ Body ^ Minimum bodů ^ | 10 domácích úkolů | 40 | 10 ^ | Zkouška (implementace) | 60 | - | Rozložení hodnocení dle dosažených bodů je dle tabulky: ^ Známka ^ Bodové rozmezí ^ Slovní hodnocení ^ | A | 90 a více | výborně | | B | 80 - 89 | velmi dobře | | C | 70 - 79 | dobře | | D | 60 - 69 | uspokojivě | | E | 50 - 59 | dostatečně | | F | méně než 50 | nedostatečně | ===== Odkazy ===== [[https://cw.felk.cvut.cz/forum/forum-1583.html|Diskusní fórum]] [[https://cw.felk.cvut.cz/brute/|BRUTE]] [[https://www.fel.cvut.cz/cz/education/rozvrhy-ng.B191/public/html/predmety/31/28/p3128906.html|Rozvrh]] [[https://cw.fel.cvut.cz/wiki/courses/b6b36zal/cviceni|Cvičení]] [[https://cw.fel.cvut.cz/wiki/courses/b6b36zal/zadani|Zadání HW]] [[https://www.jetbrains.com/shop/eform/students|Ziskani licence PyCharm]] /* [[https://cw.felk.cvut.cz/forum/forum-1428.html|diskusní fórum]] [[https://cw.felk.cvut.cz/forum/forum-1188.html|diskusní fórum - ZS2016]] */