====== 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 | | KN:E-431 | Cvičící | ^ RNDr. Lukáš Chrpa, Ph.D. | po domluvě emailem | | | kombinované studium | ===== 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 2018/2019**. | **1** | 2.10.2018 | //Úvod. Algoritmus, vstup a výstup.// {{:courses:b6b36zal:prednasky:zal01.pdf| }}| | **2** | 9.10.2018 | //Proměnné a datové typy. Funkce.// {{:courses:b6b36zal:prednasky:zal02.pdf| }}| | **3** | 16.10.2018 | //Řízení běhu programu.// {{:courses:b6b36zal:prednasky:zal03.pdf| }}| | **4** | 23.10.2018 | //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** | 30.10.2018 | //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** | 6.11.2018 | **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** | 13.11.2018 | **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** | 20.11.2018 | 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** | 27.11.2018 | 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** | 4.12.2018 | Složitost a výkon algoritmů. {{:courses:b6b36zal:prednasky:zal10.pdf| }} [[http://bigocheatsheet.com/| Přehled složitosti algoritmů a datových struktur]] | | **11** | 11.12.2018 | Přehled programovacích jazyků. Úvod do překládaných programovacích jazyků. {{:courses:b6b36zal:prednasky:zal11.pdf| }} | | **12** | 18.12.2018 | Konzultace (v 309) | | | 25.12.2018 | Vánoce | | | 1.1.2019 | Nový rok | | **13** | 8.1.2018 | 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-1428.html|diskusní fórum]] [[https://cw.felk.cvut.cz/forum/forum-1188.html|diskusní fórum - ZS2016]] [[https://cw.felk.cvut.cz/brute/|UploadSystem]] [[http://www.feld.cvut.cz/cz/education/rozvrhy-ng.B181/public/cz/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]]