CS565 Mašinsko učenje
Cilj predmeta je da studentima na jednostavan način pomogne u ovladavanju primeni tehnika mašinskog učenja koristeći programski jezik Python i specijalizovanu biblioteku programskih kodova ThensorFlow. Predmet je kreiran za studente koji se bave programiranjem i razvojem softvera, a žele da nauče kako da razvijaju softver sa primenom metoda mašinskog učenja. Zato, predmet ne ulazi dublje u matematičku interpretaciju primenjenih koncepata mašinskog učenja, koja je za njih teža za razumevanje. U prvom delu nastave, fokus je na primeni Python-a, bez korišćenja specijalizovanih biblioteka, što omogućava studentima da bolje razumeju suštinu koncepata metoda mašinskog učenja. U drugom delu se koristi specijalizovana biblioteka TensorFlow, što omogućava brži i lakši razvoj inteligentnih softverskih sistema. Po položenom ispitu iz ovog predmeta, student će biti osposobljen da: Razume kako jednoslojne i višeslojne neuronske mreže rade; Primeni programski jezik Python bez specijalizovanih biblioteka, radi boljeg razumevanja kako neuronske mreže rade, tj. da shvati suštinu metoda učenja i dubokog učenja; Primeni TensorFlow biblioteku kodova u Python-u, u slučaju razvoja složenijih inteligentnih softverskih sistema koji primenjuju jednoslojne ili višeslojne neuronske mreže, a u oblastima klasifikacije slika, detekcije i prepoznavanja lica na slikama, detekcije objekata i poza, obrade prirodnog jezika i u analizi podataka; Vrši izbor tehnika u zavisnosti od vrste, prirode i kompleksnosti realnog problema; Primeni odgovarajuću tehniku koristeći programski jezik Python i TensorFlow biblioteku i tako reši posmatrani problem, odnosno, donese zaključak u vezi posmatrane pojave koji odgovara realnim uslovima u industriji.
CS520 Primenjeno duboko učenje
Razvoj inteligentnih softverskih sistema koji primenjuju modele tzv. dubokog učenja, u poslednje vreme doživljava buran razvoj i primenu u različitim oblastima, kao što su: Vizualno prepoznavanje objekata, obradu prirodnog jezika, obradu informacija u cilju učenja inteligentnog sistema, upravljanje autonomnim vozilima i dr. Cilj ovog predmeta je da upozna studente sa metodama dubokog učenja sa korišćenjem TensorFlow biblioteka Python rutina, čije korišćenje znatno olakšava razumevanje i primenu različitih metoda dubokog učenja, koje se u ovom predmetu izučavaju preko primera. Zbog toga, na minimum je svedeno korišćenje složenog matematičkog aparata, koji se često koristi u udžbenicima i u radovima o dubokom učenju, te je predmet na ovaj način prilagođen potrebama studenata softverskog inženjerstva i IT-a. Po završetku nastave na predmetu, student će moći da: Primenjuje Python i TensorFlow u razvoju inteligentnog softvera koji primenjuje metode dubokog učenja; Razume i koristi metode konvolucionih neuronskih mreža za prepoznavanje objekata, slika i dr; Razume i koristi povratne neuronskih mreža (RNN) i konvolucionih neuronskih mreža (CNN) u cilju obrade i razumevanja prirodnog jezika; Razume i koristi autoenkoder i generativne suparničke mreže (GAN); Razume primenu metoda dubokog učenja, koje se primenjuju u upravljanju autonomnim vozilima.
SE535 Inteligentni agenti
Agenti su autonomni računarski programi, roboti, ljudi, itd. Agenti deluju u nekom okruženju koje mogu da osmatraju i u kome mogu ostvariti ciljeve izvođenjem određenih akcija. U predmetu se izučava problem optimalnog delovanja softverskog agenta da bi realizovao postavljenje ciljeve. Cilj predmeta je da studentima pruži širok uvod u novo i brzo rastuće polje računarstva, zasnovanog na agentima. Predmet uvodi studente u ključne koncepte i modele u ovoj oblasti, baveći se i pojedinačnim agentima i njihovim interakcijama. Teme koje se obrađuju u okviru predmeta su: Komunikacija agent-agent, automatizovano pregovaranje i argumentacija u kooperativnim i konkurentskim okruženjima, učenje i planiranje sa više agenata, automatizovano donošenje odluka zasnovano na mehanizmima kao što su glasanje i aukcija, kao i razvoj i inženjering sistema zasnovanih na agentima. Nakon uspešno završenog ovog predmeta, student će moći da pokaže znanje i razumevanje za: Glavne modele agenata koji se danas koriste i njihovo utemeljenje u istraživanju veštačke inteligencije; Motivaciju za odgovarajuću upotrebu računarstva zasnovanog na agentima; Glavne okvire za donošenje odluka agenata za kooperativno i konkurentno okruženje; Intelektualne i istraživačke veštine specifične za predmet. Nakon uspešnog završetka ovog predmeta student će moći da: Analizira i kritikujte učinak raspoređenog agenta, postavi agenta u simulirano okruženje, u skladu sa dobijenom zadatkom.
CS525 Kompjuterski vid
Cilj predmeta je upoznavanje studenata sa principima, načinima implementacije i primenom konvolucionih neuronskih mreža za vizuelno prepoznavanje. Kompjuterska vizija je postala sveprisutna u našem društvu sa aplikacijama za pretraživanje, razumevanje slika, mapiranje, ima primenu u dronovima i autonomnim vozilima. Osnovu ovih primena čine zadaci vizuelnog prepoznavanja kao što su klasifikacija slika, lokalizacija i detekcija. U ovom predmetu će poseban akcenat biti na dubokom učenju za kompjutersku viziju. Studenti će biti osposobljeni da rešavaju probleme vizuelnog prepoznavanja korišćenjem konvolucionih neuronskih mreža u Python programskom jeziku, uz korišćenje biblioteke TensorFlow. Po završetku nastave na predmetu, studenti će moći da: Razumeju, implementiraju i primene konvolucione neuronske mreže za vizuelno prepoznavanje; Razumeju najnovija istraživanja u vizuelnom prepoznavanju i kompjuterskoj viziji; Implementiraju i razvijaju sopstvene neuronske mreže; Razumeju i primenjuju poznata rešenja na probleme kompjuterskog vida u realnom svetu.
SE560 Semantičke veb tehnologije
Predmet razmatra tehnologije semantičkog veba koje je preporučio W3C konzorcijum i koje se već primenjuju za razvoj inovativnih višejezične proizvoda i usluga u javnom sektoru, bioinformatici, energetici, transportu, itd. Cilj je upoznati studente sa inovativnim metodama predstavljanja i obrade podataka, alatima za razvoj semantičkih veb servisa i trenutno stanje u istraživanju semantičkog veba. Nakon odslušanog predmeta, studenti će u potpunosti razumeti princip semantičkog veba, sposobnost za primenu standardnih W3C rečnika i postojećih alata slobodnog otvorenog koda. Dodatno, ovladaće tehnikama za projektovanje i razvoj semantičkih veb rešenja (XML/RDF/OWL/SPARQL).
CS541 Inteligentni sistemi e-učenja
Cilj predmeta je da osposobi studenta da može da projektuje inteligentni sistem za elektronsko učenje i da može da primeni ovakav sistem u kreiranju svog onlajn predmeta na pogodnoj platformi za e-učenje. Pod inteligentnim sistemom e-učenja se ovde podrazumeva sistem za e-učenje koji je sposoban da se prilagodi specifičnim potrebama i mogućnostima svakog studenta posebno i da na taj način, tj. primenom principa personalizovane nastave, obezbedi njegovo zadovoljstvo i veće efekat nastave, jer se studentu obezbeđuje nastava i učenje ”po njegovoj meri”, tj. u skladu sa njegovim interesovanjem i mogućnostima. Program predmeta obuhvata primenu inteligentnih agenata, a posebno razvoj inteligentnih tutora koji obezbeđuju studentu personalizovane nastavne materijale i odgovarajući stil učenja. Posle uspešnog završetka nastave na ovom predmetu, student će biti osposobljen da: Razume različite metode i tehnike personalizovanog e-učenja; Razvije, uz pomoć odgovarajuće razvojne platforme, prototip sistema za e-učenja koji koristi sistem tutora.
SE520 Primenjeni distribuirani sistemi
Cilj predmeta je obezbeđivanje visokog nivoa razumevanja i primene naprednih koncepata distribuiranih računarskih sistema. Predmet pruža jedan zaokružen niz tematskih sadržaja: Heterogenost, sigurnost, transparentnost, konkurentnost, otpornost na greške; Principi umrežavanja; Protokol zahtev-odgovor; Daljinski pozivi procedura; Distribuirani objekti; Arhitekture srednjeg softvera; Bezbednosni i protokoli za autentifikaciju; Distribuirani sistem datoteka; Usluge imena; Globalna stanja u distribuiranim sistemima; Koordinacija i dogovor; Kontrola transakcija i konkurentnosti; Distribuirane transakcije; Replikacija. Ovi tematski sadržaji predstavlja solidnu osnovu za dalje nadogradnje i primene u skladu sa daljim razvojem primene distribuiranih sistema, koji se konkretnije izučavaju u drugim predmetima studijskog programa. Nakon odslušanog predmeta student: Razume, projektuje i razvija arhitekture osnovnih distribuiranih sistema i aplikacija; Primenjuje osnovne principe razvoja distribuiranih sistema; Razume i koristi objektno-orijentisane distribuirane sistema koji se zasnivaju na primenu tzv. srednjeg softver (middleware) i odgovarajućih tehnoloških platforma, razume, koristi i razvija napredne API servise distribuiranih sistema; Je osposobljen za otkrivanje, balansiranje opterećenja, oporavak od kvarova, metriku i nadgledanje distribuiranih sistema, razume svojstva zajedničkih elemenata koji se koriste pri projektovanju distribuiranih sistema; Razume složenost razvoja distribuiranih sistema, kao što su otkazi računara i mreža, konkurentnost, konsistentno, otkazi, i dr.
SE525 DevOps razvoj i evolucija softvera
U prvom delu predmeta, studenti upoznaju osnove infrastrukture važne za korišćenje DevOps alata (virtualizacija, umrežavanje, klaud i bezbednosna infrastrukture), ako se sa tim nisu ranije upoznali. U drugom delu predmeta, studenti uče teoriju osnovnih DevOps koncepata, kao što su: Infrastruktura kao kod, upravljanje konfiguracijom, proces implementacije, arhitektura mikroservisa, upravljanje parametrima konfiguracije, stvari koje se dešavaju nakon postavljanja servisa, oporavak od katastrofe i bezbednost orijentisana na razvoj. Analiziraju se i nekoliko studija slučaja koje se odnose na specijalizovane oblike DevOps-a: Mašinsko učenje i primena glavnih DevOps alata. Po završetku nastave na predmetu, student će moći da: Objasni osnovne koncepte klaud infrastrukture i infrastrukture bezbednosti, navede i objasni osnovnu teoriju DevOps-a, objasni osnovne klase DevOps alata, koristi Internet da bi naučio instalaciju i korišćenje potrebnih alata.
SE540 Razvoj IoT aplikacija
Cilj ovog predmeta je da pripremi studente sa veštinama i alatima da razvijaju IoT aplikacije i da u potpunosti koriste IoT mogućnosti. Predmet upoznaje studente sa osnovnim IoT konceptima iz perspektive razvoja softvera. Predmet navodi osnovnu arhitekturu punog steka za IoT, opisuje različite razvojne tehnologije u svakom IoT sloju, objašnjava primenu modela mašinskog učenja na nivou Edge-a, opisuje modele mašinskog učenja i veštačke inteligencije u IoT aplikacijama, predstavlja slučajeve korišćenja interneta stvari (IoT) iz sektora poljoprivrede, zdravstva, mobilne industrije, objašnjava razvoj IoT rešenja iz perspektive upravljanja proizvodima, opsežno pokriva bezbednost i primenljive modele pretnji kao deo IoT steka. Po završetku nastave na predmetu, studenti stiču znanja koja im omogućavaju da: Steknu radno znanje o bežičnim senzorskim mrežama (VSN), uključujući topologije, podatke senzora, bežične tehnologije koje se koriste u senzorskim čvorovima; Nauče kako da napravite sistem oko IoT uređaja zasnovanog na senzorima; Od samog početka nauče kako da koristite MQTT kao komponentu za snimanje podataka senzora; Primene mašinsko učenje na Edge-u, kao i neuronske mreže za klasifikaciju zvuka, projektovanje i implementacija fazi logike i podržanog učenja.
SE545 Agilne metode razvoja softvera:
Metode agilnog razvoja odnose se na brojne pristupe razvoja softvera koje ne primenjuju tzv. planski vođen razvoj softvera, kao što je na primer, metod vodopada. Ove metode se fokusiraju na razvoj softvera, a ne dokumentacije, tako da se u intervalima od 3-4 nedelje, isporučuju nove verzije softvera, bez projektne dokumentacije. Ovaj predmet će, najpre, upoznati studente sa principima tzv. vitkog (lean) razvoja softvera, a onda i sa tri dobro poznate agilne metode: Ekstremno programiranje, skram (Scrum), i kanban (Kanban).Po završetku nastave na predmetu, studenti moći da: Razumeju principe vitkog razvoja softvera, primene preporuke za primenu metoda ekstremnog programiranja, primene osnove koncepte skram (Skrum) agilne metode razvoja softvera, primene sve aktivnost kanban (Kanban) projekta razvoja projekta.
SE575 Obezbeđenje kvaliteta softvera
Ovaj predmet se bavi osiguranjem i kontrolom kvaliteta softvera. Predmet uvodi studente u različite alate i tehnike za osiguranje kvaliteta. Cilj ovog predmeta je da studenti shvate da se visoka vrednost kvaliteta softvera ne postiže bez uključivanja i drugih komponenti, kao što su bezbednost, pouzdanost, inspekcija i revizija softvera. Na kraju, razmatraju se i izazovi obezbeđenja kvaliteta softverskih sistema budućnosti, kao što su: Testiranje u digitalnom dobu, testiranje autonomnih sistema, testiranje veštačke inteligencije, testiranje DevOps-a, testeri softvera sledeće generacije, budućnost testiranja i dr. Po završetku nastave na predmetu, studenti će moći da: Razumeju kvalitet softvera, odnosno, kako ga definisati, analizirati i izmeriti; Izaberu odgovarajući analitički alat/tehniku za datu situaciju i da istraže kako da analiziraju rezultate; Razumeju prednosti i slabosti različitih tehnika obezbeđenja kvaliteta, kao što su testiranje softvera, statička analiza, pregled koda i demonstracija; Nauče da prikupljaju, upravljaju i procenjuju metriku kvaliteta; Analiziraju i verifikuju različita svojstva softvera uključujući i bezbednost, pouzdanost i performanse; Steknu iskustvo rada sa stvarnim alatima za osiguranje kvaliteta uključujući alate za statičku analizu, okvire za testiranje softvera i alate za merenje kvaliteta softvera.
SE570 Inženjerstvo zahteva za softver i sisteme
Ovaj predmet ima za cilj da pruži sveobuhvatan tretman teorijskih i praktičnih aspekata otkrivanja, analize, modeliranja, validacije, testiranja i pisanja zahteva za sisteme svih vrsta, sa namernim fokusom na sisteme koji intenzivno koriste softver. Ovaj predmet izučava i različite formalne metode, društvene modele i savremene zahteve, kao i tehnike pisanja zahteva koje mogu da budu korisne inženjeru praktičaru. Sistematično utvrđivanje zahteva je neophodno u slučaju velikih ili kritičnih softverskih i informacionih sistema, koji se najčešće razvijaju tzv. planom vođenim metodama razvoja (npr. metod vodopada). Po završetku nastave na predmetu, studenti će moći da: Komuniciraju sa potencijalnim korisnicima u cilju prikupljanja podataka o radnim kontekstima, analiziraju marketinške i korisničke podatke i da ih unese u projektno rešenje sistema, identifikuju sukobe zahteva, a zatim da ih pomire koristeći funkcionalne alternative.
SE580 Skalabilni softvereski sistemi
Ovaj predmet pokriva principe projektovanja i strategije potrebne za projektovanje i implementaciju skalabilnih distribuiranih sistema sa intenzivnim podacima. U ovom domenu inženjeri, ne samo da moraju da znaju kako da projektuju sisteme koji su inherentno skalabilni, već da to urade na način koji takođe podržava visoku dostupnost, pouzdanost i performanse. S obzirom na veliku distribuiranu prirodu ovih sistema, osnovni koncepti distribuiranih sistema kao što su doslednost, vreme i sinhronizacija su takođe važni. Ovi sistemi uglavnom rade danonoćno, imaju komponente koje rade na različitim čvorovima i platformama, tako da predmet stavlja naglasak na primenu i operativne probleme. Po završetku nastave na predmetu, studenti će moći da: Primene HTPP servise koji su izvorni u klaudu, sa asinhronom komunikacijom vođenom događajima, i SQL i NoSQL skladištima podataka, kroz izgradnju sistema sa sve većim očekivanjima; Razumeju šta je potrebno za projektovanje sistemskih svojstava u distribuiranim sistemima sa intenzivnim podacima, sa fokusom na interoperabilnost, skalabilnost, dostupnost i pouzdanost, labavo povezivanje, promenljivost i distribuirane podatke, koji su u stanju da međusobno deluju između ovih opcija prilikom primene nekoliko projektantskih šablona i tehnologija; Projektuju i implementiraju skalabilne distribuirane sisteme sa intenzivnim podacima.
SE573 Projektovanje programskih interfejsa aplikacija (API)
Programski interfejsi aplikacija (API) su važni sastojci savremenih softverskih sistema, jer povezuju sve njihove komponente, a i komunikaciju sa korisnicima sistema. Ovaj predmet pokriva sve aspekte projektovanja i razvoja programskih interfejsa, od dobijanja zahteva za projektovanje, do njegove isporuke korisnicima. Cilj ovog predmeta je da nauči studente kako da projektuju i primene, a kasnije i menjaju, programske interfejse aplikacija (API). Na predavanjima je fokus na projektovanju programskih interfejsa, a na vežbama je fokus na njihovoj implementaciji u Javi. Zbog primene sve većeg broja programskih interfejsa u savremenim softverskim sistemima, koji sadrže sve veći broj komponenti, posao projektanta softvera koji je specijalizovan za projektovanje programskih interfejsa, postaje sve traženiji. Ovaj predmet je namenjen studentima koji žele da postanu i projektanti programskih interfejsa, koji se sve više traže na tržištu. Po završetku nastave na predmetu, studenti će moći da: Razumeju značaj, potrebe i zahteve za programskim interfejsima, projektuju, testiraju i implementiraju projektovane programske interfejse (API), dorađuju i menjaju postojeće programske interfejse, u skladu sa promenama u softverskom sistemu.
SE565 Upravljanje projektom razvoja softvera
Razvoj softvera velikog obima zahteva sposobnost upravljanja resursima (ljudskim i računarskim) kroz kontrolu procesa razvoja. Ovaj predmet je orijentisan na širinu, osmišljen da pomogne tehnički obučenim softverskim inženjerima da steknu znanja i veštine, neophodne za vođenje projektnog tima, razumeju odnos razvoja softvera i celokupnog projektnog inženjeringa, procene vreme i troškove i razumeju softverski proces. Priroda razvoja softvera je dovoljno jedinstvena da zahteva specijalizovane tehnike upravljanja, posebno u oblastima procene i zakazivanja. Specifičnost ovog predmeta je namera da se pored upravljanja projektima koji se razviju klasičnim metodima, tj. upravljani planom, obuhvati i upravljanje projektima koji se razvijaju agilnim metodima. Po završetku nastave na predmetu, studenti će moći da: Analiziraju elemente softverskog projekta da bi izvukli sveobuhvatne ciljeve projekta; Koriste inherentne i izvedene stavke izvučene iz artefakata projekta za kreiranje efektivnih planova projekta; Steknu veštinu primene različitih tehnika upravljanja projektima u kontekstu softverskog projekta.
OM545 Preduzetništvo i inovacije
Stvaranje novih preduzeća, osvajanje novih tržišta, povećanje organizacione efektivnosti dešavaju se kroz inovacije, transformaciju procesa – ili oboje. Nove tehnologije, procesi, konkurencija i globalizacija primoravaju preduzetnike i postojeće firme da se distanciraju od poznatog i neguju inovacije i agilnost. Ovaj predmet ispituje uspešne strategije, poslovne modele, okvire, finansiranje, barijere i rizike za uvođenje inovativnih proizvoda i usluga. Teme uključuju inovacije poslovnog modela, strateško liderstvo, inovacije usmerene na ljude i na dizajn, znanje i upravljanje promenama. Po završetku nastave na predmetu, studenti će moći da: Razviju veštine i uvide za procenu, artikulisanje, usavršavanje i predstavljanje novog proizvoda ili usluge, ili kao početni posao ili kao nova inicijativa u okviru postojeće firme, primene znanje koje je neophodna za primenu nove tehnologije na tržištu.