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:

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/8r8fbTR8qNzPSXtn8

Poslednji 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:

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     10
Dorađ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