Cvičení z Algoritmizace a Programování 1
Cvičení z obou předmětů je spojeno do jednoho dlouhého cvičení - probíraná látka se u obou předmětů prolíná.
Cvičení z Algoritmizace je vypsáno k přednásce doc. Pavla Töpfera, druhou paralelku vede doc. Tomáš Dvořák. Cvičení z Programování 1 je vypsáno k přednášce Martina Pergela, ale je možné chodit i na přednášku Tomáše Holana. Anglickou paralelku u obou předmětů vede Adam Dingle.
Pokud jste pokročilejší (např. jste řešili KSP), mohlo by se vám líbit cvičení Martina Mareše pro pokročilé.
Informace o aktuální situaci COVID-19
Aktuální situaci najdete zde a zde pro matfyz.
- Aktuálně je možná prezenční výuka.
- Na cvičeních nosíme všichni respirátor (i na nosu).
- Nechoďte na cvičení, pokud se necítíte dobře
- Nechoďte ani pokud máte pocit, že to ohrozí váš zápočet. Raději mi (včas) napiště mail a domluvíme se (např. trochu prodloužím deadlinu úkolu).
Obsah stránky
- Podmínky zápočtu
- Dotazy a konzultace
- Obsah cvičení
- 4. 10. 2021
- 11. 10. 2021
- 18. 10. 2021
- 25. 10. 2021
- 1. 11. 2021
- 8. 11. 2021
- 15. 11. 2021
- 22. 11. 2021
- 29. 11. 2021
- 6. 12. 2021
- 13. 12. 2021
- 20. 12. 2021 - zápočtový test
- 3. 1. 2021 - opravný termín zápočtového testu
- FAQ
Podmínky zápočtu
Podmínky k splnění předmětu jsou různé pro oba předměty:
Algoritmizace
K splnění Algoritmizace musíte získat zápočet + splnit zkoušku z probrané látky. Podmínkou zápočtu je získání alespoň 70 % bodů ze všech zadaných úkolů (těch bude cca 10). Kromě toho lze získat bonusové body (nezapočítávají se do součtu):
- Na začátku každé hodiny bude malý testík, kde můžete získat bonusové body.
- Občas bude zadán (těžší) úkol za body navíc.
- Aktivita v hodině.
Programování 1
K splnění Programování 1 musíte získat zápočet, zkouška je až v letním semestru. Je ale více podmínek pro získání zápočtu:
- Zisk alespoň 80 % bodů z úkolů.
- Napsání zápočtového testu == program v ReCodExu psaný během cvika (poslední dvě cvika)
- Napsání zápočtového programu - téma rozmyslet do listopadu, více info později
Bonusové body
Kromě toho je možné získat body navíc (zvlášť algoritmizace a programování):
- Na začátku každé hodiny bude malý testík.
- Občas bude zadán (těžší) úkol za body navíc.
- Aktivita v hodině.
Body z 2. se připočtou přímo, body (1. + 3.) se přepočítají tak, aby daly dohromady 15 % bodů z Algoritmizace, a 25 % bodů z Programování 1.
Tj. pokud bude zadáno celkem 100b z Programování a jen 10b z (1. + 3.), každý bod aktivity se násobí 2,5.
Informace k zápočtovému programu
Podmínkou zisku zápočtu je zápočtový program, který budete programovat doma během semestru. Do konce listopadu si vyberte téma a zašlete mi ho na mail ke kontrole. Poté vám téma buď schválím, nebo pošlu připomínky/úpravy tématu.
Zápočtový program není nutné psát v Pythonu, pokud chcete použít jiný programovací jazyk, předem se se mnou domluvte (ideálně už v rámci specifikace).
Deadline odevzdání: týden + dva dny po konci zkouškového, tj. 22.02.2022
Výsledek práce mi zašlete ke kontrole tak, abych mohla program spustit a vyzkoušet, také zašlete jeho zdrojový kód. Je možné se domluvit na osobním předvedení. Zkuste program dokončit s předstihem, ať se vám nehromadí povinnosti.
Náležitosti:
- hezký návod napsal Martin Mareš a další Jiří Mayer
- seznam témat pro inspiraci zde
- Program musí splňovat náležitosti popsané na webu RNDr. Rudolfa Kryla
Dotazy a konzultace
Sepsala jsem krátké howto na hledání chyb / jak na python.
Konzultační hodiny nemám, napište mi na mail a domluvíme se. Místo at
je zavináč, používá se na webech kvůli botům.
Preferuji pracovní: suchoparova at cs.cas.cz
Na urgentní věci osobní: gabi.suchoparova at gmail.com
Pracovní mail většinou večer a o víkendech nečtu, takže některé věci pište rovnou na osobní mail, např.:
- je víkend, nefunguje mi úkol, nemůžu přijít na to proč
- nutně potřebuju prodloužit deadlinu úkolu
- mám pozitivní test na COVID-19 a byl jsem na cviku
Obsah cvičení
Zde budu zveřejňovat stručný přehled toho, co jsme na cviku dělali. Cvičný kód najdete v repozitáři na mém GitHubu.
Minulé testíky: cviko 2, cviko 7, cviko 8
4.10.2021
Úlohy na procvičení
- Ciferný součet 2021!
- Vážení kuliček pomocí dvojramenných vah
- nalezení nejtěžší kuličky
- nalezení nejlehčí a nejtěžší
Úvod do programování
- Notebook s kódem.
- Základní příkazy, rozdělení posloupnosti do dvojic
11.10.2021
Asymptotická časová složitost
- vysvětlení, co to znamená (přirovnání k větší-menší)
- procvičování O-notace
ReCodEx
- přihlášení
- 5 základních úloh, 1 DÚ
- čtení vstupu
18.10.2021
- znovu projít základní příkazy + menší rozšíření
- společné debuggování kódu, který nefunguje
- úlohy z minula a nové úlohy
25.10.2021
- vyhodnocení úkolů z algoritmizace a programování + ukázky řešení
- notebook
- společné hledání bugu v kódu
- uzávorkování
- převody soustav
1.11.2021
- info o zápočťácích
- do konce listopadu pošlete na mail specifikaci, co budete dělat
- notebook
- spojové seznamy
8.11.2021
Suploval Ondra Mička.
- řešení úkolu z O-notace
- spojové seznamy - otočení
- počítání časové složitosti programu
15.11.2021
- vzorová řešení úkolů z programování (s deadlinou <= 8.11.)
- notebook
- halda a binární vyhledávací strom
- porovnání na co se hodí
- jak se liší
22.11.2021
- stromy a haldy v kódu
- soubory
- jak je číst a jak do nich zapisovat
- jak si vyrobit vlastní testy
- kód
29.11.2021
- znovu o haldě, vyhodnocení testíků
- rekurze
- jak si počítač pamatuje minulá volání (stack)
- fibonacci a další úlohy
- merge sort na souborech, rekurzivně
- příkazová řádka 101
6.12.2021
- prohledávání do šířky/do hloubky
- rekurze a BVS
- notebook
13.12.2021
Plán:
- BFS v kódu
- Advent of Code
- kód ke cviku
- příklad BFSka a hrací desky
- dědičnost v pythonu
20.12.2021
Plán: zápočtový test
- napsat a odladit během cvika program v recodexu
- k dispozici minulé kódy v recodexu, ale ne zdroje odjinud
- budu kontrolovat kód na plagiáty + jestli se nepodobá výsledkům na stackoverflow
- dejte vědět včas, pokud potřebujete čas navíc
- doporučuju jít i na tento termín, i když si na něj třeba ještě nevěříte
3.1.2022
Plán: opravný termín zápočťáku - možná bude jindy dle domluvy (pár lidí má prej předtermín)
- a navíc opakování ke zkoušce
- možná ještě něco proberem
- náplň je na vás
FAQ
V čem budeme programovat?
Interpret Pythonu mohu spustit na příkazové řádce. Složitější kód budeme psát v pokročilejším vývojovém prostředí (IDE) jako je Visual Studio Code (VS Code) nebo PyCharm. Pokud používáte Windows, můžete použít Visual Studio, které má více funkcí než VS Code, ale neběží na 🐧 a 🍏.
Na rychlé zkoušení věcí nebo psaní poznámek se hodí Google Colab.
Kam budeme odevzdávat úkoly?
Domácí úkoly budou zadávány a odevzdávány pomocí systému ReCodEx.
Postup pro první přihlášení do ReCodExu:
- https://recodex.mff.cuni.cz/login
- V sekci
Přihlásit se pomocí externí služby
klikněte naOvěřit uživatele
- Přihlaste se pomocí Centrální Autentizační Služby (CAS)
- Jméno a heslo jsou stejné jako do SISu.
- V menu je položka
SIS Integrace
, kde najdete skupiny navázané na předměty v SISu- Přidejte se do skupin Algoritmizace a Programování 1.
Kde najdu další materiály na procvičení?
Základní informace a slajdy najdete na stránkách přenášejících, viz výše. Něco najdete i zde.
Algoritmizace
- Průvodce labyrintem algoritmů
- Kniha (také dostupná online) shrnující látku předmětů Algoritmizace, Algoritmy a datové struktury I a II
- Její úvodní kapitoly rozebírají paměťovou a časovou složitost, binární vyhledávání, Euklidův algoritmus, třídění, haldy apod.
- Korespondenční semináře - KSP a jeho kuchařky, Kasiopeia
Programování
- Seznam příkazů a knihoven
- Přehled na stránkách Adama Dingla
- Rychlý přehled, kde jsou všechny základní věci
- Spousta zajímavých materiálů a tutoriálů je na python.cz/zacatecnici/
Nebyl/a jsem nebo nebudu na cvičení, co mám dělat?
Pokud jde jen o jedno cviko (jeden týden nemůžete), buď si probranou látku zjistěte od spolužáků, nebo mi napište na mail. Když napíšete dostatečně dopředu, pošlu vám úvodní testík na mail na začátku cvika.
Pokud jde o delší absenci, dejte mi vědět včas a domluvíme se.
Mám zdravotní problém nebo duševní obtíže, případně nějaké jiné omezení, co mám dělat?
V případě akutních zdravotních problémů je asi nejlepší napsat na studijní, napiště i mě, abych včas prodloužila deadliny apod.
Pokud potřebujete řešit svoje duševní onemocnění nebo jiná omezení, podívejte se na web matfyzu pro studenty se speciálními potřebami. Rozhodně tyhle věci řešte včas, je to lepší, než když je to na poslední chvíli např. před zkouškou.