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 (tabela će biti naknadno postavljena).

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 2024/25. 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.
U zavisnosti od razvoja situacije, ova pravila će možda biti menjana.

Primer ispita

  • Primer praktičnog dela ispita: link.
  • Napomena: oblasti kao i sami jezici 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]

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