Seminarski rad C

Svi zainteresovani studenti prvo trebaju da prijave predmet Seminarski rad C za slušanje u studentskoj službi, a zatim da se jave mailom predmetnom nastavniku teme koje su odabrali.

Predmet „Seminarski rad C“ je za studente koji su upisani po prethodnim studijskim programima, odnosno za studente upisane 2023 godine i ranije.

Ponuda tema za „Seminarski rad C“ za zimski semestar 2024/25:

Naslov teme: Geometrijski algoritmi

Predavač: dr Miloš Stojaković

Sadržaj: Očekuje se da student savlada korišćenje efikasnih algoritama za rad sa geometrijskim objektima, kao i da usvoji osnovne koncepte skladištenja geometrijskih objekata korišćenjem odgovarajućih struktura podataka.

Teme koje će biti obrađene: Determinističke metode za rad sa skupovma tačaka, podeli-i-osvoji, čišćenje. Najbliži par, najdalji par. Metode slučajnog uzorka. Konveksna obvojnica. Razni algoritmi nadogradnje za računanje konveksne obvojnice. Konveksna obvojnica u dve dimenzije. Veza sa sortiranjem niza. Najmanja lopta koja sadrži skup tačaka. Triangulacije u dve dimenzije, sa i bez ograničenja. Delovi triangulacije, triangulacije u tri dimenzije. Čuvanje galerije. Binarne podele prostora.

Način polaganja: Ispit će se polagati izradom i odbranom seminarskog rada.

Naslov teme: Strukturna Remzijeva teorija

Predavač: dr Dragan Mašulović

Sadržaj: Cilj ovog seminarskog rada je upoznavanje sa uopštenjem klasične Remzijeve teorije na klase konačnih struktura. Izučavaju se različite strategije dokazivanja da klasa struktura ima Remzijevo svojstvo. Dokazuje se da klasa konačnih linearno uređenjih grafova i klasa konačnih linearno uređenih poseta imaju Remzijevo svojstvo, dok odgovarajuće klase objekata bez dodatnog linearnog uređenja nemaju Remzijevo svojstvo. Posebna pažnja se posvećuje uopštenju strukturne Remzijeve teorije u kontekstu teorije kategorija..

Način polaganja: Ispit će se polagati izradom i odbranom seminarskog rada.

Naslov teme: Razvoj .NET aplikacija

Predavač: dr Đorđe Herceg

Sadržaj: Na kursu se obrađuje razvoj interaktivnih i poslovnih aplikacija u jeziku C# na .NET tehnologiji. Studenti će naučiti da kreiraju .NET aplikacije sa korisničkim interfejsom, poslovnom logikom, modelom podataka, skladištem podataka i vezom ka drugim softverima. Materija će biti izložena kroz primere koji rešavaju probleme iz realnog sveta. Koristi se razvojno okruženje Visual Studio Professional i programski jezik C#. Potrebno je poznavanje objektno orijentisanog programiranja.

Teme koje će biti obrađene: Specifičnosti jezika C#, kreiranje korisničkog interfejsa u XAML jeziku, user settings, Language Integrated Query – LINQ, rad sa nitima – multithreading, rad sa struktuiranim fajlovima, rad sa bazom podataka kroz ADO i Entity Framework, ASP.NET Razor, Web servisi, obrada masovnih podataka.

Način polaganja: Ispit se polaže izradom i odbranom softvera i prateće dokumentacije u vidu seminarskog rada.

Naslov teme: Arduino i IoT programiranje

Predavač: dr Đorđe Herceg

Sadržaj: Predmet je namenjen studentima viših godina, koje zanimaju mogućnosti primene i programiranje Arduino uređaja. Studenti će se upoznati sa Atmel i ESP mikrokontrolerima, osnovnim znanjima iz elektrotehnike i digitalnih komunikacija, programiranjem u C++, kao i sa nizom dodatnih komponenti – senzora, ekrana, releja, komunikacionih uređaja i slično. Praktičan rad se zasniva na povezivanju komponenti u funkcionalan model i pisanju odgovarajućeg programa. Potrebno je predznanje iz objektno orijentisanog programiranja i digitalne elektronike. Na kursu se koristi Arduino hardver i dodatne komponente, kao i Arduino razvojno okruženje.

Teme koje će biti obrađene: Osnovni pojmovi iz elektrotehnike, Osnovne elektronske komponente, Opis Arduino hardvera, Komponente za Arduino, Osnove jezika C++, Atmel i ESP platforme, Povezivanje komponenti, Razvoj programa, rad sa ograničenim resursima, Upotreba softverskih biblioteka, Pristup IoT serveru.

Način polaganja: Ispit se polaže izradom modela, softvera i dokumentacije u vidu seminarskog rada.

Arduino i IoT programiranje

Predavač: dr Đorđe Herceg

Sadržaj: Predmet je namenjen studentima viših godina, koje zanimaju mogućnosti primene i programiranje Arduino uređaja. Studenti će se upoznati sa Atmel i ESP mikrokontrolerima, osnovnim znanjima iz elektrotehnike i digitalnih komunikacija, programiranjem u C++, kao i sa nizom dodatnih komponenti – senzora, ekrana, releja, komunikacionih uređaja i slično. Praktičan rad se zasniva na povezivanju komponenti u funkcionalan model i pisanju odgovarajućeg programa. Potrebno je predznanje iz objektno orijentisanog programiranja i digitalne elektronike. Na kursu se koristi Arduino hardver i dodatne komponente, kao i Arduino razvojno okruženje.

Teme koje će biti obrađene: Osnovni pojmovi iz elektrotehnike, Osnovne elektronske komponente, Opis Arduino hardvera, Komponente za Arduino, Osnove jezika C++, Atmel i ESP platforme, Povezivanje komponenti, Razvoj programa, rad sa ograničenim resursima, Upotreba softverskih biblioteka, Pristup IoT serveru.

Način polaganja: Ispit se polaže izradom modela, softvera i dokumentacije u vidu seminarskog rada.

Unity – razvoj kompjuterskih igara

Predavač: dr Vladimir Kurbalija

Sadržaj: Kurs obrađuje osnovne pojmove u razvoju igara, kao i kratko objašnjenje stanja u industriji. Studenti će biti u prilici da čuju kakve specijalizacije postoje unutar industrije igara, da se upoznaju sa Unity3D razvojnim okruženjem, u kojem će, u sklopu seminarskog rada i napraviti video igru. Sama predavanja će uključivati i pravljenje prototipa igre kao i pregleda svega što jedna igra treba da ima. Studentima će biti potreban lični računar na kome će moći da urade projekat.

Teme koje će biti obrađene: Game Engine, Unity3D Engine, Unity3D editor, Unity interfejs, Vrste game asseta, GameObject, Prefab, Scena, Kamera, Canvas, Build i deploy igre.

Način polaganja: Ispit će se polagati izradom i odbranom seminarskog rada.

Pozicione igre

Predavač: dr Mirjana Mikalački

Sadržaj: Seminar se bavi pozicionim igrama na grafovima i drugim strukturama, kao i problemima koji su aktuelni u ovoj oblasti. Predmet izučavanja su igre tipa Maker-Breaker, Avoider-Enforcer i druge.

Najpre ćemo se uvesti u priču o igrama, zatim razmotriti standardne kriterijume za pobedu kod igara nekog specifičnog tipa. Nakon toga, bavićemo se analizom strategija nekih postojećih igara, upoređivanjem sa drugim igrama, kao i mogućnošću njihove primene. Takođe, bavićemo se i grafičkim predstavljanjem algoritama ukoliko se radi sa manjim grafovima.

Način polaganja: Ispit će se polagati izradom i odbranom seminarskog rada.

Ograničenja: Seminar je pogodan za studente koji imaju predznanje iz teorije grafova i solidno znaju engleski jezik.

Algoritmi u projektovanju hardvera

Predavač: dr Stefan Nikolić

Sadržaj: Svi programi koje napišemo se izvršavaju na nekom hardveru. Da bi taj hardver nastao, potrebno je da njegov opis u nekom višem jeziku bude preveden u konkretnu implementaciju digitalnog elektronskog kola. S obzirom na složenost današnjih hardverskih sistema, taj proces prevođenja više nije moguće izvesti ručno, već se on odigrava automatski, posredstvom niza algoritama. Cilj ovog seminara je da upozna studente sa tim algoritmima.

Način izvođenja nastave: Osnovni način savladavanja gradiva biće proučavanje odabranih naučnih radova. Izbor radova je izvršen na taj način da studente upozna sa nastankom fundamentalnih ideja u ovoj oblasti. Osim toga što ćemo se baviti radovima koji su postavili osnove automatizacije dizajna digitalnih elektronskih kola, osvrnućemo se i na neke od najnovijih pristupa, poput optimalne logičke sinteze upotrebom SAT rešavača i upotrebe mašinskog učenja u problemu postavljanja (eng. Placement). Najzad, obratićemo pažnju i na neke otvorene probleme i diskutovati neke moguće pristupe njihovom rešavanju. U praktičnom delu seminara, upoznaćemo se sa popularnim alatom za logičku sintezu (eng. Logic Synthesis) i tehnološko mapiranje (eng. Technology Mapping) „ABC“ (https://people.eecs.berkeley.edu/~alanmi/abc/), kao i sa popularnim alatom za postavljanje (eng. Placement) i povezivanje (eng. Routing) hardvera na FPGA čipovima „VPR“ (https://verilogtorouting.org/), što će nam omogućiti da analiziramo i unapređujemo neke od najboljih postojećih implementacija algoritama koje ćemo obrađivati u teorjskom delu seminara. Takođe, u praksi ćemo proći kroz prihavćene metode evaluacije novih algoritama. Time će studenti koji do kraja odslušaju seminar steći širok uvid u trenutno stanje ove naučne oblasti, njen istorijski razvoj i neke od otvorenih problema, te će oni koji to budu želeli moći i sami da pokušaju da daju doprinos njenom daljem razvoju.

Način polaganja: Seminarski rad uz praktičnu implementaciju (dela) nekog algoritma.

Potrebna prethodna znanja: Osim osnovnog poznavanja algoritama (posebno grafovskih), struktura podataka i engleskog jezika, za pohađanje ovog seminara nisu potrebna nikakva druga prethodna znanja. Međutim, zbog ograničenog vremena, moraćemo brzo da pokrijemo veliki broj tema i od studenata se očekuje da samostalno, pre zajedničke diskusije, pročitaju zadati materijal.

Poželjna dodatna znanja: Radi lakšeg praćenja praktičnog dela seminara, poželjno je poznavanje programskih jezika C i C++.

Preporučena literatura: Spisak odabranih naučnih radova biće saopšten naknadno. Studenti koji dodatno žele da prouče obrađene teme čitanjem knjiga mogu da pogledaju sledeće naslove, mada oni nisu zamena za čitanje odabranih radova, od kojih su mnogi novijeg datuma:

1) Giovanni De Micheli, „Synthesis and Optimization of Digital Circuits“, McGraw-Hill, 1994

2) Scott Hauck and André DeHon (editors), „Reconfigurable Computing“, Elsevier, 2007, poglavlja 13, 14 i 17


Svi zainteresovani studenti prvo trebaju da prijave predmet Seminarski rad C za slušanje u studentskoj službi, a zatim da se jave mailom predmetnom nastavniku teme koje su odabrali.