Základní informace
KDY: Středa 14:00 -> 15:30 - SW2
MAIL: faltin@ksi.mff.cuni.cz (vložte do předmětu mailu číslo předmětu - NPRG031)
Konzultace kdykoliv po domluvě mailem.
Podmínky pro zápočet
- Práce na cvičení
- 70% bodů z domácích úkolů
- Zápočtový program
- Splněný zápočtový test
Domácí úkoly
V průběhu semestru mohou být dva typy úkolů. Jednou z podmínek pro získání zápočtu je mít na konci cvičení alespoň 70% bodů z domácích úkolů
- První typ úkolů bude zadáván na cvičení a vypracované řešení se bude posílat mailem. Typicky půjde o teoretické programátorské úlohy.
- Druhým typem budou úkoly zadané do ReCodexu (odkaz). U těch bude zadání napsáno v systému. Bude se většinou jednat o praktické programátorské úlohy.
Zápočtový program
Jednou z nutných podmínek pro získání zápočtu je vytvořit nějaký zápočtový program. Cílem zápočtového programu je vytvořit netriviální menší až střední program. Předpokládá se jak jeho správný objektový návrh, tak i jeho plná funkčnost. Program by měl být naprogramovaný v nějakém objektovém programovacím jazyce - C#/C++/Java/...
Pro inspiraci se můžete podívat například na stránky Martina Mareše (zde)
Na zápočtovém programu se bude hodnotit:
- Dokumentace (Srozumitelně popsané a vysvětlené netriviální kroky v kódu. Dostačující je například formou komentářů v kódu.)
- Kvalita kódu (Dobrý objektový návrh, čitelnost, ...)
- Fukčnost (Program nepadá na špatných vstupních datech a vrací správné výsledky na těch správných.)
Deadline pro zapsání tématu do SISu je 31.3. 23:59. Před samotným zapsáním je nutné schválení tématu, proto nenechávejte jeho vybírání na poslední chvíli.
Odevdat zápočtový program můžete kdykoliv. Ideálně byste ho měli stihnout odevzdat do začátku zkouškového období. Není problém odevzdat program po domluvě později, jen počítejte s tím, že nemusím být vždy k dispozici.
Zápočtový test
Zápočtový test bude v rámci posledního cvičení. Další opravné termíny budou vypsány po domluvě během zkouškového období. Časový limit bude délka cvičení - 90 minut. Účelem testu bude otestovat, zda student dokáže naprogramovat a odladit během zadaného časového limitu nějaký program. Nebude se jednat o nějaký algoritmicky těžký úkol, půjde hlavně o otestování praktických schopností programování.
Cvičení
21.2.
- Slidy ze cvičení: (pptx) (pdf)
- DÚ: Přihlásit se do ReCodexu
- DÚ (deadline 27.2. 23:59): Poslat svůj přechozí zápočtový program nebo jiný program. (Na dalších cvičeních ho zkusíme upravit, aby byl v C# a odpovídat paradigmatům OOP.)
- DÚ (deadline 27.2. 23:59): Poslat vypracovaný (ne naprogramovaný) úkol "Interview to Google". Není potřeba vymyslet nejlepší řešení, rozhodně se o to ale pokuste. Hodnotit se bude jeho správnost a vyhodnocení časové a paměťové složitosti. Nebude se hodnotit, jak moc je řešení rychlé. Libovolné fungující řešení se správně dokázanou složitostí dostane plný počet bodů.
28.2.
- Cvičení vedl Mirek Kratochvíl
- Zdrojový soubor ze cvičení zde.
7.3.
- Rychlé opakování konceptů z OOP - (abstraktní) třídy, (abstraktní, virtuální) metody, atributy, dědičnost, zapouzdření, ...
- Vytvoření třídy, která usnadňuje logování/vypisování zpráv - logger.
- Nejprve neobjektově zde.
- Objektově s jednou třídou zde.
- Objektově s hierarchií tříd zde.
- DÚ (deadline 12.3. 23:59): Doupravit úkoly z prvního cvičení podle připomínek.
14.3.
- Slidy ze cvičení: (pptx) (pdf)
- Opakování objektově orientovaného programování
- Návrh Malování (zdroják) a knihovny/programu na počítání s čísly.
- DÚ (deadline 19.3. 23:59):
Vytvořte program/knihovnu pro počítání s čísly v jazyce C#. Jde nám hlavně o pěkný a správný objektový návrh. Program musí obsahovat podporu pro celá čísla a reálná čísla, se kterými chceme mít možnost provádět sčítání, odčítání, násobení, dělení. Návrh by měl být udělán tak, aby bylo jednoduché přidat dodatečná podpora jak pro jiná čísla (komplexní, matice, ...), tak i pro další operace (modulo, logaritmus, exp, ...).
Program musí jít zkompilovat a měl by obsahovat příklad/ukázku použití knihovny/programu.
21.3.
- Slidy ze cvičení: (pptx) (pdf)
- Praktické objektově orientované programování - kalkulačka
- DÚ (deadline 30.3. 23:59): Jednoduchý interpreter - implementace rozhraní (ReCodex)
28.3.
- Slidy ze cvičení: (pptx) (pdf)
- Praktické objektově orientované programování - stolní hry
- DÚ (deadline 30.3. 23:59): Jednoduchý interpreter - implementace rozhraní (ReCodex)
- DÚ (deadline 2.4. 23:59): Upravit knihovnu pro počítání s čísly podle připomínek.
4.4.
11.4.
18.4.
25.4.
2.5.
9.5.
- Slidy ze cvičení: (pptx) (pdf)
- Vytvoření hracího automatu:
- DÚ: Úloha složitosti zápočtové písemky v ReCodexu.
- DÚ (deadline pří cvičení): Otázky, problémy, ...