Algoritmus programozása - elvárások, segédletek

Választható algoritmusok

A hallgató tetszőleges adatbányászati algoritmust implementálhat a

témakörből. Gyakori elemhalmazok kinyerésénél tartsuk be az itt írtakat!

A publikált algoritmusok töredéke található az "Adatbányászati algoritmusok" tanulmányban. Ezért bátorítunk mindenkit arra, hogy olyan algoritmust válasszon, amely a tanulmányban nem szerepel. Természetesen ez nem követelmény! Sőt lehetőség van már beadott implementáció továbbfejlesztésére egyszemélyes csapat esetén.

Programozási nyelv, futási környezet

Az olyan algoritmusoknál, ahol a gyorsaság és a kis memóriaigény elsődleges (például gyakori mintabányászat), C++ a kötelező programozási nyelv. Ha a hatékonyság mellékes, mert elsősorban a végeredmény érdekes (például klaszterezés), akkor választható a Java nyelv is.

A futási- és tesztelési környezet a Linux operációs rendszer! Az algoritmus időigényét a /usr/bin/time paranccsal kaphatjuk meg.

Dokumentáció

A dokumentációkra vonatkozó általános elvárások mellett az alábbiakat kérem betartani. A dokumentáció tartalmazza az algoritmus leírását, a felhasznált adatstruktúrákat, illetve az implementáció sajátosságait. Külön rész szóljon a teszteredményekről, és ezek értelmezéséről.

Kötelező a forráskódot megjegyzésekkel ellátni, majd ezekből HTML alapú dokumentációt generálni a doxygen programmal (java programok esetén természetesen java-doc is megengedett).

Felhasználható programok

Elvárások a kódolással kapcsolatban

Kötelező az objektumorientált programozási mód (például váljon szét az algoritmus az adatszerkezettől). Ahol lehet, használjunk tervezési mintákat (design patterns). Tartsuk szem előtt, hogy kódunkat későbbi évfolyamok hallgatói továbbfejleszthetik, kibővíthetik. Törekedjünk a platformfüggetlenségre, használjunk szabványos eljárásokat. Ahol lehet használjunk STL tárolókat, iterátorokat és algoritmusokat, illetve a boost könyvtár elemeit. Minden olyan eset, ahol használhatnánk az STL eszközeit, de nem tesszük, pontlevonással jár (kivéve, ha a hallgató teszteredményekkel igazolja, hogy az STL jelentősen lassítaná az algoritmust).

Kódoljunk szépen és konzisztensen! Nagyon ajánlott a corelinux konzorcium által definiált C++ szabványos kódolás betartása. Természetesen ettől el lehet térni kis mértékben, de a következőket kötelezően tartsuk be:

Programozáshoz ajánlott irodalom