SIS code: 
Semester: 
winter
E-credits: 
5
Examination: 
Z
Instructor: 

Programování 1

POZOR, informace zatím nejsou aktualizovány pro akademický rok 2022/2023!

  • přednáší Martin Pergel ve čtvrtek 12:20
  • cvičí Rudolf Rosa ve středu 16:30-18:00 v N11
    • cvičení pro kruh 33 paralelky X bakalářských studentů informatiky
  • navazuje na cvičení Algoritmizace 1 s Pavlem Töpferem 15:40-16:25 v N11
    • cvičení Programování a Algoritmizace jsou svázaná, navštěvujte tedy na sebe navazující cvičení!
  • cvičení pro pokročilé má Martin Mareš ve čtvrtek (9:50-12:10 v N3)

Kdykoliv cokoliv potřebujete, napište mi na rosa@ufal.mff.cuni.cz (nebo mě oslovte po cvičení). Budu rád, když předmět e-mailu bude mimo jiné obsahovat kód předmětu (NPRG030), mám na to nastavené e-mailové filtry.

Obsah této stránky

Konzultace

  • cvičení budou doplňovat interaktivní konzultace
    • pravidelné konzultace během semestru jsou každou středu v N11 18:00-18:30 (tedy hned po cvičení, na stejném místě)
    • individuální konzultace si se mnou domlouvejte podle potřeby (napiště mi e-mail)
  • konzultace je pro vás, je to ideální příležitost, když s něčím potřebujete poradit nebo pomoct, například:
    • napsal jsem tenhle kus kódu a nefunguje to, proč?
    • něčemu jsem na cvičení nerozuměl a chtěl bych to vysvětlit znova a lépe
    • mám dotaz k něčemu ze cvičení nebo z přednášky
    • mám dotaz k něčemu co nebylo na cvičení ani přednášce
    • nerozumím zadání domácího úkolu
    • rozumím zadání domácího úkolu, ale potřebuju poradit, jak ho řešit
    • mám nějakou nejasnost/otázku/problém týkající se mého studia (ne nutně předmětu Programování 1)
    • atd.
  • jednak budu vyhlašovat hromadné konzultace, které se můžete účastnit všichni
  • jednak si budeme dle potřeby domlouvat soukromé konzultace
    • napište mi mail, pokud se chcete domluvit na konzultaci
    • některým z vás občas nabídnu konzultace i sám, třeba když si všimnu, že zjevně máte nějaké problémy -- ale raději se ozvěte sami, ne vždy si ne všeho všimnu

Cvičení 2021/2022

  • 29.9. hello world (sčítání, násobení, input)
  • 6.10. if (BMI)
  • 13.10. while (Colatz, ZOO)
  • 20.10. for (ZOO v listu)
  • 27.10. funkce (umocni)
  • 3.11. třídy a objeky (tichá pošta)
  • 10.11. spojáky (tichá pošta ve spojáku)
  • 17.11. je svátek a neučí se
  • 24.11. velké cviko Algoritmizace 15:40-18:00 s doc. Töpferem
  • 1.12. Algoritmizace normálně, Programování asi korespondenčně; soubory, dicty
  • 8.12. asi supl Tomáš Musil; rekurze
  • 15.12. velké cviko Programování 15:40-18:00 s RuR; prohledávání do hloubky a do šířky
  • 22.12. asi něco spíš lightweight, možná něco s grafikou (tkinter?)
  • 5.1. poslední cviko: "co se nestihlo"

29.9.

  • Hello world
  • programování v Pythonu přímo v prohlížeči snadno a rychle
  • pár jednoduchých věcí na úvod
    • 5+6
    • 3*7
    • 8-2
    • 1/3
    • 5*"ptakopysk"
    • "ptakopysk" + "podivný"
    • a=5
    • b=6
    • a+b
    • zvire="ptakopysk"
    • zvire=input()
  • vzájemné seznámení
  • Visual Studio Code: https://code.visualstudio.com/
  • podmínky na zápočet: domácí úkoly, závěrečný test, zápočtový program
  • konzultace
  • komunikační kanály
  • Recodex

 

Pokyny

Požadavky na zápočet

  • domácí úkoly: aspoň 80% bodů
  • zápočtový test: aspoň 100% bodů
    • na začátku zkouškového období: 12.1.2022 16:30 N11
      • pokud neuspějete napoprvé, máte nárok na opravné pokusy (minimálně 2)
      • termíny dalších pokusů domluvíme po testu
        • aspoň jeden termín bude někdy v rozmezí 18.1. - 21.1.
        • aspoň jeden termín bude někdy v rozmezí 25.1. - 27.1.
        • pak má RuR až do konce zkouškového dovolenou (28.1.-13.2.), takže to termíny nejspíš nebudou, ale můžou být potom v LS
    • 75 minut + minuta za každý bod navíc za domácí úkoly
      • minimum bodů za úkoly je 88, pokud máte 99 bodů za úkoly, tak máte +11 minut na test
    • v Recodexu; ale musíte to řešit fyzicky v učebně
      • rozsah obdobný domácímu úkolu
      • nutné splnit na 100%
    • povoleny libovolné zdroje kromě řešení zadané úlohy a aktivní komunikace (tj. můžete googlit, můžete koukat do slajdů, do svých poznámek, do řešení jiných úloh... ale nesmíte komunikovat s nikým)
    • na začátku kontrola totožnosti (přineste si ISIC)
  • zápočtový program
    • zadání dohodnout do 15.12.
    • odevzdání doporučeno do konce zimního zkouškového, maximálně do konce března
    • nutnost osobního předvedení (fyzicky nebo přes Zoom)

Domácí úkoly

Zápočtové programy

No need to thank me

  • Jedním z požadavků na zápočet je, aby každý z vás samostatně stvořil větší prográmek, který bude něco dělat.
    • Zadání si v tomto případě vymýšlíte sami, může to být úplně cokoliv
    • Mělo by to být něco většího než běžný domácí úkol, tak zhruba na úrovni tří domácích úkolů v jednom.
    • Můžete využívat libovolné existující knihovny a nástroje, ale musíte tam i nějakou podstatnou část naprogramovat sami.
  • Téma je nutné se mnou předem dohodnout
    • do 15.12. v SISu navrhněte téma (klidně i dřív)
      • modul Studijní mezivýsledky
      • pole "zápočťák stručně": popište, co chcete dělat (max. 50 znaků)
      • pole "zápočťák podrobně": podrobně popište, co chcete dělat (3 až 10 vět)
    • jakmile tam něco vyplníte, SIS mi pošle mail a já na to v dohledné době kouknu
      • pokud mi zadání bude připadat dobré, tak ho rovnou v SISu schválím (pokud to máte povolené, SIS vám o tom pošle mail)
      • pokud mi zadání nebude připadat dobré, napíšu vám mail a doladíme to
    • téma si pokud možno vymyslete sami
      • to co si vymyslíte sami se vám nejlíp bude líp dělat a bude vás to víc bavit
      • pokud máte vágní nápad ale nevíte jak z toho udělat splnitelné zadání, popište mi to do mailu a já něco navrhnu
    • Holan má na webu hezky zpracované návrhy na témata
    • moje nehezky zpracované návrhy
  • Na zápočťáku začněte ve vlastní zájmu dělat co nejdříve
    • zkušenost ukazuje, že když si myslíte, že to budete mít za týden, bude to trvat spíš asi tak měsíc
    • je matfyzáckým zvykem na zápoč'ťáku dělat přes Vánoční prázdniny; ale během zkouškového na to taky asi budete mít nějaký čas
  • Zápočťák vypracujte do konce března
    • ale pokud chcete zápočet z Programování do konce února (pro účely kontroly studijních povinností), vypracujte ho nejpozději do konce zkouškového (tj. do 13.2.)
    • pokud zdrojáky zabalené v ZIPu projdou omezením na velikost v SISu, nahrajte je přímo do SISu ("zápočťák: kód (ZIP archiv)"); jinak zašlete e-mailem
  • Součástí zápočťáku je také dokumentace
    • ve zdrojových kódech používejte komentáře vysvětlující co která část kódu dělá
    • pokud to dává smysl, přiložte i testovací vstupní data
    • v SISu vyplňte položku "zápočťák: dokumentace"
      • můžete dokumentaci buď vepsat přímo v SISu ("zápočťák: dokumentace (text)")
      • anebo nahrát do SISu jako soubor ("zápočťák: dokumentace (soubor)")
    • dokumentace by měla obsahovat
      • popis řešené úlohy
      • popis vstupů, výstupů, ovládání
      • popis principu řešení
      • popis použitých datových struktur a algoritmů
      • Vaše vlastní zhodnocení kvality Vašeho řešení (pokuste se být upřímní)
    • psaní dokumentace je dobrým cvičením například na v budoucnu vás čekající psaní bakalářské práce
    • dokumentace by měla zachycovat vše co je důležité či zajímavé (na co jste třeba hrdí)
    • dokumentace by se měla držet na vyšší úrovní abstrakce (popisovat některé důležité objekty a třídy užívané v programu je rozumné, popisovat každou jednotlivou proměnnou rozumné není
    • nějaké tipy jak psát dokumentaci: https://ksvi.mff.cuni.cz/~kryl/dokumentace.htm
  • Až budete mít zápočťák hotový, napište mi mail a domluvíme se na termínu osobního předvedení
    • sejdeme se v labu
    • vy mi program předvedete
    • já si ho taky vyzkouším
    • podívám se na zdrojový kód
    • pokud budu spokojen, máte tímto zápočťák splněn
    • pokud ne, dám vám program dopracovat

Další informace

  • kromě domácích úloh vřele doporučuji následující sbírku zejména jednodušších programovacích úloh: https://codingbat.com/python
    • podobně jako v Recodexu je kód automaticky vyhodnocen
    • narozdíl od Recodexu i vidíte správné i chybné vstupy i výstupy
  • nebo například zde: