Uvod u algoritme

Dobro došli na BubbleBee kurs - Uvod u algoritme. Na ovoj stranici možete naći osnovne informacije o samom kursu, njegovoj strukturi i sadržaju. Pre nego što počnete sa kursom predlažemo vam da pročitate opis kao i da odgledate uvodni video. Ukoliko imate komentara ili dodatnih sugestija povodom kursa, nemojte oklevati da se obratite BubbleBee timu. Takođe, ukoliko naiđete na neku grešku, kojih svakako ima, bili bismo zahvalni kada biste nas obavestili o istoj.

Kurs Uvod u algoritme pokriva široki spektar algoritama i tehnika programiranja. Cilj kursa je upoznavanje sa najvažnijim algoritmima koji se koriste za rešavanje praktičnih problema koji se javljaju u računarskim naukama. Sadržaj kursa obuhvata osvrt na strukture podataka, matematičke algoritme, rekurziju i backtrack, teoriju grafova, dinamičko programiranje, geometrijske algoritme...  

Online kurseva sa sličnim sadržajem ima dosta, tako da je fer pitanje: zašto se ovaj kurs razlikuje od drugih? Tri ključne stvari koje ovaj konkretan kurs izdvajaju su: struktura, scenario i tematika.

Struktura. Struktura i organizacija kursa je defisana tako da bude jednostavna i prilagođena potrebama svakog korisnika. Akcenat je stavljen na video materijale koje je lakše pratiti od čitanja pisanog materijala. Video predavanja su kratka i svaki pokriva malu celinu lekcije, tako da ukoliko nemate mnogo vremena određenog dana možete ipak nešto novo čuti i pustiti “da se slegne„. Imaćete dosta statistika svog progresa, biće vam ukazane i objašnjene greške, kao i mogući dodatni materijal ukoliko je to potrebno. Pored same teorijske priče kurs zahteva i implementaciju prezentovanih algoritama, kao i teorijsko testiranje.

Scenario. Sam sadržaj kursa je definisan tako da pokriva dosta scenarija, od koji izdvajamo tri glavna:

  • Kurs pokriva potrebno znanje za nacionalna takmičenja iz programiranja za učenike srednjih škola, kao i za internacionalna takmičenja IOI i ACM.
  • Kurs prati sadržaj kurseva dizajna i analize algoritama sa tehničkih i matematičkih fakulteta u Srbiji.
  • Kurs pokriva potrebno znanje iz algoritama za većinu softverskih firmi.

Naravno, ukoliko uspešno završite ovaj kurs, mi ne možemo tvrditi da ćete dobiti visoku ocenu na ispitu ili osvojiti nagradu na takmičenju, ali svakako možemo reći da će šanse za to značajno porasti.

Tematika. Pored samog izlaganja konkretnog algoritma, materijali pokrivaju i dosta propratnih napomena vezanih za isti: najbolji pristup implementaciji, testiranje, analizu složenosti, “trikove” i uopštenja... Pričaćemo o standardnim greškama, kako u implementaciji tako i u teoriji, i iste dopunjavati analizom vaših rešenja. Svaki primer će biti detaljno objašnjen i rešenje će biti prikazano kroz proces razvijanja ideje, a ne samo navedeno kao grom iz vedra neba. Nadamo se da ćemo u što više situacija pitanje “kako da mi ovo padne na pamet” zameniti pitanjem “kako mi ovo nije palo na pamet”.

Kako i gde možemo upotrebiti matematičke teoreme u programiranju? Šta i kako nam algoritmi teorije grafova govore o povezanosti među ljudima? Da li algoritam sortiranja može imati bolju složenost od O(n log n)? Koji je optimalni novčani sistem? Kako radi predlog prijateljstva na Facebook-u? Ako ste se ikada zapitali nešto slično – na dobrom ste mestu.

Nama nije važno da li vas programiranje interesuje zbog takmičenja, profesije ili hobija - sve dok među ovim materijalima pronalazite nešto za sebe.