GMail
Ako pišete na fakultetske adrese sa svojih ličnih gmail adresa, računajte da vam odgovori verovatno neće biti isporučeni jer GMail često odbija poruke sa MATF servera poincare.
Alati za razvoj softvera
Nalozi na studentskom servisu alas
Proverite da su vam nalozi na servisu alas ispravni:- da možete da se ulogujete koristeći svoj aktuelni broj indeksa;
- da vam je korektno podešeno ime i prezime (po logovanju na sistem preko ssh,
pokrenite komandu `finger`). Ako vam ime i prezume nisu podešeni,
promenite ih sledećom komandom:
chfn -f "Ime Prezime" $USER
(stavite, naravno, svoje ime i prezime) - ako vam aktuelni broj indeksa ne odgovara korisničkom imenu sa alasa,
pored imena i prezimena stavite korisničko ime sa alasa
koje bi odgovaralo novom broju indeksa:
chfn -f "Ime Prezime (mi12345)" $USER
Snimci predavanja
Snimci predavanja ranijih godina:Čas 1: Uvod u kurs, GCC, BASH, Vim (nije sniman)
Fakultativno: Crazy code, crazy coders (W. E. Brown)
Čas 2: Uvod u Git
Čas 3: Git - nastavak
Čas 4: Git From the Bits Up (T. Berglund)
Čas 5: GDB
Čas 6: Git i GitLab
Čas 7: Paketi
Čas 8: Sanitajzeri
Čas 9: LCov, Hotspot, Git hooks, ...
Asistenti
Pragovi
Prag na ispitu je 30 poena, a na projektu je 15.
Ispit
Primer zadataka kakve možete očekivati na ispitu vidite ovde.
Napomena: Na ispitu pakete koji vam zatrebaju za zadatak ćete moći da instališete preko konana. Za ovaj primer iznad koristite normalan paket menadžer koji imate na sistemu (apt, yum...).
Projekti
Projekti se rade u timu, ali se ocenjuju pojedinačno. Maksimalan broj poena koji je putem projekta moguće osvojiti je 30. Ocenjuje se primena alata koji se obrađuju na predavanjima i vežbama.
Rok za predaju projekata
Projekte će biti moguće predavati u svkom ispitnom roku preko narednog linka:
https://forms.gle/8r8fbTR8qNzPSXtn8Poslednji dan za predaju projekta za svaki ispitni rok je termin ispita.
Studenti koji su prethodne godine radili projekat, neka se prijave preko istog ovog formulara i neka stave "od prethodne godine, XX poena" umesto linka ka kanban tabli (zamenite XX brojem poena koji ste imali na projektu).
Rezultati će biti objavljivani zajedno sa rezultatima ispita.
Informacije o izradi projekata
Možete da radite sledeće:
- Studenti koji u ovom semestru rade projekat iz RS ili RG, mogu da demonstriraju znanja "alata" na istom. Dozvoljeno je raditi i na tuđem projektu iz RS-a.
- Studenti koji su prethodne godine radili projekat iz RS, mogu da nastave sa razvojem tog projekta i pri tome da demonstriraju znanja "alata" na istom.
- Studenti koji žele, mogu umesto rada na fakultetskom projektu da izaberu neki aktivni projekat otvorenog koda pisan u jeziku C++ i da rade na njemu.
Zadaci
Na ličnom GitLab nalogu napraviti projekat koji će se zvati azrs-tracking i u njemu napraviti kanban tablu i kartice za svaki od zadataka koje planirate da uradite. Ovde ćete voditi evidenciju o progresu zadatka i opisivati način upotrebe alata koji su u tom zadatku korišćeni.
Dakle, napravite kanban kartice za svaki zadatak, i dok radite na zadatku dodajete komentare u samoj kartici šta ste i kako uradili. Dodajte i snike ekrana alata tokom upotrebe.
Dodatak: Na svaki zadatak stavite tag na koji se alat odnosi. Tagovi treba da budu napisani malim slovima, reči unutar taga razdvojene crticama. Na primer, za Git, tag bi bio git, za Clang Format bi bio clang-format, i slično.
Bitno: Svrha alata je da unaprede kvalitet nekog softvera. Tako da, kad alatom detektujete neki problem i napravite izmene nad izvornim kodom projekta nad kojim ste primenili alat, pošaljite merge zahtev, i link ka zahtevu takođe dodate kao komentar na kartici.
Sam repozitorijum azrs-tracking ne mora da sadrži ništa, -- kod projekta držite u repozitorijumu u kom radite, a izveštaji su unutar kanban tabele. Otvarate repozitorijum da biste mogli da napravite kanban tablu.
U svakom ispitnom roku će biti objavljivan formular preko kog predajete završen projekat (link ka kanban tabeli).
- Git (tag git)
- Koristiti neki poznati model grananja, pisati uredne commit poruke, koristiti merge zahteve prilikom pravljenja izmena na projektu.
- GDB (tag gdb)
- Koristiti dibager prilikom nalaženja neke greške u projektu na kome radite.
- GDB (tag gdb-command)
- Napraviti neku korisnu komandu za GDB (Python dodatak).
- CI (tag ci)
- Osmisliti i implementirati nekoliko neuobičajenih CI zadataka koji će se izvršavati kad god se nova revizija koda pošalje na server.
- git hook (tag git-hook)
- Osmisliti i implementirati bar 3 git hook-a.
- CMake (tag cmake)
- Napraviti ili unaprediti CMakeLists.txt za projekat.
- Valgrind (tag valgrind)
- istražiti funkcije koje troše više vremena nego što bi trebalo i rešiti problem.
- Gammaray (tag gammaray)
- U slučaju da projekat koristi Qt, ispitati aplikaciju -- korisnički interfejs i da li ima problema u istom.
- ClangTidy (tag clang-tidy)
- Automatski refaktorisati kod. Kombinovati sa alatom CMake za refaktorisanje celog projekta.
- ClangFormat (tag clang-format)
- Napraviti svoj format zasnovan na nekom već postojećem. Obezbediti da je ceo projekat formatiran tim stilom.
- Staička analiza koda (tagovi cppcheck, clang-tidy, clazy, clang-analyzer)
- Preko nekog od alata za statičku analizu koda naći 2-3 problema u projektu na kome radite. Ispravite problem i pošaljite zakrpu putem merge zahteva.
- Docker (tag docker)
- Pripremiti aplikaciju da se može pokrenuti kao Docker kontejner (dokerizovati). Bonus: kombinovati sa CI.
- GCov (tag gcov)
- Generisati coverage izveštaj za projekat.
- Ostali alati
- Na projektima će biti uračunato i ako ste isprobali i dokumentovali upotrebu i nekih alata koji nisu predavani na kursu.
Rezultati ranijih rokova
Ponavljanje ispita -- septembar 1
Indeks Ispit Projekat Ukupno Ocena mi15201 52 30 82 9 mi17088 36 15 51 6 mi17179 31 20 51 6 mi18095 34 20 54 6 mi18176 44 20 64 7 mi19026 59 25 84 9 mi19053 65 30 95 10 mi19059 47 30 77 8 mi19096 68 20 88 9 mi19143 60 25 85 9 mi19436 31 20 51 6 -------------- mi19255 0 mi19108 0
Rezultati -- septembar 1, prvi pokušaj
Indeks Ispit Projekat Ukupno Ocena mi18172 53 20 73 8 mi19325 46 30 76 8 mi20362 70 25 95 10Dorađeni projekti:
Indeks Ispit Projekat Ukupno Ocena mi17127 38 15 53 6 (jun 1) mi18107 31 25 56 6 (jun 1) mi19019 65 30 95 10 (jun 1) mi19208 56 15 71 8 (jan 1) mi19212 42 20 62 7 (jun 1) mi19242 55 25 81- 9 (jan 2) mi20369 53 20 73 8 (jun 1) mi21406 36 15 51 6 (jan 2) mi19108 20 mi19255 20 mi20359 25
Rezultati -- jun 1
Indeks Ispit Projekat Ukupno Ocena mi16407 25 0 (prag, privatan repozitorijum) mi17043 34 mi17127 38 mi17243 33 25 58 6 mi18095 22 (prag) mi18107 31 mi18127 50 21 71 8 mi18176 16 20 (prag) mi18213 31 20 51 6 (ispit -- jan 2) mi18268 33 20 53 6 (ispit -- jan 2) mi18271 34 25 59 6 mi18290 32 20 52 6 mi19009 36 20 56 6 (ispit -- jan 2) mi19019 65 20 85 9 (ne unositi za sada) mi19026 28 20 48 (prag) mi19049 30 30 60 7 mi19077 58 25 83 9 mi19087 47 25 72 8 (ispit -- jan 1) mi19117 47 20 67 7 mi19143 20 (prag) mi19212 42 mi19425 40 21 61 7 mi20362 26 (prag) mi20363 64 30 94 10 mi20369 53 mi21386 36 15 51 6 (ispit -- jan 1)
Jan 2
Ispit Projekat Ocena mi17088 5 15 (prag) mi17216 48 25 8 mi17284 35 25 7 mi18084 55 20 8 (iz jan 1) mi18293 35 25 7 mi19083 37 25 7 mi19090 47 25 8 (iz jan 1) mi19169 63 25 9 mi19247 46 30 8 mi20380 46 10 (prag, projekat) mi20363 30 mi19242 55 mi16004 42 mi16407 24 (prag) mi17179 18 (prag) mi17485 0 (prag) mi18213 31 mi18268 33 mi19009 36 mi19436 7 (prag) mi21406 36
Jan 1
Ispit Projekat Ocena mi17122 43 30 8 mi18064 52 20 8 mi18066 44 mi18084 55 mi18197 35 25 7 mi18213 21 mi18269 54 30 9 mi19087 47 mi19090 47 mi19201 70 25 10 mi19208 56 mi19221 54 30 9 mi21386 36 mi21406 11