PROGRAMSKI JEZICI

Ova stranica posvećena je kursevima u okviru kojih se izučavaju različite programske paradigme i njihovi predstavnici:

  • imperativno programiranje - istorijski razvoj, osnovne karakteristike i mogućnosti različitih imperativnih jezika (programski jezik C se izučava detaljno u okviru kurseva Programiranje 1 i Programiranje 2)
  • objektno-orijentisano programiranje - osnovni koncepti objektno orijentisanog programiranja (teorijske osnove, programski jezik Java i objektno orijentisano programiranje uče se detaljnije u okviru kursa Objektno-orijentisano programiranje)
  • funkcionalno programiranje - teorijske osnove (lambda račun), programski jezici Haskell i Python
  • logičko programiranje - teorijske osnove (logika prvog reda), programski jezik Prolog
  • komponentno programiranje - praktični pristup kroz programski jezik Python i biblioteku PyQt (do 2019. godine Java i bibliteku JavaFX), odnosno Scala i bibliteku ScalaFX
  • konkurentno i distribuirano programiranje - teorijske osnove i praktični pristup kroz programski jezik Java, odnosno Scala
  • programiranje ograničenja - teorijske osnove i praktični pristup kroz BProlog i Python (biblioteka constraint)
  • skript programiranje - teorijske osnove i praktični pristup kroz Python
  • generičko programiranje - teorijske osnove i praktični pristup kroz programski jezik C++
Takođe, u okviru kurseva izučavaju se i osnovna svojstva programskih jezika.

Kursevi

Nastavnik: doc dr Milena Vujošević Janičić
Asistenti: Marjana Šolajić, Milan Čugurović i Ivan Ristović

U okviru kurseva programskih jezika organizuju se gostujuća predavanja koja imaju za cilj da približe studentima primenu naučenih koncepata u industriji, a drže ih stručnjaci iz IT sveta. Do sada su organizovana sledeća gostujuća predavanja:

  • Konkurentno programiranje u programskom jeziku Go, Miloš Mitrović, Callidus Cloud (kurs PPI, april 2018)
  • Razvoj MScript programskog jezika, Mad Head Games (kurs PPI maj 2015. i decembar 2015., kurs DPJ i PPR decembar 2016)
  • Skript programiranje: programski jezik Lua, RTRK (kurs DPJ, decembar 2015, decembar 2016. i decembar 2017)
  • Funkcionalno programiranje u programskom jeziku Skala, Zuhlke Engineering d.o.o. (kurs PPR, maj 2016. i mart 2017)
  • Reaktivno programiranje, Endava (kurs PPR i PPI, mart 2017)
  • Sistemi u realnom vremenu i programski jezik Ada, Endava (kurs PPR i PPI, april 2017)

Seminarski rad nije obavezan. Studenti koji ne budu radili seminarski rad i dalje imaju mogućnost da osvoje 100 poena na kursu i da dobiju najvišu ocenu.

Seminarski rad se radi u timu i ne može se raditi samostalno. Tim može da sadrži najviše tri člana. Svaki član tima može dobiti najviše 10 poena. Poeni se ne mogu preneti od prethodne godine.

Dozvoljeni jezici: Scala, Haskel, Prolog, C++ (generičko programiranje), Lua, Ruby, Erlang, Elixir, Scheme, razni skript jezici. Napomena: ukoliko se seminarski radi u Python-u, potrebna je upotreba neke biblioteke koja se ne obrađuje u okviru kurseva.

Nedozvoljeni jezici: Java, PHP, JavaScript, SQL i slično, C, Pascal, odnosno nije dozvoljeno web programiranje niti baze podataka. Takođe, teme iz oblasti mašinskog učenja nisu prihvatljive.

Cilj: Savladati sadržaj koji nije obuhvaćen kursevima na studijama - dakle proširiti znanje i dobiti praktično iskustvo.

Uputstva za izradu i predaju seminarskog:

  • Potrebno je da se koristi GitHub (Uputstvo)
  • Nakon prijave tima, biće napravljen repozitorijum od strane asistenta i članovima tima će biti date potrebne privilegije za rad.
  • Repozitorijum mora da ima README.md fajl koji treba da sadrži:
    • ime teme
    • kratak opis šta tema obuhvata
    • planirane jezike i tehnologije koje će biti korišćeni u izradi
    • šta je potrebno da se projekat pokrene (alati, paketi i slično)
    • na koji način se prevodi i pokreće program
    • za koji operativni sistem je napravljen izvrsni fajl
    • podatke o autorima i njihove kontakt informacije
    • sve ostalo što smatrate da je važno u kontekstu vašeg projekta
  • Neophodno je napraviti izvršnu verziju programa (ne može se koristiti razvojno okruženje za pokretanje programa na odbrani) i postaviti je zapakovanu u repozitorijum pod sekciju Releases.

Seminarski radovi se brane na kraju semestra. Odbrana seminarskog rada se sastoji iz dva dela: prvi deo je kod asistenta gde se detaljno gleda kod i demonstrira da je tema savladana (pokretanje napisanog programa uz neke izmene i prevođenje), a drugi deo je kod nastavnika gde se prezentuje ideja, realizacija i korišćene tehnologije. Odbrana je javna i njoj mogu prisustvovati svi studenti. Odbrana može da bude praćena slajdovima.

Važni datumi
  • Prijava tima za izradu seminarskog rada - do 22. februara
  • Prijava prve verzije teme seminarskog rada - do 1. marta
  • Prihvatanje teme i finalno preciziranje teme seminarskog rada - do 10. marta
  • Predaja finalne verzija seminarskog rada - do 8. maja
  • Odgovor asistenta o potencijalnim potrebnim izmenama - do 12. maja
  • Odbrane seminarskih radova kod predmetnog asistenta - do 20. maja
  • Javna odbrana kod nastavnika - oko 25. maja

Seminarski radovi, 2019. godina

I smer
  • jezik: Python, naziv: 2D Persistent Homology visualizer, studenti: Marko Spasić i Kristina Popović, opis: Alatka koja pruža vizualizaciju algoritma za izračunavanje perzistentne homologije u 2D, git repozitorijum
  • jezik: Go, naziv: Go Blockchain, studenti: Nikola Stanojević, Mateja Trtica i Nikoleta Vukajlović, opis: Implementacija decentralizovane mreže čvorova koji simuliraju blockchain, git repozitorijum
  • jezik: C++, naziv: Compound Units, student: Aleksandar Nikolić, opis: Implementacija generičkog tipa koji predstavlja složene jedinice mere i čije se skraćivanje vrši za vreme kompilacije, git repozitorijum
  • jezik: Ruby, naziv: Safir, studenti: Milena Stojić i Dunja Spasić, opis: Implementacija dodatnih funkcionalnosti (tzv. plugins) za Sketchup koje nisu direktno podržane a znatno mogu olakšati i skratiti rad, dodati na estetici i pomoći pri kreiranju novih modela, git repozitorijum
  • jezik: Ruby, naziv: SELENA, studenti: Katarina Savičić, Sandra Radojević i Dara Milojković, opis: Simulacija razgovora čoveka i virtuelnog psihoterapeuta. Predstavlja implementaciju programa ELIZA, prvog NLP programa, git repozitorijum
  • jezik: Ruby, naziv: CV Express, studenti: Bojana Ristanović, Lea Petković i Nikola Stamenić, opis: Na osnovu podataka i želja vezanim za sam dizajn budućeg CV-a korisnika, kreira odgovarajući CV. Program u pozadini generiše PDF fajl, a korisniku nudi razumljiv grafički korisnički interfejs pomoću kog se unose neophodni podaci, git repozitorijum
  • jezik: Ruby, naziv: Pong, studenti: Boris Karanović, opis: Implementacija jedne od najstarijih arkadnih igrica - Pong. Igrica je napravljena za dva igrača, a programirana u programskom jeziku Ruby, na uredjaju RaspberryPI3. Implementacija GUI-a je izvršena pomoću biblioteke OpenGl git repozitorijum
  • jezik: Kotlin, naziv: MATF Asistent, studenti: Olivera Popović i Aleksandar Stefanović, opis: Ideja projekta je pomoć studentima pri organizaciji vremena tako što učitava raspored sa veb strane fakulteta a korisnik zatim može da izabere kurseve koje želi da pohađa, nakon čega program automatski generiše odgovarajući raspored, git repozitorijum
  • jezik: Python, naziv: Geo Demonstrator, studenti: Kristina Pantelić i Lazar Vasović, opis: Korisnik zadaje figuru u dvodimenzionom okruženju, nad kojom zatim vrši proizvoljne afine geometrijske transformacije: translaciju, rotaciju, refleksiju, skaliranje, smicanje, git repozitorijum
  • jezik: Go, naziv: Anotorr, studenti: Antić Dimitrije, Stefan Golubović i Andrija Novaković, opis: Implementacija peer-to-peer torrent protokola, git repozitorijum
  • jezik: Kotlin, naziv: Androidi, studenti: Stevan Milić i Ivan Nedić, opis: Clicker/Idle igrica u kojoj igrač sakuplja resurse i bira unapređenja koja želi, praveći progres i automatizujući proces igranja, git repozitorijum
  • jezik: Haskell, naziv: Ime_tima, studenti: Strahinja Ivanović i Darko Veizović, opis: Rešavač igre Slagalica istoimenog kviza, git repozitorijum
R smer
  • jezik: Lua, naziv: Protect the planet, studenti: Lazar Perišić i Miloš Đurić, opis: bazira se na pomeranju player-a gore-dole i pucanju meta koje dolaze, tokom vremena mete se stvaraju sve brze dok ne dostignu odredjenu brzinu, cilj igrice je postici sto veci score (unistiti sto veci broj meta), git repozitorijum
  • jezik: Rust, naziv: Robin Hud, studenti: Marijana Urošević i Luka Hadži-Đokić, opis: cilj igre je da, u ulozi Robina Huda, opljačkate zamak i pobegnete pre nego što Vas stražari primete i uhvate, stražari patroliraju zamkom u potrazi za uljezom, ako se igrač nađe u vidnom polju stražara, igra je gotova, git repozitorijum
  • jezik: Lua, naziv: Ne ljuti se čoveče, studenti: Natalija Drašković, Isidora Ristović i Vera Popović, opis: igra veoma nalikuje na poznatu igru Ne ljuti se čoveče i održava njene osnovne koncepte, kao što je mogućnost jedenja protivničke figure, ali uvodi i nove koncepte u vidu pitanja na poljima koja vode od početka do cilja, git repozitorijum
  • jezik: C#, naziv: Windows copy, studenti: Marija Katić i Jovan Milenković, opis: implementacija operacije cut/copy/paste na Windows OS koje u pozadini koriste robocopy komandu, git repozitorijum
  • jezik: Python, naziv: Scaffolder, studenti: Alen Osmani, Danilo Vasić i Bogosav Cvetković, opis: video igra u kojoj je cilj postići što veći rezultat, rezultat zavisi od postignute visine, radnja je smeštena na gradilištu, igrač se penje tako što skače sa skele na skelu, git repozitorijum
  • jezik: Python, naziv: Igra memorije, studenti: Anja Velicković, Ivan Stanić i Milica Simić, opis: kartice su poređane na kvadratnom talonu, prvi igrač podiže dve kartice i ako su identične – uzima ih sa talona i podiže još dve, ukoliko kartice nisu iste, na potezu je sledeći igrač, svako od igrača se trudi da zapamti gde stoji kartica i tako traži par istih, ovaj postupak se ponavlja naizmenično dok se kartice nalaze na talonu, pobeđuje igrač koji ima više kartica, git repozitorijum
  • jezik: Python, naziv: Zmijica, studenti: Anja Drašković i Ilija Katić, opis: svaki put kada pojede hranu zmija poraste, ako kretanjem udari u zid ili zagrize sama sebe igra se završava i ispisuju se poeni, git repozitorijum
  • jezik: Python, naziv: Interactive schedule, studenti: Đorđe Jovanović i Višeslav Đurić, opis: aplikacija koja simulira raspored časova za predavanja i vežbe na fakultetu i u školi, git repozitorijum
  • jezik: C#, naziv: Space Impact, studenti: Nikola Damjanović, Miloš Nikolić i David Aksović, opis: igrica se bazira na pomerajima svemirskog broda gore,dole,napred,nazad i pucanjem na nailazeće neprijateljske brodove kako bi ih oborili i dobili poene, sudaranje u neprijateljski brod ili projektil dovodi do kraja igre, git repozitorijum

Seminarski radovi, 2018. godina

R smer
  • jezik: C++, naziv: Cars game, studenti: Maša Kilibarda, Anđela Milanović i Tamara Despotović, opis: igrica se bazira na pomerajima levo-desno kako bi se izbegli automobili koji nadolaze i skupilo gorivo koje se neprestano smanjuje, cilj igrice je preći što dužu razdaljinu, git repozitorijum, rad
  • jezik: Python, naziv: Primena mašinskog učenja u igri šaha, studenti: Miodrag Radojević, Milica Šehovac i Milica Gajić, opis: primenom mašinskog učenja program daje odgovor da li igrač sa kraljem i topom može u narednih 16 poteza da matira igrača sa kraljem na šahovskoj tabli, git repozitorijum, rad
  • jezik: Scala, naziv: NeoReborn, student: Miloš Ivanović, opis: editor za rad sa grafovima, git repozitorijum, rad
  • jezik: Scala, naziv: Padaš ili vladaš?, studenti: Vera Milosavljević i Veronika Miljaković, opis: kviz sadrži pitanja iz gradiva kursa Programske paradigme i služi za pripremanje kolokvijuma i ispita, git repozitorijum, rad
I smer
  • jezik: Haskell, naziv: Skočko, studenti:Dimitrije Špadijer i Selena Vukadinović, opis: Implementacija igre Skočko iz TV kviza Slagalica, git repozitorijum , rad
  • jezik: GO, naziv: Go golf, studenti: Nikola Ninković i Jovana Pejkić, opis: 2D golf igrica, git repozitorijum , rad
  • jezik: Python, naziv: Imaginary Friend, studenti: Miloš Milutinović i Dijana Zulfikarić, opis: Alat za prepoznavanje govora, koji će u zavisnosti od ulaza izvršavati različite zadatke, git repozitorijum , rad
  • jezik: Haskell, naziv: Numerički algoritmi u Haskellu, studenti: Marija Filipović i Djordje Stanojević, opis: Implementacija numeričkih algoritama, git repozitorijum , rad
  • jezik: Python, naziv: python-web-browser, studenti: Đorđe Dimović i Lazar Bojanić, opis: Pojednostavljen web pretraživač, git repozitorijum , rad
  • jezik: Python, naziv: Kate Perry, studenti: Mateja Marjanović i Dalma Beara, opis: Tekst editor napisan u Python-u, git repozitorijum , rad
  • jezik: C++, naziv: Pluton, studenti: Nebojša Koturović i Jelena Mrdak, opis: Fajl menadžer napisan u C++, git repozitorijum , rad
  • jezik: Kotlin, naziv: Kotlin, studenti: Marko Veljković i Aleksandar Jakovljević, opis: Aplikacije za odabir predavanja iz dobijenog rasporeda časova generisanog izborom predmeta koji student sluša u tekućoj godini na MATF-u, git repozitorijum , rad
  • jezik: Python, naziv: BobanBot, studenti: Marko Jovanović i Stevan Djokić, opis: Boban bot je tu pomogne i studentima i Bobanu tako što će poboljšati efikasnost studentske službe na Matematičkom fakultetu. Biće implementiran kao messenger (facebook) chatbot koji će imati različite funkcionalnosti, git repozitorijum , rad
  • jezik: Python, naziv: mlSmart game, studenti: Stevan Milić i Ivan Nedić, opis: Igrica za dva igrača za učenje mašinskog učenja, git repozitorijum , rad

Seminarski radovi, 2017. godina

  • jezik: Python, naziv: Pyraminix, studenti: Tamara Marčetić i Maja Stojković, rad
  • jezik: Python, naziv: Multitasking igrica, studenti: Vladimir Đošović i David Marjanović , rad
  • jezik: Scala, naziv: Potera, studenti: Katarina Đurić, Lazar Mladenović i Tatjana Damnjanović, rad
  • jezik: Scala, naziv: Gladne zeke, studenti: Ivona Jurošević i Aleksandar Mužina, rad
  • jezik: Scala, naziv: Kviz, studenti: Marko Mladenović, Andrijana Čakarević i Nikola Rajković, rad
  • jezik: Lua, naziv: Whey invasion, studenti: Katarina Živković i Lazar Nisić, rad
  • jezik: C++, naziv: Implementacija balansiranih AVL stabala, studenti: Milan Čugurović i Ivan Drecun, rad
  • jezik: Python, naziv: Maze-pathfinder, studenti: Milana Kovačević i Ivan Ristović, rad
  • jezik: Python, naziv: Escape room, studenti: Ana Bajić, Strahinja Stanojević i Tomislav Milovanović, rad
  • jezik: Python, naziv: PMK, student: Miljan Kolčić, rad
  • jezik: Ruby, naziv: Sticky notes, studenti: Dušan Pilipović i Vido Mladenović, rad
  • jezik: Ruby, naziv: RX ball, studenti: Nikola Dimić i Dragana Dimitrijević, rad
  • jezik: Lua, naziv: 5 in a row, studenti: Srđan Lazarević i Ana Košutić, rad
  • jezik: Lua, naziv: Defense of the burek, studenti: Nikola Dimitrijević, Luka Živanović i Božidar Antić, rad
  • jezik: Blueprint (Unreal Engine), naziv: Balansero, studenti: Rastko Đorđević, Marijana Tanović i Bojan Vasiljević, rad
  • student: Uroš Gojković, jezik: Clojure, rad
  • student: Slavko Djuričin, jezik: OCaml, rad
  • student: Miroslav Mišljenović, jezik: GO, rad
  • student: Nemanja Majstorović, jezik: ML, rad
  • student: Djordje Andjelković, jezik: Julia, rad
Seminarski radovi, 2016. godina
  • naziv: Sovice, studenti: Stanko Grujić i Željko Grujić, rad
  • naziv: Mravi, studenti: Strahinja Milojević, Miloš Arsić i Jovana Đoković, rad
  • naziv: HopOp, studenti: Uroš Poznan i Jelena Kitanović, rad
  • naziv: Avioni, studenti: Miloš Lončarević i Filip Miljaković, rad
  • naziv: Banka, studenti: Kristina Gavrilović, Milena Dukanac, Uroš Poznan i Jelena Kitanović, rad
  • naziv: DNK, student: Anđela Mijajlović, rad
Seminarski radovi, 2015. godina
  • naziv: PewPew, studenti: Jelena Simović i Nikola Grulović, rad
  • naziv: Multithreading, student: Nikola Premčevski, rad
  • naziv: Sunčev sistem, student: Vojislav Stanković, rad
  • naziv: Pametne utičnice, student: Pavle Pavlov, rad
  • naziv: Kviz, student: Una Stanković, rad
  • naziv: Kviz, student: Kristina Stanojević, rad
  • naziv: Kombinatori, studenti: Vlado Skoko i Nikola Ajzenhamer, rad
  • naziv: Aurora, studenti: Nemanja Mićović i Lazar Ranković, rad
  • naziv: RGB LED, student: Đorđe Milićević, rad
  • naziv: Super Mario, studenti: David Ivić i Saša Cvetković, rad
  • naziv: Moj broj, student: Željka Živanović, rad
  • naziv: Moj broj, studenti: Isidora Đurđević i Daniel Doža, rad
  • naziv: Nim, student: Anja Bukurov, rad
Matematički fakultet, Univerzitet u Beogradu
školska 2018/19. godina