Programování 1 (NPRG030) a Algoritmizace (NPRG062)

Algoritmizace - podmínky pro získání zápočtu:

  • vypracování domácích úkolů - získání alespoň 70% z celkového počtu bodů
  • docházka - za každou účast na cvičení získáte 1 bod navíc (nepočítá se do základu)
  • osobní prezentace alespoň jednoho domácího úkolu

Zápočet JE podmínkou ke zkoušce.

Programování - podmínky pro získání zápočtu:

  • 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%
  • aktivní práce v hodinách
  • na konci semestru - praktický zápočtový test u počítačů - test se bude psát na posledním cvičení
  • vypracování zápočtového programu (včetně zpracování písemné dokumentace)

V zimním semestru zkouška není.

Úlohy z Algoritmizace

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 domácí úlohy. V případě potřeby (na přímý dotaz) přidám na konci semestru dodatečné bonusové ulohy, které budou těžší a za menší počet bodů.

Plán: Bude zadáno 8 úkolů po 10 bodech.

Za účast na cvičení získáte 1 bonusový bod (docházka bude evidována v Postal Owl https://owl.mff.cuni.cz/).

Domácí úkoly z algoritmizace ("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://owl.mff.cuni.cz/.

Úlohy z Programování

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 domácí úlohy.

Praktické úlohy budou zpravidla zadávány každý týden.

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/

Řešení úloh je samostatná práce! Můžete se samozřejmě o úlohách bavit mezi sebou, ale řešení musí vypracovat každý sám za použití svých vlastních schopností a vlastní inteligence. Umělou inteligenci používejte s rozmyslem.

Praktický zápočtový test u počítačů

Bude se jednat o jednu úlohu zadanou v ReCodExu podobné obtížnosti jako úlohy zadávané v průběhu semestru.

  • na test bude mít každý student maximálně tři pokusy
  • čas na vyřešení: 90 minut (včetně úvodní administrativy)
  • úlohu je potřeba vyřešit na plný počet bodů
  • test se bude psát na školních počítačích

Student musí být schopen svoje řešení vysvětlit.

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 Vánoc)
  • poslat krátkou specifikaci (do 30.12.)
  • napsat samotný program
  • napsat dokumentaci k programu - uživatelskou a programátorskou
  • program i dokumentaci průběžně ukládat na mff gitlab
  • až bude program hotový, odevzdat do Postal Owl link na repository na gitlabu; repository musí obsahovat: finální verzi programu, programátorskou a uživatelskou dokumentaci, případně testovací data
  • domluvit si termín předvedení (nejčastěji tak, že se přihlásíte na některý termín vypsaný v SISu)
  • předvést mi program při krátké prezentaci, ukázat jeho funkce (na testovacích datech), popsat jak program pracuje, jaké algoritmy a datové struktury používá. Během předvedení byste měli být schopni program na požádání mírně upravit.

    Je možné, že s první verzí vašeho programu / dokumentace / testovacích dat / předvedení nebudu spokojená a budete je muset předělat. Proto nenechávejte předvedení až na poslední chvíli, abyste případné úpravy stihli ještě v termínu. (vše nejpozději do konce zimního zkouškového období)

Při výběru témat pro své programy se můžete inspirovat např. na stránkách Martina Mareše: témata zápočtových programů - Martin Mareš nebo mezi tématy Tomáše Holana témata zápočtových programů - Tomáš Holan

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á :)

Uživatelská dokumentace by také měla obsahovat návod, jak program spustit (jaké knihovny je potřeba doinstalovat, atd.)

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 bude/bylo na cvičení:

Tady budou přibývat příklady ze cvičení: http://www.ms.mff.cuni.cz/~peskk3am/PGM

Algoritmizace
  • podmínky získání zápočtu
  • vážení kuliček - nejtěžší, nejtěžší a nejlehčí; počet vážení (kroků algoritmu)
  • převody mezi soustavami
Programování
  • prostředí IDLE
  • procvičování - proměnná, operátory, datové typy
  • čtení chybových hlášení