====== B0B36ZAL -- 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 uveř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. /* [[https://teams.microsoft.com/l/team/19%3aNuVkunGMstp34wChVm8iyYDDVtbAlbmAJtX7F4Yrx1A1%40thread.tacv2/conversations?groupId=8fba8def-28b2-4e03-94ae-a84004223f73&tenantId=f345c406-5268-43b0-b19f-5862fa6833f8|Skupina MS Teams]] pro komunikaci a případnou výuku na dálku. */ ===== 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ě přes **MS Teams** nebo emailem | \\ prosím používejte **MS Teams** | KN:E-429 | Cvičící [[http://seredlad.pages.fel.cvut.cz/slides/#1|Prezentace z cvičení]] | ===== Přednášky ===== /* Přednášky probíhají v prostředí MS Teams. Odkaz na [[https://teams.microsoft.com/l/channel/19%3aff76383e93524b95bd127d33363e3e56%40thread.tacv2/prednasky?groupId=5dd674b9-c671-4e69-a6d1-a967646b6a32&tenantId=f345c406-5268-43b0-b19f-5862fa6833f8|přednáškový kanál v MS Teams]] */ Odkaz na [[http://goo.gl/nX15rH|hlasovací aplikaci]] Záznam přednášek on-line výuky předmětu [[https://cw.fel.cvut.cz/b221/courses/b6b36zal/start| Základy algoritmizace (b6b36zal)]] ze ZS2020 jsou k nahlédnutí [[https://drive.google.com/drive/folders/1liSz4Q_vk1tzGPhJSsk1-PflKTmcvCd1?usp=sharing|zde]] (přístup pouze po fakultním přihlášení, záznam není určen k veřejnému šíření a další distribuci). /* Přednášky jsou streamovány na kanálu [[https://www.youtube.com/playlist?list=PLQL6z4JeTTQnv27IWAY6NLafP6xiflmHe|Posluchárny FEL ČVUT]]. */ Stuktura přednášek a jejich pořadí se může lišit. Materiály mohou být aktualizovány -- **revidované materiály pro aktuální ZS 2023/2024 jsou označeny takto**. | **1** | 26.9.2023 | Úvod, proměnné a datové typy. {{ :courses:b0b36zal:prednasky:zal01-2021.pdf | }}, //prezentace z minulé akreditace:// {{:courses:b0b36zal:prednasky:zal01.pdf|Úvod}}, {{:courses:b0b36zal:prednasky:zal02.pdf|Proměnné a datové typy. Funkce.}}, {{:courses:b0b36zal:prednasky:zal03.pdf|Řízení běhu programu.}} | | **2** | 3.10.2023 | Problémy, algoritmy, data. {{ :courses:b0b36zal:prednasky:zal02-2022.pdf | }}, Příklady: {{:courses:b0b36zal:prednasky:gcd.py|GCD}}, {{ :courses:b0b36zal:prednasky:nim-core.py|NIM - kostra programu}}, {{:courses:b0b36zal:prednasky:nim.py|NIM - implementace}}, {{:courses:b0b36zal:prednasky:tictactoe-core.py| Tic Tac Toe - kostra programu}},{{:courses:b0b36zal:prednasky:tictactoe.py| Tic Tac Toe - implementace}} | | **3** | 10.10.2023 | Vyhledávání a řazení 1. {{ :courses:b0b36zal:prednasky:zal03-2021.pdf | }} Příklady: {{:courses:b0b36zal:prednasky:insertion_sort.py|I-S}} {{:courses:b0b36zal:prednasky:selection_sort.py|S-S}} {{:courses:b0b36zal:prednasky:bubble_sort.py|B-S}} | | **4** | 17.10.2023 | Abstraktní datové typy (zásobník, fronta), řazení pomocí haldy. {{ :courses:b0b36zal:prednasky:zal04-2022.pdf | }} Příklady: {{:courses:b0b36zal:prednasky:stack.py|stack}}, {{:courses:b6b36zal:prednasky:queue.py|queue}}, {{:courses:b0b36zal:prednasky:heap_sort.py|H-S}} | | **5** | 24.10.2023 | Abstraktní datové typy (spoj. seznam). {{ :courses:b0b36zal:prednasky:zal05-2021.pdf | }} Příklady: {{:courses:b0b36zal:prednasky:linkedlist.py|Linked list}} | | **6** | 31.10.2023 | Rekurze. {{ :courses:b0b36zal:zal06-2021.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}} | | **7** | 7.11.2023 | Rekurzivní řazení. {{ :courses:b0b36zal:prednasky:zal07-2021.pdf | }} Příklady: {{:courses:b0b36zal:prednasky:merge_sort.py|M-S}}, {{:courses:b0b36zal:prednasky:quick_sort.py|Q-S}} | | **8** | 14.11.2023 | Hledání v grafech (reprezentace grafu, rekurzivní hledání cest). {{ :courses:b0b36zal:prednasky:zal08-2021.pdf | }} Příklady: {{:courses:b0b36zal:prednasky:graphpaths.py|Cesty v grafu}} | | **9** | 21.11.2023 | Hledání v grafech (prohledávání spojového grafu, stavový prostor). {{ :courses:b0b36zal:prednasky:zal09-2021.pdf | }} Příklady: {{:courses:b0b36zal:prednasky:citypaths.py|Cesta z města}} | | **10** | 28.11.2023 | Složitost a výkon algoritmů. {{ :courses:b0b36zal:prednasky:zal10-2021.pdf | }} [[http://bigocheatsheet.com/| Přehled složitosti algoritmů a datových struktur]] | | **11** | 5.12.2023 | **Programovací styly a kódovací konvence: čistý kód.** {{ :courses:b0b36zal:prednasky:clean-code-zal.pdf |}}, {{ :courses:b0b36zal:prednasky:rosemary.pdf |}}, {{ :courses:b0b36zal:prednasky:rosemary.zip |}} | | **12** | 12.12.2023 | Přehled programovacích jazyků. Úvod do překládaných programovacích jazyků. {{ :courses:b0b36zal:prednasky:zal11-2021.pdf | }} | | **13** | 19.12.2023 | Odpadá | | | 26.12.2023 | Vánoce | | | 2.1.2024 | Vánoce | | **14** | 9.1.2024 | Odpadá | /* 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 **všechny 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ů ^ | 11 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/brute/|BRUTE]] [[https://fel.cvut.cz/cz/education/rozvrhy-ng.B231/public/html/predmety/66/26/p6626406.html|Rozvrh]] [[https://cw.fel.cvut.cz/wiki/courses/b0b36zal/cviceni|Cvičení]] [[https://cw.fel.cvut.cz/wiki/courses/b0b36zal/zadani|Zadání domácích úkolů]] [[https://www.jetbrains.com/shop/eform/students|Získání licence PyCharm]] /* [[https://cw.felk.cvut.cz/forum/forum-1732.html|Diskusní fórum]] */