CS202 Objektno – orijentisano programiranje 2
Uvod u napredne koncepte u programiranju sa aspekta objektno – orijentisanog programiranja. Predmet upoznaje studente sa konceptima upravljanja greškama i izuzecima, višenitnosti, rada sa GUI i upravljanjem događajima, rad sa strukturama podataka i generičkim tipovima podataka, mrežnog programiranja, kreiranjem Java aplikacija nad bazama podataka, kao i internacionalizacijom i lokalizacijom. Student se osposobljava da samostalno razvija srednje i složene programe u Javi. Teme koje se obrađuju na predmetu su: Razvoj i upravljanje događajima u GUI primenom napredne Java-FX platforme; Primena niti i pisanje višenitnih programa kroz konkurentno i paralelno programiranje; Rukovanje greškama i izuzecima u Java programima; Rad sa generičkim klasama i metodama; Rad sa strukturama podataka u Javi: liste, redovi, stekovi, setovi i mape primenom Java Collections Framework; Integrisanje SQL upita u Java programe i kreiranje Java aplikacija nad bazama podataka – standardni pristup i ORM; Lokalizacija i internacionalizacija u Javi; Kreiranje programa sa složenim nivoom kompleksnosti.
CS215 Diskretne strukture
Predmet Diskretne strukture ima dva osnovna cilja. Prvi je upoznavanje sa osnovnim konceptima i tehnikama koje se tiču diskretnih matematičkih struktura, posebno sa onim koje imaju neposrednu primenu u računarstvu. Drugi cilj je upoznavanje studenata sa metodama matematičkog i logičkog zaključivanja.
Studenti će biti osposobljeni da rešavaju probleme bazirane na stečenim znanjima koja uključuju osnove matematičke logike, osnove teorije skupova, relacije, funkcije, algoritme, osobine celih brojeva, kongruencije, rekurentne relacije, teoriju grafova i algoritme sa njima, strukture za dinamičko skladištenje podataka, relacije uređenja, mreže, matematičke strukture, linearne prostore i preslikavanja. Predmet obuhvata sledeće teme: Osnove matematičke logike; Osnove teorije skupova: Operacije nad skupovima, konačni, prebrojivi i neprebrojivi skupovi; Kardinalnost skupova; Klase skupova, partitivni skup i particije; Matematička indukcija; Relacije: Tipovi relacija, relacije ekvivalencije, relacije uređenja; Funkcije: 1-1, NA i invertibilne funkcije, primeri funkcija, aritmetika po modulu M, Algoritmi: Osnovni pojmovi, rekurzivno definisane funkcije, numerički algoritmi; Osobine celih brojeva: Osnovni pojmovi, fundamentalna teorema Aritmetike; Dobro uređenje; Algoritam deljenja; Deljivost, prosti brojevi, NZD i NZS, Euklidov algoritam; Kongruencije: Uzajamno prosti brojevi, fundamentalna teorema aritmetike, relacije kongruencije, jednačine kongruencije; Rekurentne relacije: Linearna rekurentna relacija sa konstantnim koeficijentima, rešavanje homogene linearne rekurentne relacije drugog reda; Grafovi: Strukture za dinamičko skladištenje podataka, putevi u grafu, izomorfni i homeomorfni grafovi, komponente povezanosti, Ojlerovi i Hamiltonovi putevi, težinski, potpuni, regularni, bipartitni grafovi, planarni grafovi, drveta, algoritmi sa grafovima, bojenje grafova; Relacije uređenja: Parcijalno uređeni skupovi, topološko sortiranje; Ekstremni elementi; Mreže; Modelovanje i mogućnost primene specijalnih grafova u različitim oblastima računarskih nauka.
AD323 Unreal okruženje za razvoj video igara
Predmet ima za cilj da studente upozna sa osnovama razvoja 3D video igara primenom grafičkog skript jezika Blueprints, u razvojnom okruženju Unreal Engine. Studenti se najpre upoznaju sa osnovnim alatima pomenutog razvojnog okruženja, a nakon toga upoznaju se sa njegovim naprednim funkcijama. Sledeći cilj je da se upoznaju sa načinom kreiranja nivoa, dodavanja materijala objektima, animacijama i veštačkom inteligencijom neprijatelja. Na kraju, studenti će biti osposobljeni da stečeno znanje primene u razvoju 3D video igara. Na predmetu se izučavaju sledeće teme: Uvod u razvoj video igara primenom „Unreal“ okruženja; Osnove Unreal sistema; Alati za razvoj 3D igare u „Unreal“ okruženju; Scene i fizika; Učitavanje aseta; Sudari; Kontrola kamere; Kreiranje mehanike igre u „Unreal“ okruženju; Veštačka inteligencija neprijatelja.
SE201 Uvod u softversko inženjerstvo
Cilj predmeta je da studenti razumeju i ovladaju metodima i tehnikama razvoja profesionalnog softvera, realizacija sledećih nastavnih jedinica: softverski procesi, agilni razvoj softvera, inženjerstvo zahteva, modelovanje sistema, projektovanje arhitekture softvera, projektovanje i implementacija softvera, testiranje softvera i njegova evolucija. Poseban cilj predmeta je osposobljavanje studenta za samostalan rad pri izradi softverskog proizoda. Zadaci koje ovaj predmet treba da ostvari je ovladavanje teorijskim, metodološkim i praktičnim znanjima razvoja softverskog inženjeringa, koja se primenjuju kroz upotrebu savremenih projektantskih alata.
Predmet osposobljava studente da razviju jasne, koncizne i formalizovane zahteve u skladu sa realnim potrebama korisnika, da primene principe projektovanja distribuiranih sistema, da izvrše analizu i projektovanje objektno-orijentisanih sistema primenom UML modela i da primene tehnike merenja kvaliteta softvera. Teme koje se izučavaju na predmetu su: Softversko inženjerstvo i njegovo mesto kao inženjerska disciplina; Softverski procesi: modeli procesa, model vodopada, aktivnosti i specifikacija procesa; Faze softverskih procesa; Inkrementalni razvoj; Spiralni model razvoja; RUP; Agilni razvoj softvera: agilne metode, ekstremno programiranje, upravljanje agilnim projektima i promena agilnih metoda u razvoju softvera; Inženjerstvo zahteva: funkcionalni i nefunkcionalni zahtevi, specifikacija i dokumenti sa zahtevima; Procesi inženjerstva zahteva, prikupljanje i analiza zahteva, scenariji UML slučajeva korišćenja, validacija zahteva i upravljanje zahtevima; Modelovanje sistema sa UML: konteksni modeli, modeli interakcija, strukturni modeli, modeli ponašanja i modelima vođen razvoj softvera; Projektovanje arhitekture softverskog sistema: arhitektonski pogledi, slojevita arhitektura, arhitektura skladišta podataka, arhitektura cevi i filtera, klijent-server arhitektura, sistemi transakcione obrade i informacioni sistemi; Projektovanje i implementacija softvera: projektovanje OO sistema primenom UML, projektovanje arhitekture softvera, modeli projektovanja, šabloni projektovanja softvera, implementacija softvera; Testiranje softvera: testiranje u razvoju, testiranje jedinice, testiranje komponenti i testiranje sistema; Evolucija softvera: procesi evolucije i njihova dinamika, održavanje sistema, reinženjering softvera, preventivno održavanje i upravljanje starim sistemima; Agilni razvoj softvera; Upravljanje projektima razvoja softvera.
Izborni predmet 3
AD356 3D modelovanje (Maya)
Cilj predmeta je upoznavanje studenata sa osnovama modelovanja u 3D softverskom paketu Autodesk Maya. Oblikovanje formi organskih i mehaničkih karakteristika upotrebom alata i tehnika koje su na raspolaganju unutar ovog softverskog paketa. Student stiče veštine, ovladava tehnikama i znanjima neophodnim za oblikovanje forme 3D modela, njegove postavke unutar 3D prostora, elementarnom materijalizacijom, kao i osvetljavanjem generisanim svetlosnim izvorima. Realizovani modeli mogu biti samostojeći – tretirani kao realni predmeti svojevrsnog (industrijskog) dizajna, ali i višenamenski (animacija ili 3D računarske igre). Predmet sadrži predavanja koja su koncipirana kroz demonstracije “korak po korak“ sa konkretnim ciljevima i zadacima, kao što su karakter dizajn ili dizajn industrijskog/mehaničkog modela (model prevoznog sredstva), upotpunjena osvetljenjem i teksturisanjem istih. U svrhu postizanja maksimalnog iskorišćenja kreativnog potencijala studenata značajan segment posvećen je dizajnu i skiciranju, sa ciljem kreiranja modela koji su estetski zadovoljavajući, a istovremeno funkcionalni i upotrebljivi u animaciji.
IT390 Profesionalna praksa i etika
Usvajanje relevantnih teorijskih i praktičnih saznanja iz poslovne prakse i etike koja omogućavaju adekvatno delovanje u poslovnom okruženju. Spoznavanje da primena etike u poslovanju daje sigurnost i budućnost razvoja svakog poslovnog sistema. Uočavanje specifičnosti koje profesionalna praksa i etika imaju u oblasti informacionih tehnologija. Na predmetu se izučavaju sledeće teme: Uvod u etiku kao nauku o moralu; Uvod u poslovnu i profesionalnu etiku; Odgovornost pojedinca na radnom mestu; Zaštita ljudskih prava na radnom mestu; Korporativna društvena odgovornost; Etičke vrline i načela u poslovanju; Liderstvo; Preduzetništvo; Računarska etika; Aktuelna pitanja profesionalizma u oblasti informacionih tehnologija; Privatnost u doba informaciono-komunikacionih tehnologija; Intelektualna svojina i etika; Etika i visokotehnološki kriminal; Etičke dileme i nedoumice u poslovanju; Prevencija, prepoznavanje i sprečavanje mobinga.
CS230 Distribuirani sistemi
Na ovom predmetu studenti se uvode u koncepte organizacije i razvoja distribuiranih sistema primenom Java Enterprise Edition platforme i njihovo razlikovanje od sistema sa centralizovanom arhitekturom. Upoznavanje sa različitim tipovima distribuiranih sistema. Upoznavanje sa različitim tehnikama i alatima baziranih na najznačajnijoj JEE platformi za razvoj i održavanje distribuiranih sistema. Upoznavanje koncepta distribuiranog lakog klijenta kroz tehnologije JSP i JSF. Upoznavanje sa servlet tehnologijom kao osnovom savremenog razvoja distribuiranog softvera. Upotreba udaljenih poziva kroz implementaciju putem: Veb servisa, JMS sistema kao zamene za zastarele CORBA funkcionalnosti, EJB zrna u kombinaciji sa udaljenim – distribuiranim interfejsima; Kreiranje i primena REST i SOAP servisa u distribuiranim aplikacijama; Upoznavanje sa servisima u oblaku za podršku distribuiranim aplikacijama; Teme koje se obrađuju na predmetu su: Sistemi sa distribuiranom i centralizovanom arhitekturom – upoznavanje, poređenje, prednosti i nedostaci; Primeri sistema sa distribuiranom arhitekturom; Platforme za razvoj softverskih rešenja sa distribuiranom arhitekturom – JEE; Servlet tehnologija kao osnov razvoja distribuiranih sistema baziranih na JEE platformi; Razvoj distribuiranog lakog klijenta baziranog na primeni servlet tehnologija: JSP i JSF; Primena CDI zrna za razvoj serverske strane distribuiranog softverskog rešenja; Udaljeni pozivi primenom JMS sistema kao zamene za zastarele CORBA funkcionalnosti; Kreiranje i upotreba različitih tipova EJB zrna u kombinaciji sa udaljenim – distribuiranim interfejsima; Primena veb servisa u distribuiranim sistemima; Primena servisa u oblaku u distribuiranim sistemima.
CS365 Interakcija korisnika i testiranje igara
Predmet ima za cilj da upozna studenta sa korisničkim interfejsom video igara, kao i sa strukturom i tehnikama njegovog razvoja. Koristeći Unity razvojno okruženje studenti će stečeno znanje primeniti u izradi korisničkog interfejsa. Sledeći cilj će biti da se studenti upoznaju sa osnovnim tehnikama testiranja video igara i kako se obezbeđuje potreban kvalitet video igre. Na predmetu se izučavaju sledeće teme: Uvod u razvoj video igara; Interakcija igrač – svet igre; Fizički i virtualni interfejs igrača; Osnove kreiranja korisničkog interfejsa; Komponente za interakciju korisničkog interfejsa; Rad sa skriptama; Kvalitet softvera; Faze testiranja softvera; Proces testiranja video igara.
CS361 Veštačka inteligencija u igrama
Cilj predmeta je upoznavanje studenata sa osnovama i primenom veštačke inteligencije u igrama, uključujući tehnike: stanja (mašine konačnog stanja), vođenja, komunikacije agenata, pronalaženja putanje u svetu igre i primenu algoritama veštačke inteligencije u cilju donošenja odluka agenta. Studenti se upoznaju sa implementacijom-programiranjem izučavanih tehnika u jeziku C++ i njihovom primenom u rešavanju praktičnih problema, kroz razvoj računarskih igara. Na predmetu se izučavaju sledeće teme: Pojam igara, pregled najčešće korišćenih algoritama u svetu igara; Mašinsko učenje u igrama; Konačne mašine stanja, agenti i njihova percepcija u svetu igre; Tehnike vođenja; Inteligentni sistemi; Matematika igara, vektori i analitička geometrija, optimizacija; Fizika igara – 2D sile, ubrzanja, brzine, pozicija; AI modeliranje u igrama; Navigacija, nastanak i oblast primene grafova; Mape, reprezentacija sveta igre pomoću grafova; Nalaženje putanja u igrama, implementacija grafova, pretraga u dubinu (depth first search – dfs), pretraga u širinu (breath first search – bfs); Primena veštačke inteligencije u Unity gejm endžinu; Neuronske mreže u igrama, višeslojne neuronske mreže, obučavanje i implementacija višeslojnih neuronskih mreža, pojačano učenje (reinforcement learning); Upoznavanje sa OpenAI Gym paketom.
Izborni predmeti 4 i 5
IT355 Veb sistemi 2
Predmet uvodi studente u oblast projektovanja i programiranja serverske strane. Izučavaju se veb klijent-server i višeslojne arhitekture, servisno orijentisana arhitektura, aspekt-orijentisano programiranje (AOP), inverzija kontrole sa ubacivanjem zavisnih komponenti (DI), J2EE tehnologija i druge savremene tehnike. Kroz ovaj predmet student će biti upoznat sa Java baziranim okvirom za projektovanje i programiranje složenih veb aplikacija – Spring okvirom, tehnikama osiguranja bezbednosti veb sistema, tehnikama i alatima testiranja veb aplikacija. Posebno, cilj predmeta je savladavanje sledećih Spring tema
Savladavanje osnovnih i naprednih Spring IoC koncepata, savladavanje tehnika aspektno-orijentisanog programiranja u Springu, rešavanje problema bezbednosti veb aplikacija u Springu, upravljanje veb tokovima u Springu, rad u Spring MVC okviru, savladavanje Spring REST servisa, rad sa bazama podataka (Data Access) u Springu kroz okvire Spring JDBC, Spring ORM i Hibernate, testiranje veb aplikacija kroz Spring podršku za JUnit4/5 i TestNG6, rad sa sistemskim porukama u Spring, primena Spring Boot okvira – a za olakšavanje podešavanja i razvoja Spring aplikacija, integracija okvira Angular sa Springom. Teme koje se obrađuju na predmetu su: Uvod u Spring okvir; Spring IoC kontejner; Aspektno – orijentisano programiranje u Spring okviru; JSP i JSTL; Spring MVC; Uvod u Spring Boot; Spring Boot napredni koncepti – napredni alati i tehnologije; Objektno relaciono mapiranje u Spring okviru; Spring REST; Spring Security podokvir; Spring Messaging; Testiranje aplikacija u Spring okviru; Integracija Spring (Boot) i Angular; Razvoj složenih klijent – server aplikacija.
CS120 Organizacija računara
Kroz ovaj predmet studenti se upoznaju sa osnovnim pojmovima i principima iz oblasti slojevite organizacije računarskih sistema. Studenti se najpre uvode u referentne modele savremenih računarskih sistema koja uključuje procesore, primarnu i sekundarnu memoriju, kao i ulazno/ izlazne uređaje i magistrale koje povezuju ostale podsisteme. Studenti se zatim upoznaju sa svim slojevima organizacije računara, i to: sloj digitalne logike, sloj mikroarhitekture, sloj skupa instrukcija i asemblerskog jezika, kao i sloj arhitekture paralelnih računarskih sistema, koja uključuje paralelizam na čipu, ko-procesore, multiprocesore i multiračunare, ali i grid računare. Na predmetu se obrađuju sledeće teme: Struktuirana organizacija računara; Binarna aritmetika; Jednostavna digitalna logička kola; Složena digitalna logička kola; Centralni procesor; Primarna i sekundarna memorija; Ulazno/izlazni uređaji; Magistrale i interfejsi; Mikroarhitektura procesora; Poboljšanje performansi; ISA skup instrukcija; Assembly jezici; Prevođenje i interpretiranje programa; Paralelne arhitekture računarskih sistema; Uvod u operativne sisteme.
CS203 Algoritmi i strukture podataka
Cilj predmeta je da student shvati ogromnu ulogu i značaj algoritama i struktura podataka u rešavanju raznih problema, kao i da postane sposoban da razvija efikasne programe primenom rekurzije, lista, redova, stekova, setova i mapa, i sortiranja. Predmet takođe ima za cilj da studenti nauče kako da razvijaju programe za pretraživanje korišćenjem binarnog i AVL stabla, kao i da razvijaju programe primenom heširanja, grafova i težinskih grafova. Zadaci koje studenti dobijaju u toku semestra im omogućavaju da unaprede veštine neophodne za razvoj, opis i validaciju algoritamskih rešenja za nove probleme na koje naiđu u svojoj profesionalnoj karijeri. Teme koje se obrađuju na predmetu su: Uvod u algoritme; Analiza složenosti algoritama; Rekurzija – Napredna analiza; Sortiranje; Liste; Stekovi, redovi i prioritetni redovi; Stabla; Stabla pretraživanja; Heširanje; Grafovi; Težinski grafovi; Algoritmi i stringovi; Konačni automati; Teško rešivi problemi; Kompresija podataka.
NT475 Pravo na internetu
Usvajanje osnovnih i primenjenih znanja iz oblasti prava na Internetu, što podrazumeva: Razumevanje osnova pravnog sistema Republike Srbije; Razumevanje izvora prava na Internetu i njihove međusobne hijerarhije; Razumevanje potrebe za zaštitom podataka o ličnosti u sajber prostoru i osnovnih postulata GDPR Uredbe; Razumevanje uloge i značaja prava intelektualne svojine u oblasti informaciono-komunikacionih tehnologija; Razumevanje pravnih aspekata čuvanja podataka o ličnosti u klaudu; Razumevanje i unapređivanje znanja u oblasti visokotehnološkog kriminala i njegovih pojavnih oblika, kao što je fišing; Razumevanje značaja pravnog regulisanja ponašanja na društvenim mrežama (pre svega, Fejsbuku); Razumevanje značaja i uloge pravnog sistema u oblasti elektronske trgovine i zaključivanja digitalnih ugovora, posebno u svetlu blokčejn tehnologija. Teme koje se obrađuju na predmetu su: 1. Osnove prava; 2. Izvori prava na Internetu; 3. Pravo intelektualne svojine; 4. Pravna zaštita računarskih programa i baza podataka; 5. Elektronska uprava; 6. Pravna zaštita naziva internet domena; 7. Visokotehnološki kriminal; 8. Pravo Evropske unije o zaštiti podataka o ličnosti; 9. Pravo Republike Srbije u oblasti zaštite ličnih podataka; 10. Pravni aspekti čuvanja podataka u internet oblaku (cloud); 11. Fišing kao vid krađe ličnih podataka na Internetu; 12. Pravni aspekti u vezi sa internet špijunažom i hakovanjem; 13. Pravni aspekti korišćenja društvenih mreža i pravila o oglašavanju Republike Srbije; 14. Elektronska trgovina; 15. Ugovori na internetu.