PROGRAMSKE PARADIGME

I smer

Kurs programske paradigme je kurs na trećoj godini I smera u okviru kojeg se proučavaju karakteristike osnovnih programskih paradigmi i stilova programiranja:

  • skript programiranje - programski jezik Python
  • programiranje ograničenja - programski jezici Python i Prolog
  • funkcionalno programiranje - teorijske osnove (lambda račun), programski jezici Haskell i Python
  • konkurentno programiranje - programski jezik Scala
  • distribuirano programiranje - programski jezik Scala i biblioteka Scala Spark
  • logičko programiranje - teorijske osnove, programski jezik Prolog
  • komponentno programiranje - programski jezik Python i biblioteka pyQt
U okviru studija postoje i drugi kursevi koji se bave bliskim temama.

Predmetni nastavnik:

Asistenti:

Tekući rezultati

Tekuće rezultate možete da pratite u okviru naredne tabele.

Obavezni predmet

  • 6 ESPB bodova
  • 2 časa predavanja
  • 3 časa vežbi

Ispitne obaveze: (100 poena):

  • teorija: 45 poena
  • zadaci: 55 poena
Na praktičnom delu ispita se rade i zadaci i teorija. Na zadacima dolazi celo gradivo: 4 zadataka, trajanje 120 minuta. Na teoriji dolazi celo gradivo: više kratkih pitanja, trajanje 50 minuta.
Pragovi na zadacima:
  • 30% od ukupnog broja poena koje nose Haskell zadaci
  • 40% od ukupnog broja poena na svim zadacima
Pragovi na teoriji:
  • 40% od ukupnog broja poena na teoriji. Od toga:
    • Minimum 30% na pitanjima koja se odnose na funkcionalno programiranje
    • Minimum 20% na pitanjima koja se odnose na konkurentno programiranje
    • Minimum 10% na pitanjima koja se odnose na logičko programiranje

Dodatni poeni (seminarski radovi (informacije), aktivnosti na predavanjima, domaći zadaci i slično) koji su skupljeni u toku godine važe do poslednjeg ispitnog roka za dati kurs. Dodatni poeni mogu se koristiti samo za povećanje ocene, ne i za polaganje ispita. Dakle, neophodno je da imate najmanje 51 poen na ispitu da bi na to mogli da se dodaju ovi poeni.

Organizacija ispita u 2023/24. godini

Praktični i teorijski deo ispita se polažu u istom ispitnom roku. Teorija se ocenjuje samo ukoliko je položen praktični deo. Teoriju je moguće položiti i putem testova u toku godine.

Primer ispita

  • Primer praktičnog dela ispita: link.
  • Napomena: oblasti kao i sami jezici na ispitu mogu varirati.

Obaveze za studente L smera

Zbog drugačijeg plana i programa za studente studijskog programa Profesor matematike i računarstva i obaveze na kursu su drugačije.
  • Seminarski radovi su obavezni i impementiraju se u programskom jeziku Python. Za definisanje seminarskih radova potrebno je javiti se predmetnom asistentu.
  • Na praktičnom delu ispita ne polažu se zadaci iz programskog jezika Scala (konkurentno/distribuirano programiranje).
  • Raspodela poena je 35 poena praktični deo ispita, 20 poena seminarski rad, 45 poena terorijski deo ispita.

Materijali

Link na video materijale.

Materijali će biti dopunjavani tokom semestra.
  1. Uvod
  2. Funkcionalno programiranje Slajdovi. Tekst.
    Neke karakteristike sistema tipova.
    • Proverite da li ste dobro razumeli lambda račun i izvođenje normalnog oblika:
  3. Logičko programiranje
    Slajdovi. Tekst.
    Proverite da li ste dobro razumeli metod rezolucije:
    Metodom rezolucije u logici prvog reda rešiti dva primera koje je definisao Lewis Carroll (sa slajdova 55 (109/194) i 56 (110/194), zaključak "Guinea pigs never really appreciate Beethoven" i zaključak "I always avoid a kangaroo").
    Proverite svoje rezultate: Proverite da li ste dobro razumeli unifikaciju:
    • Samostalno uradite narednu vežbu.
    • Proverite svoje rezultate: rešenje.
  4. Proverite da li ste dobro razumeli stablo izvođenja:
    • Samostalno uradite narednu vežbu.
    • Proverite svoje rezultate: rešenje.
  5. Imperativno programiranje
    Slajdovi. Tekst.
    Proverite da li ste dobro razumeli strukturno programiranje:
    • Samostalno uradite narednu vežbu.
    • Proverite svoje rezultate: rešenje.
  6. Objektno orjentisano programiranje
    Slajdovi. Tekst.
    Interesantna kritika modernog OOP-a i prednosti funkcionalnog programiranja u odnosu na OOP.
  7. Konkurentno programiranje.
    Slajdovi. Tekst. (kompletno gradivo)
    Proverite da li ste dobro razumeli različite vrste paralelizacije:
    • Samostalno uradite narednu vežbu.
    • Proverite svoje rezultate: rešenje.
    Dodatno: Programski jezik Go. Slajdovi.
    Konkurentnost u programskom jeziku Go (Master rad Miloš Mitrović, mentor Milena Vujošević Janičić)
  8. Skript programiranje
    Slajdovi. Tekst.
  9. Domenski specifični jezici
    Slajdovi. Tekst.
  10. Osnovna svojstva programskih jezika
    Slajdovi. Tekst.

Materijali

Materijali će biti dopunjavani tokom semestra.
YouTube plejlista (asistent Ivan Ristovic): link.
YouTube plejlista (asistent Milan Cugurovic): link.
Google Drive materijali: link.
GitHub repozitorijum: link.
Automatsko pregledanje ispita: detalji.

ČAS 1

ČAS 2

ČAS 3

ČAS 4

ČAS 5

ČAS 6

ČAS 7

ČAS 8

ČAS 9

ČAS 10

ČAS 11

ČAS 12

ČAS 13

Literatura

  • Materijali i slajdovi sa predavanja i vežbi
  • Link na video materijale za predavanja
  • Link na video materijale za vežbe
  • A. Tucker and R. Noonan: "Programming Languages: Principles and Paradigms", McGraw-Hill Science, 2001.
  • R. Sebesta: "Concepts of programming languages", Addison Wesley, (10. ed.), 2012.
  • P. Van Roy, S. Haridi: "Concepts, Techniques, and Models of Computer Programming", MIT Press, 2003.

Literatura za vežbe

Dodatno

  • Link za preuzimanje nove (Februar 2022) virtuelne mašine za studente: [link].
    Lozinke su identične nazivima naloga, preporučeno je mašinu pokretati sa 2 CPU i 4GB RAM-a (mašina je testirana i na 1CPU i 2GB RAM-a).
  • Uputstvo za generisanje JAR fajlova za Scalu [ovde]

Rezultati ispita u ispitnom roku Septembar 1 2024

Rezultate ispita možete videti na adresi.
Uvid u radove biće održan putem mejla zaključno sa petkom, 13. 09. 2024. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u prakticni deo ispita javiti se asistentu Milanu.

Ocene su unete u Hipatiju. Molimo studente da provere svoje ocene i prijave eventualne nepravilnosti.

09. 09. 2024.

Polaganje ispita u ispitnom roku Septembar 1 2024

Ispit će se održati u utorak 02. 09. 2024. godine od 9:00 na Trgu.
Ispit će trajati tri sata i sastoji se od praktičnog i teorijskog dela. Srećno!

02. 09. 2024.

Polaganje ispita u ispitnom roku Septembar 1 2024

Ukoliko planirate da polažete ispit obavezna je prijava putem FORME.
Prijava je otvorena do ponedeljka 02. 09. 2024. godine u 20h.
Ispit će trajati tri sata i sastoji se od praktičnog i teorijskog dela.

30. 08. 2024.

Rezultati ispita u ispitnom roku Jun 2 2024

Rezultate ispita možete videti na adresi.
Uvid u radove biće održan putem mejla zaključno sa utorkom, 16. 07. 2024. godine.
Za uvid u radove (i teorija i praktični deo) javiti se profesorki.

Ocene su unete u Hipatiju. Molimo studente da provere svoje ocene i prijave eventualne nepravilnosti.

13. 07. 2024.

Polaganje ispita u ispitnom roku Jun 2 2024

Ispit će se održati u dve grupe na Trgu prema rasporedu: LINK.

Apelujemo na studente da se strogo pridržavaju istaknutog rasporeda.
Molimo proverite u kojoj sali i od koliko časova polažete ispit (od 13h, od 15h ili od 17h).

Ispit će trajati tri sata i sastoji se od praktičnog i teorijskog dela. Srećno!

07. 06. 2024.

Polaganje ispita u ispitnom roku Jun 2 2024

Ukoliko planirate da polažete ispit obavezna je prijava putem FORME.
Prijava je otvorena do utorka 02. 07. 2024. godine u 20h.
Ispit će trajati tri sata i sastoji se od praktičnog i teorijskog dela.

01. 06. 2024.

Rezultati ispita u ispitnom roku Jun 2024

Rezultate ispita možete videti na adresi.
Nakon uvida u radove, svim studentima je ponovo pregledan Haskel i korigovani su poeni. U skladu sa izmenama, nekim studentima je samo povećan broj poena, nekima je povećana i ocena, a neki su stekli uslov za odgovaranje za veću ocenu. Proverite poene u tabeli i poene u Hipatiji i javite se mejlom do petka 21. juna ukoliko vidite neka neslaganja u Hipatiji ili ukoliko ste zainteresovani da odgovarate za veću ocenu.

17. 06. 2024.

Rezultati ispita u ispitnom roku Jun 2024

Rezultate ispita možete videti na adresi.
Uvid u radove biće održan putem mejla zaključno sa sredom, 19. 06. 2024. godine.

Ocene su unete u Hipatiju. Molimo studente da provere svoje ocene i prijave eventualne nepravilnosti. Studenti kojima nedostaje do 3 poena za veću ocenu mogu usmeno odgovarati za veću ocenu (javiti se putem mejla radi dogovora oko termina odgovaranja; mejl poslati zaključno sa sredom 19. 06. 2024. godine).

14. 06. 2024.

Polaganje ispita u ispitnom roku Jun 2024

Ispit počinje u 09:00 na Trgu. Potrebno je doći 10 minuta ranije.
Raspored polaganja po učionicama: LINK.
Ispit će trajati tri sata i sastoji se od praktičnog i teorijskog dela.
Srećno!

07. 06. 2024.

Polaganje ispita u ispitnom roku Jun 2024

Ukoliko planirate da polažete ispit obavezna je prijava putem FORME.
Prijava je otvorena do petka 07. 06. 2024. godine u 18h.
Ispit će trajati tri sata i sastoji se od praktičnog i teorijskog dela.

05. 06. 2024.

Predispitne obaveze

Rezultati predispitnih obaveza su uneti u tabelu sa rezultatima. Studenti zainteresovani za uvid u radove mogu da dođu u subotu 8. juna u 12h (odmah posle ispita) ali je potrebno da se prethodno najave mejlom.

01.06.2024.

Kako unaprediti kurs?

Pomozite nam da unapredimo kurs. Vaše mišljenje nam je važno!

Molimo Vas da popunite narednu anketu o utiscima sa kursa sa ciljem poboljšanja kvaliteta kursa naredne godine. Hvala svima koji izdvoje vreme za ovu anketu (ne bi trebalo da Vam za to treba više od par minuta)!
Link na anektu

30.05.2024.

Nagrada projekat godine 2024

Čestitamo svim timovima na izuzetno lepo odrađenim projektima i prezentacijama. Poeni su uneti u tabelu.

Nagradu Projekat godine osvojio je projekat Battleship, studenti Dimitrije Jovanović i Sava Mijailović.

Dodatno, pohvaljujemo i projekte Habit Lab, studenti Isidora Majkić, Aleksa Malkov, Iva Ninčić i projekat Linijice, studenti Ana Mijović, Jana Botorić, Petar Radojević.

30.05.2024.

Termini polaganja testova u četvrtak 30. maja

Studenti koji polažu prvi i/ili drugi test, treba da dođu u 10h u 706. Za studente koji polažu treći test raspored polaganje se može videti ovde (svim studentima je dat termin po ličnom izboru).

Ukoliko se neko nije prijavio a želi da izađe na test, potrebno je da se javi mejlom.

28.05.2024.

Poslednji test i naknadni testovi

Treći test obuhvata celokupno gradivo koje nije obuhvaćeno sa prethodna dva testa: Uvodno predavanje o programskim jezicima, Dodatne programske paradigme, Osnovna svojstva programskih jezika, Skript programiranje, Programiranje ograničenja, Domenski specifični programski jezici, Imperativno programiranje, Objektno-orjentisano programiranje.

Polaganje se planira za četvrtak 30. maja u narednim terminima:

  • u 11h grupa koja je slušala predavanja u 14h
  • u 12h grupa koja je slušala predavanja u 12h
Tačni termini će biti objavljeni nakon završetka prijava. Prijava je obavezna ukoliko planirate da izađete na ovaj test. Prijava je otvorena do utorka 28. maja u 21h, prijavite se tek kada budete sigurni da ćete izaći.
Link na prijavu za treći test.

Prijave idu odvojeno za treći i prva dva testa, ako polažete više od jednog PP testa potrebno je da popunite obe forme!

Ukoliko želite, 30. maja možete da polažete i prvi i/ili drugi test, ukoliko ste to propustili da polažete u prethodnim terminima. Polaganje ova dva testa se planira sa početkom u 10h. Ukoliko želite da izađete, potrebno je da popunite i drugu anketu i da u njoj naznačite koji od ova dva testa želite da polažete, ili da želite da polažete oba. Ukoliko planirate da polažete test iz KK, potrebno je da to naglasite u okviru ove prijave (kao i u okviru prijave za KK).
Link na prijavu za prva dva testa.

Kao i do sada, važi da studenti koji se odluče da rade neki test (ili više njih), dobijaju poene koji se prenose u svaki naredni ispitni rok i koji važe do kraja godine (ne prenose se na naredni kurs). Studenti koji odluče da ne rade test, taj deo gradiva polagaće u okviru ispita.

25.05.2024.

Nagrada za najbolji projekat

Ovde godine dodelićemo diplomu za najbolji projekat. Najbolji projekat biće proglašen prilikom objavljivanja finalnih poena za svaki tim (nakon odbrane seminarskih radova i konsultacija između nastavnika i asistenata na kursu, dakle najranije u četvrtak uveče, najverovatnije u petak). Diploma će biti javno dostupna na strani kursa.

25.05.2024.

Javne odbrane seminarskih radova

Javne odbrane seminarskih radova održaće se u četvrtak 30. maja sa početkom u 13h u učionici 718. Odbrana je javna i mogu joj prisustvovati svi zainteresovani studenti.

U okviru odbrane očekuje se da prikažete ideju projekta (dva-tri slajda su poželjna) kao i da prikažete kratak demo upotrebe aplikacije koju ste razvili (najbolje je da ponesete svoj laptop). Ukratko treba da ispričate i svoja lična iskustva sa projektom i sa tehnologijama koje ste koristili (šta Vam se posebno svidelo ili nije svidelo, šta ste korisno naučili).

Vaša prezentacija treba da traje oko 5 minuta, najviše 6 minuta (sve preko toga bićete prekinuti: štoperica će da meri vreme). Planirajte prezentaciju, uradite generalnu probu, izmerite vreme da budete sigurni da se tačno uklapate.

Redosled odbrana:

  1. Kotlin
    1. Đurđa Milošević, 84/2021, Iva Milutinović, 262/2021, Lazar Savić, 4/2021, Android aplikacija za igru Guess who, Kotlin
    2. Staša Đorđević, 2/2021, Anja Milutinović, 235/2021, Lana Matić, 143/2021, Android aplikacija za takmičenje u pređenim koracima, Kotlin
    3. Dimitrije Jovanovic 11/2019, Sava Mijailovic 168/2019, "Battleship" - rekreacija video igre kod nas poznate kao "Potapanje brodića", Kotlin
    4. Dragana Katic 91/2021, Dragana Rankovic 240/2021, Knjiga recepata kao android aplikacija, Kotlin
    5. Marko Lazarević 98/2021, Uroš Ivetić 124/2021, Sandra Milenković 198/2018, Mobilna aplikacija za izradu kvizova i učestvovanje u njima (nalik na Kahoot), Kotlin
    6. Isidora Majkić 57/2021, Aleksa Malkov 89/2021, Iva Ninčić 141/2021, Android aplikacija za pracenje navika u toku dana i izlistavanje statistika o navikama, Kotlin
  2. Rust
    1. Stepan Ignjatović 128/2021, Mihajlo Trifunović 123/2021, Miloš Radovanović 311/2021, Kviz nalik Conquiztadoru sa dodatnim elementima (botovima etc.), Rust
    2. Nikola Labus 94/2020, Dejan Dragojlovic 122/2020, Memory game, Rust
  3. Razno
    1. Ana Mijović 59/202, Jana Botorić 87/2021, Petar Radojević 156/2021, Program za vektorsku obradu slika, Hare
    2. Veljko Deljanin 044/2020, Aleksandar Ilić 080/2021, Petar Pavlović 152/2021, Igrica šah, Unity & C#
  4. Go
    1. Luka Đekić 158/2021, Tijana Tošković 102/2021, Program za enkripciju podataka i fotografija, Go
    2. Vojislav Lazic 179/2019, Filip Antanasković 362/2022, LastFM plejer: desktop aplikacija za personalizovane preporuke muzike i videa sa last.fm sajta., Go
  5. Dart, Flutter
    1. Anđelija Vasiljević 222/2020, Luka Vlašić 125/2020, Mobilna aplikacija za trening i fitnes., Dart
    2. Luka Matić mi21056, Jelena Mihajlović mi21068, Aplikacija za uživo praćenje lokacije tokom trčanja, iscrtavanje pretrčane putanje, merenje vremena, distance, brzine (min/km), Dart (Flutter)
    3. Uroš Karaleić 112/2019, Darko Mirković 233/2019, Reactive User Interface Library inspired by Flutter, Scala & OpenGL

25. 05. 2024.

Test - konkurentno i logičko programiranje

Grupa u 12h imaće najpre čas pa zatim test u sali 706. Grupa u 14h imaće najpre test (u sali 821) pa zatim predavanja. Raspored polaganja možete da vidite u narednoj tabeli. Svi studenti koji se nisu prijavili a ipak žele da rade test mogu da dođu isključivo u prvoj grupi koja radi u sali 706. Studenti iz druge grupe kojima odgovara da polažu sa prvom grupom, mogu takođe da dođu u 706 i biće raspoređeni u skladu sa tekućim prostorom.

15.05.2024.

Odbrane seminarskih radova

Komentari na seminarske radove prosleđeni su kolegama (molimo proverite alas naloge). Odbrane seminarskih radova biće održane u ponedeljak 20. 05. 2024. godine od 18h u sali Jagic 3. Od timova se ocekuje da ukratko prezentuju projekat, pokrenu aplikaciju i prikažu način korišćenja iste. Nakon toga od timova se očekuje da odgovore na postavljena pitanja. Odbrana seminarskog rada trajace od 10 do 15 minuta po timu (sa sve pitanjima). Za ovu odbranu nije potrebno praviti slajdove.

Mole se studenti da na odbranu radova dođu bar 10 minuta ranije.

15. 05. 2024.

Test - konkurentno i logičko programiranje

Prijavite se za polaganje drugog testa: link na prijavu. Prijave su otvorene do srede u 18h. Prijavite se samo ako ste sigurni da ćete izaći na test.

13.05.2024.

Odbrane seminarskih radova

Odbrane seminarskih radova biće održane u ponedeljak 20. 05. 2024. godine od 18h u sali Jagic 3. Komentare na seminarske radove prosledićemo zaključno sa nedeljom 12. 05. 2024. godine.

10. 05. 2024.

Online konsultacije i test za bonus poene

Link na test Anketa će biti otovrena za postavljanje odgovora u toku konsultacija.

Online konsultacije i test za bonus poene biće održani putem webex platforme (link na sastanak) u sredu 8. maja u 18:50h. Da biste se pripremili, potrebno je da odslušate naredne video lekcije (i da pročitate odgovarajuće slajdove/tekstove):

28.04.2024.

Test - konkurentno i logičko programiranje

Drugi test, vezan za konkurentno i logičko programiranje programiranje, biće organizovan u četvrtak 16. aprila u terminu predavanja. U skladu sa brojem prijavljenih (anketa će biti postavljena u nedelji pred ispit) biće određen broj grupa i termini za polaganje.

Studenti koji odluče da rade test, dobijaju poene koji se prenose u svaki naredni ispitni rok i koji važe do kraja godine (ne prenose se na naredni kurs). Studenti koji odluče da ne rade test, ovaj deo gradiva polagaće u okviru ispita.

28.04.2024.

Test - funkcionalno programiranje

U skladu sa prijavama, svako može da polaže u grupi u kojoj se prijavio preko forme. Obe grupe polagaće u učionici 821. Molim Vas da dođete na vreme da bismo mogli da počnemo sa testom što ranije.

03.04.2024.

Test - funkcionalno programiranje

Prijava za prvi test - prijavite se!

31.03.2024.

Test - funkcionalno programiranje

Prvi test, vezan za funkcionalno programiranje, biće organizovan u četvrtak 4. aprila u terminu predavanja. Obe grupe imaće test u učionici 821 (sa početkom u 12 odnosno 14 časova). Test će biti rađen 15 do 20 minuta i sadržaće pitanja koja nose 14 poena (nalik pitanjima koja ste imali na ispitima iz Programiranja 1/2). Nakon testa, imaćemo normalno predavanje.

Uskoro će biti postavljena i anketa kako bi se proverilo ko želi da polaže test i u kojem terminu, i kako bi u skladu sa time test bio organizovan. Očekuje se da studenti polažu test u grupi u kojoj slušaju predavanja, male izmene će biti moguće, ali ne i veće izmene.

Studenti koji odluče da rade test, dobijaju poene koji se prenose u svaki naredni ispitni rok i koji važe do kraja godine (ne prenose se na naredni kurs). Studenti koji odluče da ne rade test, ovaj deo gradiva polagaće u okviru ispita.

29.03.2024.

Promena termina vežbi za grupe 3I1A i 3I1B

Od ponedeljka 18.03. važiće sledeći raspored:
Grupa: 3I1A
Termin: Sreda, 08:15-11:00
Učionica: 718

Grupa: 3I1B
Termin: Ponedeljak, 08:15-11:00
Učionica: BIM

16.03.2024.

Vežbe u drugoj nedelji nastave za grupe 3I2B i 5L

U ponedeljak 26. 02. 2024. godine vezbe predmeta Programske paradigme za grupe 3I2B i 5L u terminu 13h-16h neće biti održane. Molimo kolege da vezbe odslušaju u terminu grupe 3I2A (10h-13h istog dana na istoj lokaciji) ili u nekom od ostalih termina tokom nedelje.

25. 02. 2024.

Pocetak semestra

Svim studentima želimo srećan početak semestra.

18. 02. 2024.

Matematički fakultet, Univerzitet u Beogradu
školska 2023/24. godina