Výuka
V letním semestru 2024/25 vyučuji tyto předměty:
- Programování 2 pro matematiky (NMIN112) - cvičení
- Multi-agentní systémy (NAIL106)- cvičení
- Webové technologie (DVPP)
Programování 2 pro matematiky (NMIN112)
Podmínky pro získání zápočtu:
- aktivní práce v hodinách
- na teoretickém cvičení vypracování písemných domácích úkolů (dosažení alespoň 70% z celkového počtu bodů, hranice přežití: 50% bodů), za docházku na každé cvičení získáte jeden bonusový bod
- na praktickém cvičení pravidelné řešení domácích úkolů zadávaných v ReCodExu (dosažení alespoň 70% z celkového počtu bodů, hranice přežití: 50% bodů)
- na konci semestru - praktický zápočtový test u počítačů - test se bude psát na posledním praktickém cvičení, ve zkouškovém období budou vypsány opravné termíny
- vypracování zápočtového programu (včetně zpracování písemné dokumentace)
Zápočet není vstupní podmínkou ke zkoušce.
Programovací úlohy
Pro získání zápočtu je potřeba mít na konci semestru alespoň 70% z celkového počtu vypsaných bodů za praktické úlohy (bonusové úlohy se do celkového počtu nepočítají, můžete si jimi tedy přilepšit).
Autor řešení musí být schopen na cvičení vysvětlit svůj program.
Úkoly se budou odevzdávat pomocí systému ReCodEx https://recodex.mff.cuni.cz/
Všechny úlohy jsou samostatná práce! Můžete se samozřejmě o úlohách bavit mezi sebou, ale řešení musí vypracovat každý sám.
Písemné (teoretické) úlohy
Pro získání zápočtu je potřeba mít na konci semestru alespoň 70% z celkového počtu vypsaných bodů za teoretické úlohy (bonusové úlohy se do celkového počtu nepočítají).
Domácí úkoly psané "na papír" spočívají většinou v návrhu a slovním popisu efektivního algoritmu.
Úkoly se budou odevzdávat pomocí systému Postal Owl https://kam.mff.cuni.cz/owl/
Praktický zápočtový test u počítačů
Bude se jednat o úlohu zadanou v ReCodExu v podobném rozsahu jako úlohy zadávané v průběhu semestru. Pro úspěšné složení testu bude potřeba získat v ReCodExu plný počet bodů. Test se bude psát na školních počítačích.
Zápočtový program
Zápočtový program je rozsáhlejší než běžné úlohy v ReCodExu. Jeho účelem je, abyste si vyzkoušeli samostatně navrhnout a vytvořit větší program včetně načítání vstupů od uživatele, ošetření jejich korektnosti, odladění, napsání dokumentace. Téma pro svůj program si vybíráte sami (já ho musím schválit).
Postup, jak vypracovat zápočtový program:
- vybrat si téma a domluvit se na něm se mnou (do 15. dubna)
- poslat krátkou specifikaci (do 30. dubna)
- napsat samotný program
- napsat dokumentaci k programu - uživatelskou a programátorskou
- program odprezentovat
O dokumentaci podle Martina Mareše:
Uživatelská dokumentace. To je stručný popis toho, jak se program používá (tedy třeba v jakém formátu se mu zadává vstup a v jakém vydá výstup). Nepište od ní evidentní věci, spíš to, co by bězný uživatel nečekal. Také by tam mělo být řečeno, co vlastně program dělá :)
Programátorská dokumentace. V ní je stručně popsáno, jak program funguje uvnitř. Nemusíte komentovat každý řádek programu, spíš popište celkovou koncepci. Pokud používáte nějaké netriviální algoritmy, je to dobré zmínit. Pokud používáte něco, co jste nevymysleli sami, je na místě citovat zdroje.
Text o dokumentaci k (nejen) zápočtovému programu od doktora Kryla: Jak psát dokumentaci zápočtového programu
Co jsme dělali na cvičení:
1. CVIČENÍ - teoretické:
pro nemoc zrušeno1. CVIČENÍ - praktické:
pro nemoc zrušeno2. CVIČENÍ - teoretické:
Složitost
- jednoduché algoritmy a jejich složitost
- definice O
- dokazování jednoduchých tvrzení
2. CVIČENÍ - praktické:
Opakování ze zimního semestru:- instalace Pythonu, IDLE, Python jako kalkulačka
- proměnné a výrazy, operace s čísly, relace a logické spojky
- struktura programu – příkazy input a print, indentace, komentáře
- příkaz if (zanořování, elif, else)
- cyklus while (včetně else)
- základní použití podmínek a cyklů - ciferný součet, Euklidův algoritmus, test prvočíselnosti
- zpracování posloupnosti dat, seznamy a operace s nimi, indexování, řezy
- generátorová notace seznamů (list comprehension)
- funkce - parametry, return, lokalita a viditelnost proměnných
- znakové řetězce
- formátovaný výstup (znakové řetězce typu f“xxx{y}xxx“)
- N-tice (tuples)
- množiny a slovníky
- textové soubory
- standardní knihovna – základní přehled (math, copy, array, fractions, decimal, time, random, ...)
- výjimky - try-except-finally, raise, assert
- základní informace o třídách a objektech v Pythonu.
3. CVIČENÍ - teoretické:
Ještě složitost
další jednoduché algoritmy a jejich časová a prostorová složitost
- "online" algoritmy (prostorová složitost O(1))
- předzpracování - seřazení posloupnosti, inverzní pole
- "čas za paměť"
3. CVIČENÍ - praktické:
objekty a moduly
- atributy, metody
- vytvoření vlastní třídy
- vytvoření vlastního modulu
4. CVIČENÍ - teoretické:
třídící algoritmy a binární vyhledávání
- opakování algoritmů z přednášky
4. CVIČENÍ - praktické:
ještě objekty
- magic methods
- dědičnost
5. CVIČENÍ - teoretické:
abstraktní datové typy - halda, zásobník a fronta
- Příklady zásobník, fronta
- správné uzávorkování - jeden typ závorek, více typů závorek
- Halda - operace (
insert
,extract_min
), heapsort
5. CVIČENÍ - praktické:
funkční dekompozice, modul turtle
- práce s moduly (česká želva)
- ještě dědičnost (tlustá oranžová želva)
- funkční dekompozice - návrh hry Hangman
6. CVIČENÍ - teoretické:
lineární spojové seznamy - základní operace:
- určit počet prvků
- vypsat všechny hodnoty
- vyhledání prvku s danou hodnotou
- přidání prvku na začátek, na konec seznamu
- vytvoření kopie seznamu
Multi-agentní systémy
Cvičení k přednášce Romana Nerudy.
Druhou paralelku cvičení ve čtvrtek vede Martin Pilát.
Požadavky na zápočet
Během semestru dostanete pět domácích úkolů, jak teoretičtějších, tak praktických (vytvoření agenta/týmu agentů do nějaké soutěže). Především ty praktické bude často možné řešit v týmech 3-4 studentů.
Za každý úkol bude možné získat až 10 bodů. Zápočet dostanete za získání alespoň 60 % možných bodů, tj. 30 bodů.
1. CVIČENÍ (17.2.2025):
pro nemoc zrušeno2. CVIČENÍ (24.2.2025):
hra XY>
3. CVIČENÍ (3.3.2025):
vězňovo dilema - první úkol
text ze stránek Martina Piláta, zdrojové kódy, web pro upload strategie
Deadline úkolu je nedělní půlnoc, tedy 9.3.2025 23:59
4. CVIČENÍ (10.3.2025):
simulace života strategií
text ze stránek Martina Piláta
zdrojové kódy jsou stejné jako minule, pokud jste nebyli na cvičení, napište mi o strategie vašich spolužáků, abyste měli s čím experimentovat
žádný bodovaný domácí úkol z tohoto cvičení není
4. CVIČENÍ (17.3.2025):
AgentSpeak
text ze stránek Martina Piláta
žádný bodovaný domácí úkol z tohoto cvičení není
6. CVIČENÍ (24.3.2025):
AgentSpeak - druhý úkol
text ze stránek Martina Piláta
Zadání úkolu je v textu na stránkách Martina Piláta.
Řešení mi pošlete (jen jeden člen týmu) zazipované e-mailem. Připište, kdo všechno je členem týmu. Nezapomeňte prefixovat soubory, které oproti příkladu z Jasonu změníte, názvem týmu.
Deadline úkolu je nedělní půlnoc za dva týdny, tedy 6.4.2025 23:59
Webové technologie (DVPP)
Kurz v rámci celoživotního vzdělávání.
Odkaz na stránky kurzu: Webové technologie.