Fakultet tehničkih nauka

Predmet: Analiza i istraživanje softverskog koda (22.EAI045)

Osnovne informacije:
 
Kategorija Teorijsko-metodološki
Uža naučna oblast Primenjene računarske nauke i informatika
ESPB 6

Osposobljavanje studenata za praktičnu primenu tehnika, metoda i alata iz oblasti istraživanja i analize podataka i modela mašinskog učenja u cilju poboljšanja kvaliteta, pouzdanosti i održivosti softverskog proizvoda. Osposobljavanje studenata za praćenje najnovijih istraživačkih rezultata i samostalan stručni i naučno-istraživački rad u ovom domenu.

Student identifikuje probleme u softverskom inženjerstvu koji bi se mogli olakšati primenom veštačke inteligencije, mašinskog učenja i istraživanja i analize podataka. Student konstruiše adekvatne skupove podataka za obuku modela mašinskog učenja, što podrazumeva prikupljanje podataka, anotaciju, pretprocesiranje i reprezentaciju softverskog koda. Studenti je sposoban da analizira programski kod primenom klasičnih modela mašinskog učenja, modela dubokog učenja, primenom tehnika analize teksta i analizom promena koda kroz vreme. Studenti ume da samostalno istražuje trendove primene veštačke inteligencije na probleme softverskog inženjerstva.

(1) Upoznavanje sa problemima u oblasti softverskog inženjerstva koji bi se mogli adresirati primenom tehnika analize i istraživanja podataka: automatska detekcija indikatora loše dizajniranog koda (code smell), automatsko refaktorisanje (automatic refactoring), automatska detekcija i ispravka defekata, ranjivosti i grešaka (defect/vulnerability/bug detection) u kodu, predikcija truda uloženog u razvoj softverskog rešenja (effort estimation), pretraga softverskog koda u cilju pronalaska određene funkcionalnosti (feature location) i slično. (2) Prikupljanje skupa podataka, pretprocesiranje, i reprezentacija softverskog koda za različite probleme u domenu softverskog inženjerstva. Reprezentacija softverskog koda putem metrika, grafova, obeležja ekstrahovanih iz apstraktnog sintaksnog stabla, itd. Postojeći alati za ekstrakciju informativnih obeležja iz koda. (3)Analiza prirodnog jezika u softverskom kodu. Automatsko generisanje opisa (sumarizacija) softverskog koda. (4)Primena modela dubokog učenja na probleme u domenu softverskog inženjerstva. Automatsko učenje reprezentacije softverskog koda u vektorskom obliku (Code2Vec) (5)Enkodiranje promena u softverskom kodu. (6)Studije slučaja. Na praktičnoj nastavi se kroz praktičan rad sa postojećim softverskim alatima za trening standardnih prediktivnih modela mašinkog i dubokog učenja (Scikit-Learn, Keras/TensorFlow ), praktično primenjuju teorijski koncepti obrađivani na predavanjima. Neizostavni deo predmeta je samostalni studentski projekat, gde je ideja da student samostalno odabere problem iz domena softverskog inženjerstva koji se može unaprediti primenom veštačke inteligencije. Student potom temeljno istražuje literaturu na datu temu kako bi utvrdio prednosti i nedostatke do tada predloženih rešenja i na osnovu toga, kroz konsultacije sa predavačima, koncipirao predlog projekta. Po završetku projekta, student piše izveštaj.

Predavanja se izvode uz prateće prezentacije. Praćena su računarskim vežbama (praktičnom nastavom) koje će se oslanjati na programski jezik Python i druga odgovarajuća programska okruženja u cilju implementacije teorijskih koncelata obrađenih na predavanjima. Na praktičnoj nastavi primenjuje se i aktivno učenje kroz projekat i istraživanje relevantnih naučnih publikacija uz redovne konsultacije. Na predavanjima i na vežbama obrađuju se aktuelni problemi iz oblasti mašinskog učenja.

Autori Naziv Godina Izdavač Jezik
Martin, R.C., Grenning, J. and Brown, S. Clean architecture: a craftsman's guide to software structure and design (p. 352) 2018 Prentice Hall Engleski
Robert Martin Jasan kod (Clean Code) Priručnik za pisanje jasnih programa 2020 Mikro knjiga Srpski jezik
Goodfellow, I., Bengio, Y., Courville, A. Deep Learning 2017 MIT Press, Cambridge Engleski
Trask, A.W. Grokking deep learning 2019 Simon and Schuster Engleski
Predmetna aktivnost Predispitna Obavezna Broj poena
Predmetna aktivnost
Domaći zadatak
Predispitna
Da
Obavezna
Da
Broj poena
20.00
Predmetna aktivnost
Usmeni deo ispita
Predispitna
Ne
Obavezna
Da
Broj poena
30.00
Predmetna aktivnost
Predmetni projekat
Predispitna
Da
Obavezna
Da
Broj poena
50.00
Predavanja
Predavanja
Predavanja
Računarske vežbe
Računarske vežbe
Računarske vežbe