Doporučené postupy v programováníO předmětuKontaktRozvrhOsnovaÚkolyLiteratura |
O předmětuProgramování není pouze o schopnosti napsat fungující program. S kvalitou programu je (vedle návrhu a správné funkce) spojena celá řada charakteristik, které s jeho funkcí přímo nesouvisí. Mezi takové charakteristiky patří také kvalita programového kódu. Ten patří k nejdůležitejším částem programu a jeho kvalita je určující pro celou řadu dalších charakteristik, jako je přehlednost, udržovatelnost a, ve spojení s návrhem, také rozšiřitelnost. Kvalita kódu se odráží v celé řadě aspektů, počínaje formátováním zdrojových textů, přes uspořádání příkazů, výběr názvů proměnných a funkcí, členění kódu do funkcí a metod, obsah komentářů, až po návrh tříd a rozhraní. Na nejnižší úrovni se často jedná především o volbu vhodného způsobu zápisu, kde cílem je co nejpřehledněji zachytit prováděné operace, zatímco na druhé straně spektra stojí snaha o vhodně zvolené a konzistentní abstrakce, které zjednodušují psaní a orientaci v kódu a v důsledku tak činí program lépe udržovatelným a rozšiřitelným. Náplní předmětu je formou přednášek a práce v semestru seznámit studenty s praktickými postupy a pravidly, jejichž dodržování a aplikace vedou (nejenom) k psaní kvalitnějšího kódu. Cílem předmětu je motivovat studenty k osvojení a používání probíraných postupů v praxi. Formální informace o předmětu jsou k dispozici v univerzitním informačním systému. PoděkováníTento předmět svým zaměřením rozšiřuje záběr původního předmětu Dokonalý kód - Umění programování a tvorby software, který v letním semestru 2007 učil David Majda, a který naprosto nezávisle vystihl v té době již existující záměr KSI a pozdější D3S zařadit předmět věnovaný psaní kvalitního kódu do studijního programu. Předmět Dokonalý kód Davida Majdy dal tomuto záměru konkrétní podobu a posloužil jako zdroj cenných zkušeností. V neposlední řadě poskytl také skvělý základ, na kterém je možné stavět při přípravě tohoto předmětu. KontaktK výměně informací mezi studenty a vyučujícími je určena emailová konference. Pro dotazy a připomínky týkající se výuky používejte prosím přednostně tuto konferenci – většinou to bude zajímat širší okruh studentů. Pokud máte dotaz nebo připomínku, kterou nechcete posílat do konference, můžete použít také email:
Pokud se rozhodnete napsat email vyučujícímu, ujistěte se prosím, že to na co se ptáte není nikde jinde zodpovězeno – ať už v mailing listu, nebo na těchto stránkách. Kardinalita vztahu mezi studenty a vyučujícími je typicky M:N, kde M je řádově větší než N a není v silách vyučujících opakovaně odpovídat na stejné dotazy. Konzultační hodinyV kanceláři č. 205 v budově na Malé Straně jsem k zastižení od úterý do čtvrtka. V kanceláři bývám zhruba od 9:30 do 18:00, někdy i déle, ale pokud plánujete přijít po 17. hodině, je vhodné mi to předem včas oznámit. Vedle výuky ještě nebývám k zastižení během seminářů D3S, které se konají v úterý od 14:00 do (většinou) 15:00 a ve středu od 9:00 do (většinou) 10:00. Během konzultačních hodin jsem ochoten vyřídit běžnou administrativu jako např. zápis známek do indexu, případně poskytnout kratší, předem neohlášené konzultace. Pokud předpokládáte, že na konzultaci bude potřeba více času, je vhodné se na konzultaci předem domluvit a mít jasnou představu o její náplni – to znamená mít představu čemu nerozumíte (a čemu ještě ano) – konzultace nemůže sloužit jako náhrada přednášek. RozvrhPředmět přednáší Lubomír Bulej a v letním semestru 2010/2011 se přednášky konají ve čtvrtek od 10:40 v místnosti S9. Na cvičení jsou vyhrazeny celkem 4 paralelky, podrobnosti naleznete v informačním systému. Protože těžištěm práce studentů v průběhu semestru je práce na několika domácích úkolech, cvičení se konají (vesměs) jednou za 14 dní, přesný harmonogram naleznete v následujícím kalendáři. Harmonogram cvičeníAlternativní odkazy: XML/RSS, iCal, HTML OsnovaPro snadnější orientaci v přednášené látce jsou k probraným tématům k dispozici prezentace z přednášek, které byly použity při výkladu v minulém roce. V případě potřeby budou tyto prezentace aktualizovány v průběhu semestru. Úvod
Psaní kódu
Návrh metod
Návrh tříd
Zlepšování kódu
Formátování kódu, dokumentace
ÚkolyV průběhu semestru budou na cvičení zadány tři úkoly, které jsou podstatou hodnocení studentů. Předmět je tedy možné absolvovat na základě dobře odvedené práce v semestru. Úkoly budete částečně řešit ve dvojicích – cílem je motivovat studenty k diskuzi a zároveň snížení zátěže kladené na vyučující. První úkol se bude skládat z úprav dodaného kódu a oponentury, druhý úkol bude vytvoření knihovny a třetí úkol vytvoření testů a oponentura. Oponentura znamená, že po odevzdání řešení problému budou řešitelům rozeslána řešení jejich kolegů (každému řešiteli jedno) a budou mít za úkol je zhodnotit. Toto zhodnocení pak bude ohodnoceno :-) Zadání úkolů bude vždy dostupné na webu předmětu. V případě prvního úkolu je možné za řešení problému získat maximálně 10 bodů, stejně tak za oponenturu. Za druhý úkol je možné získat maximálně 40 bodů a za třetí úkol maximálně 30 bodů. Co přesně je předmětem hodnocení bude uvedeno u každého úkolu. Celkem lze získat 90 bodů,jejich převod na známku viz slajdy. Úkoly budete řešit ve dvojicích. Dvojice se mohou změnit před druhým úkolem. Dvojice je potřeba nahlásit po zadání úkolu ve webové aplikaci, která bude brzy zpřístupněna. OdevzdáníÚkoly i oponentura se odevzdávají ve webové aplikaci. V případě prvního úkolu a jeho oponentury je třeba soubory odevzdat v plain-textu (tj. nikoliv HTML, RTF apod.) a u prvního úkolu též zarovnaný na max. 80 znaků. Text i kód musí být vložen přímo do aplikace (tj. bez použití archivačních a kompresních nástrojů). U druhého a třetího úkolu je formát odevzdání specifikován přímo v zadání úkolu. (Důvodem těchto pravidel je usnadnění opravování, nikoliv snaha o zbytečnou byrokracii.) Data v nevyhovujícím formátu nebudou akceptovány jako řešení. Řešení je nutno odevzdat včas (viz harmonogram). Za každý den zpoždění u prvního úkolu bude odečtena třetina bodů, u druhého a třetího úkolu pětina bodů z maximálního hodnocení. Případné výjimky je nutné dohodnout s dostatečným předstihem. Programovací jazykPrvní úkol bude v jazyce Java. U druhého úkolu budou povolené jazyky specifikovány přímo v zadání úkolu. Jazyk třetího úkolu bude stejný jako jazyk druhého úkolu. Zadání úkolůLiteraturaNáplň tohoto předmětu vychází primárně z 2. vydání knihy Code Complete od Steva McConnella, která existuje i v českém překladu.
Existuje celá řada dalších knih, které se zabývají problematikou vývoje a údržby software. Málo z nich však klade takový důraz přímo na psaní kódu. Další užitečné postřehy jsou čerpány z 2. vydání knihy Effective Java od Joshuy Blocha.
Webové materiályVedle knih je také možné najít celou řadu zajímavých esejů a článků na webu. Odkazy na některé z nich jsou uvedeny v prezentacích z přednášek. |
