TEMEL, A. Knihovna pro matematické výpočty v jazyce C++ [online]. Brno: Vysoké učení technické v Brně. Fakulta elektrotechniky a komunikačních technologií. 2012.

Posudky

Posudek vedoucího

Petyovský, Petr

Zadání bakalářské práce patřilo svým rozsahem mezi obtížnější. Během plnění zadání práce student nastudoval znalosti z oblasti zpracování řídkých matic. Student dále získal praktické zkušenosti při návrhu, implementaci, ladění a profilingu programové knihovny implementované v jazyce C/C++. Pracoval iniciativně, samostatně a své dosažené výsledky prezentoval na pravidelných konzultacích. Body zadání byly splněny. Na základě nastudovaných znalostí student navrhl možné uspořádání datové reprezentace pro úsporné uložení řídké matice i reprezentaci pro práci s datovými typy s velkými rozsahem hodnot. Student navržené algoritmy implementoval ve formě šablonové knihovny v jazyce C++ a v závěru zhodnotil dosažené výsledky. Student věnoval řešení práce dostatek času, jednotlivé úkoly si ale v počátcích řešení práce nevhodně rozvrhl a pravděpodobně proto se v polovině práce dostal do časové tísně, kterou ale zvýšeným úsilím v závěru dokázal překonat. Přesto nelze označit část práce věnované datovým typům s vysokou přesností za optimálně implementovanou a to s ohledem na nutný vyšší výpočetní výkon. Dosažené výsledky i formální zpracování práce jednoznačně svědčí o bakalářských schopnostech studenta. Předložené práci navrhuji hodnocení: dobře - C.

Navrhovaná známka
C
Body
75

Posudek oponenta

Macho, Tomáš

Hlavním úkolem pana Aleše Temela bylo navrhnout a implementovat v jazyce C++ dvě knihovny. První knihovna byla určena pro uložení a práci s řídkými maticemi, druhá knihovna měla umožňovat uložení desetinných čísel se zadanou přesností. Obě knihovny měly být vzájemně propojitelné. Náročnost zadání považuji za přiměřenou pro studenta bakalářského studia. Práce obsahuje cca 50 stran vlastního textu a cca 30 stran příloh. Je členěna do 11 kapitol. Převážná část práce je vlastním dílem pana Temela. Dle mého názoru by bylo pro práci přínosné, kdyby obsahoval více teoretických poznatků získaných studiem literatury. Při popisu formátů pro ukládání řídkých matic v kapitole 3 autor uvažuje konstantní velikosti prvku 8 bytů. Daleko vhodnější by bylo použít obecnou velikost prvku, nebo při porovnávání úspornosti jednotlivých formátů velikost prvku vůbec neuvažovat. Ve vztahu (1) na str. 16 není uveden význam proměnné „a“ ve jmenovateli. Vztah (1), stejně jako vztah (2) na str. 19, považuji za chybný. Kapitoly 5.1 a 5.2 považuji za zbytečné, protože obsahují pouhý výčet konstruktorů, metod a operátorů bez vysvětlení významu parametrů a popisu funkce. V práci postrádám popis existujících řešení pro operace s řídkými maticemi (např. různé metody pro výpočet determinantů nebo inverzní matice). Autor uvádí pouze metodu výpočtu determinantu pomocí Laplaceova rozvoje resp. Sarrusovým pravidlem a výpočet inverzní matice pomocí adjungované matice. Uvedené metody jsou vhodné spíše pro ruční výpočty v případě standardních matic a nejsou nijak optimalizovány pro práci s řídkými maticemi. Zvolený způsob ukládání desetinných čísel s definovanou přesností, kterou autor zvolil, pokládám za nevhodný z hlediska rychlosti matematických operací s těmito čísly. Autor se měl spíše zaměřit na ověřená řešení představovaná např. knihovnou GNU MP, než vymýšlet nestandardní a neefektivní vlastní řešení. V práci se velmi často vyskytují netechnické výrazy (např. str. 20, kapitola 4.1: „řešení lineárních nejmenších čtverců“, str. 22, 1. odstavec: „systematika knihovny“, str. 37, 1. odstavec: „exponent hodnota“), překlepy, mnoho vět je formulováno dosti krkolomně. I přes výše uvedené výhrady konstatuji, že pan Aleš Temel splnil všechny body zadání své práce a prokázal bakalářské schopnosti v oblasti návrhu a implementace software v jazyce C++.

Navrhovaná známka
D
Body
63

Otázky

eVSKP id 52456