Pravila predmeta
Izvajanje predmeta
Predmet se izvaja v tedenskih sklopih s predavanji, ki jim sledijo vaje. Na predavanjih so bomo ogledali teorijo in kakšen praktičen primer rešili tudi skupaj. Na vajah boste vsak teden samostojno (ob pomoči asistentov) reševali programersko nalogo v programskem jeziku C++, ki bo vključevala nek algoritmičen problem povezan z vsebino predavanj. Za domačo naloga vas bo čakal podoben problem. Ob koncu sklopa se bodo vaše rešitve domačih nalog avtomatsko testirale. Za opravljeno nalogo mora vaša rešitev uspešno prestati vse primere. Prejeli boste povratno informacijo o številu uspešno prestalih testov, ne pa o njihovi vsebini. Kdor bo želel svojo rešitev popraviti, bo imel za to čas do konca naslednjega sklopa.
Delovno okolje
Vaše programe bomo ocenjevali na Ubuntu 23.10 s prevajalnikom GCC 11 in s standardom C++20. Če je vaš oddani program resitev.cpp
, ga bomo prevedli in pognali z
g++-11 -std=c++20 -o program resitev.cpp
./program < test.in > test.res
Če si boste pripravljali virtualko z Ubuntu 23.10, morate dodatno namestiti build-essential
paket, s katerim dobite C++ prevajalnik.
sudo apt install build-essential
Ocenjevanje
Za pristop k izpitu morate imeti uspešno opravljeno sprotno delo, kar pomeni povsem pravilno rešenih vsaj 50% tedenskih nalog. Skoraj pravilna rešitev je še vedno nepravilna in je zato ne upoštevamo. Oceno predmeta prejmete na izpitu, ki ga rešujete na papir.
Če odkrijemo dve ali več prepisanih rešitev, vsem udeleženim ne priznamo sprotnega dela in tako v tekočem študijskem letu ne morete opravljati izpita. Zato ne objavljajte svojih rešitev. Posebej drzne kršitve bomo prijavili disciplinski komisiji.
Literatura
Algoritmi in podatkovne strukture:
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to algorithms. MIT press.
- Sedgewick R. & Wayne K. (2011). Algorithms fourth edition. Addison-Wesley.
- Aho A. V. Hopcroft J. E. & Ullman J. D. (1983). Data structures and algorithms. Addison-Wesley.
- Kononenko, I., Robnik Šikonja, M., & Bosnić, Z. (2008). Programiranje in algoritmi. Fakulteta za računalništvo in informatiko.
Programiranje v C++:
- cplusplus, cppreference
- Modern C++ for C Programmers
- Stroustrup, B. (2013). The C++ Programming Language.-4th. Addison-Wesley.
Dodatne vaje
Na spletu je kup strani, ki omogočajo reševanje programerskih in algoritmičnih nalog (po tematikah) s preverjanjem pravilnost: Codeforces, SPOJ, LeetCode, HackerEarth, HackerRank, ...