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]

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