O předmětu

Programování není pouze o schopnosti napsat fungující program, nebo naimplementovat konkrétní algoritmus. Programování je z velké části také o zvládání strukturální složitosti počítačových systémů. U menších programů, které slouží především jako obal nějakého algoritmu, je tato složitost dána především abstrakcemi a datovými strukturami použitými pro implementaci daného algoritmu. U větších programů přestávají algoritmus a koncepty s ním spojené dominovat a program začne být složitý především v důsledku množství konceptů a jejich vzájemné interakce. U takových programů hraje návrh (design) kritickou roli a jejich vývoj a údržba přesahuje možnosti jednotlivce.

V takovém okamžiku je extrémně důležitá schopnost členů vývojového týmu efektivně komunikovat a zdrojový kód programu je jedním z komunikačních kanálů, který navíc přesně odráží stav vývoje programu. Kvalita zdrojového kódu sice přímo nesouvisí s funkcí programu, ale 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 zdrojového 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.

Kontakt

K 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 s námi komunikovat přímo, nebo nám poslat 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í hodiny

V kanceláři č. 205 v budově na Malé Straně jsem k zastižení od úterý do pátku, typicky od 10:00 do 18:00. 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 poskytnout kratší, předem neohlášené konzultace. Pokud předpokládáte, že na konzultaci bude potřeba více času, je vhodné se předem domluvit na konkrétním termínu a mít jasnou představu o její náplni – to znamená vědět čemu nerozumíte (a čemu ještě ano) – konzultace nemůže sloužit jako náhrada přednášek.

Rozvrh

Předmět přednáší Lubomír Bulej a v letním semestru 2018/2019 se přednášky konají ve čtvrtek od 9:00 v posluchárně S3. Na cvičení jsou vyhrazeny 2 paralelky, obě v pondělí v učebně SU2, od 9:00 a od 10:40 v SU2. 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í podle harmonogramu uvedeném v následujícícm kalendáři:

Harmonogram cvičení

Alternativní odkazy: XML/RSS, iCal, HTML

Úkoly a bodování

V průběhu semestru budou na cvičení zadány úkoly, které představují podstatnou část výsledného hodnocení. Předmět je v principu možné absolvovat na základě skvěle odvedené práce v semestru. Úkoly budete částečně řešit ve dvojicích – cílem je motivovat studenty k diskuzi, vyzkoušet si práci v malém týmu a zároveň snížení zátěže kladené na vyučující.

Celkem je možné získat 100 bodů z úkolů v semestru a 20 bodů ze zkoušky.

Mapování mezi body a získanou známkou přibližuje následující tabulka:

Známka Dosažené body
1 > 96b
2 > 78b
3 > 50b

Literatura

Ná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.

  • McConnell, S. Code Complete: A Practical Handbook of Software Construction. 2nd edition, Microsoft Press, 2004, ISBN 978-0735619678
  • McConnell, S. Dokonalý kód: Umění programování a techniky tvorby software. 2. vydání, Computer Press, 2006, ISBN 80-251-0849-X

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.

  • Bloch, J. Effective Java. 2nd edition, Addison-Wesley, 2008, ISBN 978-0-321035668-0

Webové materiály

Vedle 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.

Logo of Faculty of Mathematics and Physics
  • Phone: +420 951 554 267, +420 951 554 236
  • Email: info<at-sign>d3s.mff.cuni.cz
  •  
  • How to find us?
Modified on 2019-02-19