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. U okviru tabele izaberite karticu za odgovarajući ispitni rok.

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.
Trajanje rada zadataka je 120 minuta. Zadaci će biti iz sledećih oblasti:
  1. Funkcionalno programiranje, Haskell, oko 50% poena
  2. Konkurentno ili distribuirano programiranje, Scala, oko 25% poena
  3. Logičko programiranje ili programiranje ograničenja, Prolog, oko 25% poena
Trajanje rada teorije je 50 minuta. Pitanja će biti iz sledećih oblasti:
  1. Uvod (oko 3 poena)
  2. Funkcionalno programiranje (oko 15 poena)
  3. Logičko programiranje (oko 10 poena)
  4. Konkurentno programiranje (oko 10 poena)
  5. Skript programiranje (oko 5 poena)
  6. Domenski specifični jezici (oko 3 poena)
Pragovi na zadacima:
  • 40% od ukupnog broja poena na svim zadacima
Pragovi na teoriji:
  • 40% od ukupnog broja poena na teoriji.
Organizacija ispita u 2024/25. godini

Praktični i teorijski deo ispita se mogu polagati u različitim isptinim rokovima. Teorija se pregleda i ocenjuje samo nakon što je položen praktični deo. Dakle, mežete prvo da radite teoriju, ali će teorija biti pregledana tek kada položite praktični deo. Teoriju je moguće polagati i iz dva dela. U prvom delu se radi deo vezan za funkcionalno, skript i domenski specifično programiranje. U drugom delu uvod, konkurentno i logičko programiranje.

Primer ispita

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

Materijali

Sva predavanja su snimljena i dostupna. Link na video materijale.

Linkovi na pisane materijale su dati u nastavku.
  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

Svi potrebni materijali za pripremu ispita su dostupni preko narednih linkova.

Za vežbe su dostupni video materijali.
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 2

Rezultate ispita možete videti na narednoj adresi.
Uvid u radove biće održan putem mejla u četvrtak, 30. 10. 2025. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u praktični deo ispita za prvi zadatak javiti se asistentu Miloju, za drugi asistentu Milanu i za treći asistentu Stefanu.

Ocene su unete u Hipatiju. Molimo studente da provere svoje ocene i prijave eventualne nepravilnosti. Pogledajte pažljivo - ispitni spiskovi biće zaključeni u petak 31. 10. i nakon toga neće biti moguće izmene!

29. 10. 2025.

Termin ispita za Sep 2

Ispit se održava u utorak, 28.10.2025 na Studentskom trgu.
Praktični deo ispita počinje u 9 časova
Teorijski deo ispita počinje u 11 časova.

27. 10. 2025.

Forma za prijavu ispita Septmebar2

Prijava za ispitni rok Septembar2 je dostpuna putem sledeće forme. Anketa će biti otvorena do ponedeljka, 27.10.2025. do 15h . Detaljna objašnjenja o polaganju ispita se nalaze u prethodnim objavama. Kada svi popune anketu na stranici kursa će biti dodatno obaveštenje o redosledu teorije i praktičnog dela ispita.

25.10.2025.

Rezultati ispita u ispitnom roku Septembar 1

Rezultate ispita možete videti na narednoj adresi.
Uvid u radove biće održan putem mejla zaključno sa utorkom, 21. 10. 2025. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u praktični deo ispita za prvi zadatak javiti se asistentu Miloju, za drugi asistentu Milanu i za treći asistentu Stefanu.

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

18. 10. 2025.

Termin ispita za Sep 1

Ispit se održava u sredu, 15.10.2025 na Studentskom trgu.
Praktični deo ispita počinje u 9 časova
Teorijski deo ispita počinje u 11 časova.

14. 10. 2025.

Forma za prijavu ispita Septmebar1

Prijava za ispitni rok Septembar1 je dostpuna putem sledeće forme. Anketa će biti otvorena do utorka, 14.10.2025. do 15h . Detaljna objašnjenja o polaganju ispita se nalaze u prethodnim objavama. Kada svi popune anketu na stranici kursa će biti dodatno obaveštenje o redosledu teorije i praktičnog dela ispita.

12.10.2025.

Rezultati ispita u ispitnom roku Jun 2

Rezultate ispita možete videti na narednoj adresi. Rezultati za Haskel su spojeni u jedan zadatak sa ukupnim zbirom od 50 poena.
Uvid u radove biće održan putem mejla zaključno sa sredom, 08. 10. 2025. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u praktični deo ispita za prvi zadatak javiti se asistentu Miloju, za drugi asistentu Milanu i za treći asistentu Stefanu.

Ocene su unete u Hipatiju. Molimo studente da provere svoje ocene i prijave eventualne nepravilnosti.
Studentima koji nisu prijavili ispit, ocene nisu unete u Hipatiju.

05. 10. 2025.

Termin ispita za Jun 2

Ispit se održava u četvrtak, 02.10.2025 na Studentskom trgu.
Praktični deo ispita počinje u 9 časova
Teorijski deo ispita počinje u 11 časova.

01. 10. 2025.

Forma za prijavu ispita Jun2

Prijava za ispitni rok Jun2 je dostpuna putem sledeće forme. Anketa će biti otvorena do srede, 01.10.2025. do 15h . Detaljna objašnjenja o polaganju ispita se nalaze u prethodnim objavama. Kada svi popune anketu na stranici kursa će biti dodatno obaveštenje o redosledu teorije i praktičnog dela ispita.

29. 09. 2025.

Rezultati ispita u ispitnom roku Jun 1

Rezultate ispita možete videti na adresi.
Uvid u radove biće održan putem mejla zaključno sa sredom, 24. 09. 2025. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u praktični deo ispita za prvi zadatak javiti se asistentu Miloju, za drugi asistentu Milanu i za treći asistentu Stefanu.

Ocene su unete u Hipatiju. Molimo studente da provere svoje ocene i prijave eventualne nepravilnosti.
Studentima koji nisu prijavili ispit, ocene nisu unete u Hipatiju.

20. 09. 2025.

Termin ispita za Jun 1

Ispit se održava u petak, 19.09.2025 na Studentskom trgu.
Praktični deo ispita počinje u 9 časova
Teorijski deo ispita počinje u 11 časova.

18. 09. 2025.

Forma za prijavu ispita Jun1

Prijava za ispitni rok Jun1 je dostpuna putem sledeće forme. Anketa će biti otvorena do četvrtka, 18.09.2025. do 16h . Detaljna objašnjenja o polaganju ispita se nalaze u prethodnim objavama. Kada svi popune anketu na stranici kursa će biti dodatno obaveštenje o redosledu teorije i praktičnog dela ispita.

15. 09. 2025.

Rezultati ispita u ispitnom roku Januar 2 / Januar 2 PS 2025

Rezultate ispita možete videti na adresi.
Uvid u radove biće održan putem mejla zaključno sa nedeljom, 07. 09. 2025. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u praktični deo ispita za prvi zadatak javiti se asistentu Miloju, za drugi asistentu Milanu i za treći asistentu Stefanu.

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

04. 09. 2025.

Termin ispita za Januar 2/Januar 2 PS

Ispit se održava u subotu, 30.08.2025 na Studentskom trgu.
Praktični deo ispita počinje u 9 časova
Teorijski deo ispita počinje u 11 časova.

29. 08. 2025.

Forma za prijavu ispita Januar2 / Januar 2 PS

Prijava za ispitne rokove Januar 2/Januar 2 PS je dostpuna putem sledeće forme. Anketa će biti otvorena do petka, 29.08.2025. do 17h . Detaljna objašnjenja o polaganju ispita se nalaze u prethodnim objavama. Kada svi popune anketu na stranici kursa će biti dodatno obaveštenje o redosledu teorije i praktičnog dela ispita.

26. 08. 2025.

Rezultati ispita u ispitnom roku Januar 1 / Januar 1 PS 2025

Rezultate ispita možete videti na adresi.
Uvid u radove biće održan putem mejla zaključno sa nedeljom, 24. 08. 2025. godine.
Za uvid u teorijski deo ispita javiti se profesorki. Za uvid u praktični deo ispita za zadatak iz Scale (2. zadatak) javiti se asistentu Milanu, za ostale zadatke asistentu Miloju.

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

21. 08. 2025.

Termin ispita za Januar 1/Januar 1 PS

Ispit se održava u ponedeljak, 18.08.2025 na Studentskom trgu.
Praktični deo ispita počinje u 9 časova
Teorijski deo ispita počinje u 11 časova.

17. 08. 2025.

Forma za prijavu ispita Januar1/Januar 1 PS

Prijava za ispitne rokove Januar 1/Januar 1 PS je dostpuna putem sledeće forme. Anketa će biti otvorena do nedelje, 17.08.2025. do 11h . Detaljna objašnjenja o polaganju ispita se nalaze u prethodnim objavama. Kada svi popune anketu na stranici kursa će biti dodatno obaveštenje o redosledu teorije i praktičnog dela ispita.

12. 08. 2025.

Tekući rezultati

Rezultate svih ispitnih rokova možete da pratite u okviru naredne tabele. U okviru tabele izaberite karticu za odgovarajući ispitni rok. Link je postavljen i u okviru kartice Obaveze studenata.

11. 08. 2025.

Biće uvek neophodna prijava ispita putem forme na strani kursa! Molimo Vas da o tome vodite računa jer će organizacija ispita biti veoma zahtevna.

Praktični deo ispita

Ukupan broj poena na praktičnom delu je 55. Na praktičnom delu ispita biće zastupljene naredne oblasti:
  1. Funkcionalno programiranje, Haskell, oko 50% poena
  2. Konkurentno ili distribuirano programiranje, Scala, oko 25% poena
  3. Logičko programiranje ili programiranje ograničenja, Prolog, oko 25% poena
Ukupan prag za polaganje ispita je 40% poena na zadacima, neće biti pragova po pojedinačnim zadacima. Ove godine programski jezik Python neće biti ispitivan na praktičnom delu ispita.

Teorijski deo ispita

Ukupan broj poena na teorijskom delu je 45. Na teoriji će biti pitanja iz narednih oblasti
  1. Uvod, programiranje ograničenja (oko 3 poena)
  2. Funkcionalno programiranje (oko 15 poena)
  3. Logičko programiranje (oko 10 poena)
  4. Konkurentno programiranje (oko 10 poena)
  5. Skript programiranje (oko 5 poena)
  6. Domenski specifični jezici (oko 3 poena)
Ukupan prag za polaganje ispita je 40% poena na teoriji, neće biti pragova po pojedinačnim oblastima.

Praktični i teorijski deo ispita se mogu polagati u različitim isptinim rokovima. Teorija se pregleda i ocenjuje samo nakon što je položen praktični deo i nakon što su polagana oba dela teorije. Dakle, mežete prvo da radite teoriju, ali će teorija biti pregledana tek kada položite praktični deo. Teoriju je moguće polagati i iz dva dela (dva testa). U prvom delu se radi deo vezan za funkcionalno, skript i domenski specifično programiranje. U drugom delu uvod, programiranje ograničenja, konkurentno i logičko programiranje. Ako delite teoriju, podrazumeva se da prvo radite prvi deo pa kasnije drugi.

Teorija se polaže u istom terminu sa praktičnim delom. Dakle, studenti koji izađu na ispit prvo rade praktični pa teoriju (ili obrnuto, zavisi od organizacije ispita i broja prijavljenih studenata - biće uvek jasno navedeno na strani kursa kada se šta radi). Između praktičnog i teorije imate kratku pauzu, 5-10 minuta. Jedan deo teorije se radi oko 20 minuta (dva dela oko 40 minuta).

Na primer, možete da polažete praktični u prvom roku, prvi deo teorije u drugom roku, a drugi deo teorije u četvrtom roku. Rezultate praktičnog ćete dobiti odmah, a rezultate teorije (ukoliko je praktični položen) u četvrtom roku, tj. kada kompletirate polaganje teorije.
Ili, možete da polažete oba dela teorije u prvom roku, i posle praktični u trećem roku. U tom slučaju, dobićete sve rezultate u trećem roku.
Kombinujte kako vam najviše odgovara. Termin polaganja je uvek zvanični termin ispita i neće biti polaganja u drugim danima.

Ukoliko je neko polagao deo teorije prošle godine i želi da to iskoristi, to može da uradi u prva dva ispitna roka. U ta dva roka može da se polaže teorija po starom (dakle teorija koja uključuje sve oblasti i sva tri testa). Potrebno je da se pre ispita javite predmetnom asistentu kako biste dobili odgovarajuće testove. U preostalim rokovoma nije moguće polagati po starom.

23. 07. 2025.

Polaganje ispita u akademskoj 2024/2025

U ovoj godini neće biti projekata, obzirom da su projekti do sada bili dodatna (neobavezna) aktivnost. Za izvođenje projekata neophodni su aktivna nastava, konsultacije i kasnije odbrane, što u ovom trenutku nije moguće organizovati na pravi način.
Ispit će se polagati putem praktičnog i teorijskog dela. Više informacija biće poznato kada bude poznat plan rada u ovoj godini.

08. 03. 2024.

Početak semestra

Svi materijali potrebni za pripremu ispita su dostupni sa kartica za predavanja i vežbe. Po okončanju blokada, nastava će biti organizovana u skladu sa opštim dogovorom sa studentima. Za sva pitanje i dodatne informacije možete poslati mejl.

17. 02. 2025.

Matematički fakultet, Univerzitet u Beogradu
školska 2024/25. godina