DIZAJN PROGRAMSKIH JEZIKA

Kurs dizajn programskih jezika je obavezan kurs na trećoj godini R smera. U okviru kursa se proučavaju različite karakteristike programskih jezika i stilova programiranja:

  • Skript programiranje kroz Python
  • Programiranje ograničenja kroz Python constraint
  • Komponentno programiranje kroz JavaFX
  • Konkurentno programiranje i odgovarajući mehanizmi konkurentnog programiranja kroz Javu
  • Generičko programiranje kroz C++
U okviru studija postoje i drugi kursevi koji se bave bliskim temama.

Predmetni nastavnik:

Asistent:

Obavezni predmet

  • 5 ESPB bodova
  • 2 časa predavanja
  • 2 časa vežbi

Predispitne obaveze (45 poena):

  • teorija: 20 poena
  • zadaci: 25 poena

Završni ispit (55 poena):

  • teorija: 25 poena
  • zadaci: 30 poena
Na ispitu se istovremeno rade i teorija i zadaci. Da bi položio ispit, student treba da ostvari najmanje 51 poen, od čega najmanje 40% na teoriji (18 poena) i najmanje 40% na zadacima (22 poena) i na završnom ispitu minimum 30% na praktičnom delu, od čega minimum 15% na C++u i minimum 15% na Javi.

Primeri

  • Primer zadataka za kolokvijum (OVDE)
  • Primer praktičnog dela završnog ispita (OVDE)

Programski jezici - uvod

Skript programiranje, programiranje ograničenja

Konkurentno programiranje

Parametarski polimorfizam

  • Parametarski polimorfizam. Generičko programiranje kroz C++.
    Slajdovi. Tekst.

Svojstva programskih jezika

Dodatni materijali

  • Dodatni materijali za učenje se mogu naći ovde.

ČAS 1

ČAS 2

ČAS 3

  • Python: obilazak direktorijuma, sortiranje. Programiranje ograničenja: uvodni primeri.
    [Zadaci] [Rešenja]

ČAS 4

ČAS 5

ČAS 6

ČAS 7

  • Konkurentno programiranje. Paralelizacija podataka i zadaci sa grafičkim korisničkim interfejsom.
  • [Zadaci] [Rešenja]

Kolokvijum

Na praktičnom delu će biti ukupno pet zadataka:
  • četiri zadatka iz skript programiranja (od toga dva iz oblasti programiranja ograničenja)
  • jedan zadatak iz konkurentnog programiranja
    • u okviru ovog zadatka, deo koji nije obavezan - pravljenje GUI-a koji, ukoliko se radi, donosi bonus poene

ČAS 8

  • Konkurentno programiranje. Paralelizacija zadataka (katanci i uslovni redovi čekanja) i zadaci sa grafičkim korisničkim interfejsom.
  • [Zadaci] [Rešenja]

ČAS 9

  • Konkurentno programiranje. Nastavak projekta sa grafičkim korisničkim interfejsom.
  • Generičko programiranje. Uvodni primeri.
  • [Zadaci] [Rešenja]

ČAS 10

ČAS 11

ČAS 12

ČAS 13

Primeri ispita

  • [Januar]
  • [Septembar]


  • Bitno: ove godine, praktični deo ispita će nositi 35 poena (5 poena više od dosadašnjeg plana) zbog ponavljanja zadatka iz Jave sa kolokvijuma. Prag ostaje isti kao i do sada i odnosi se na 30 poena (ne računajući bonus zadatak).

    Šablon za Javu koji će biti dostupan na ispitu: [šablon]. Za C++ će biti na raspolaganju html knjiga: [cppreference].

    Literatura za predavanja

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

    Literatura za vežbe

    Dodatno

    Spisak programa potrebnih za kurs

    • Python 2.7
    • biblioteka python-constraint
    • Java JDK 1.8
    • IntelliJ
    • G++

    Primeri

    Rezultati ispita - Septembar 1

    Ukupne rezultate ispita možete videti ovde. Poeni su uneti i u Hipatiju (obavezno prijaviti ako primetite neko neslaganje). Za uvid u teorijski deo javiti se profesorki elektronskim putem, a za praktičuni deo ispita javiti se asistentkinji elektronskim putem. Termin upisa ocena: sreda 25. 09. u 17:45 (kabinet 716) ili u 18:30 (u učionici u kojoj ce biti održan ispit iz MSNR-a).

    13.09.2019.

    Dodatni termin za upis ocena

    Studenti koji su položili ispit a nisu do sada upisali ocenu mogu upisati ocenu u ponedeljak 15. jula u 17h (kabinet 716).

    13.7.2019.

    Rezultati ispita - Jun 1

    Ukupne rezultate ispita možete videti ovde. Poeni su uneti i u Hipatiju (obavezno prijaviti ako primetite neko neslaganje). Za uvid u praktični deo ispita javiti se asistentkinji elektronskim putem zaključno sa utorkom, 2.7. Termin upisa ocena biće naknadno objavljen.

    28.06.2019.

    Rezultati ispita - Jun 1

    Rezultati teorije mogu se videti ovde. Uvid u teorijski deo ispita: utorak 25. jun u 9:40, kabinet 716.

    22.06.2019.

    Rezultati ispita - Januar 2

    Rezultate ispita možete pogledati ovde. Poeni su uneti i u Hipatiju (obavezno prijaviti ako primetite neko neslaganje). Studenti koji nisu osvojili prag, označeni su crvenom.

    • uvid u praktični deo ispita: javiti se elektronskim putem asistentkinji zaključno sa utorkom, 12.02.
    • uvid u teorijski deo ispita i upis ocena: sreda, 13.02. u 9h (u pauzi između predavanja na kursu pp)

    11.02.2019.

    Ispit - Januar 2

    Ispit će biti održan u četvrtak, 7.2. sa početkom u 9h na Trgu. Prvo se radi teorijski test (35 min) u učionici 706, a nakon toga praktični deo na fakultetskim računarima (3 sata).

    Bitno: ove godine, praktični deo ispita će nositi 35 poena (5 poena više od dosadašnjeg plana) zbog ponavljanja zadatka iz Jave sa kolokvijuma. Prag za praktični deo ostaje isti kao i do sada, tj. potrebno je imati minimum 4.5 poena na C++u (3. i 4. zadatak na ispitu) i minimum 4.5 poena na Javi (1. i 2. zadatak na ispitu).

    Šablon za Javu koji će biti dostupan na ispitu: [šablon]. Za C++ će biti na raspolaganju html knjiga: [cppreference].

    6.2.2019.

    Ispit - Januar 2

    Zbog velikog broja prijavljenih studenata na Hipatiji, zamolili bismo da potvrdite ukoliko sigurno izlazite na ispit u četvrtak, 7.2. preko ankete koju možete pronaći ovde. Prijavljivanje traje do srede, 6.2. u 12h nakon čega će biti okačeno obaveštenje u vezi sa organizacijom ispita.

    4.2.2019.

    Rezultati ispita - Januar

    Rezultate ispita možete pogledati ovde. Poeni su uneti i u Hipatiju (obavezno prijaviti ako primetite neko neslaganje). Studenti koji nisu osvojili prag (minimum po 4.5 poena Java i C++), označeni su crvenom.

    Bitno: studenti koji imaju više od 10 poena na teoriji, a nisu položili praktični deo ispita, mogu da prenesu poene sa teorije na naredni rok (ukoliko to žele).
      Uvid
    • teorija: javiti se elektronskim putem
    • zadaci: javiti se elektronskim putem zaključno sa sredom, 30.1.
    Upis ocena: 7.2. u 9h, kabinet 716.

    Posebne čestitke narednim studentima na ostvarenim izuzetnim rezultatima u okviru kursa:
    1. Milinkovic Ognjen
    2. Šimpraga Jelena
    3. Kutlešić Dubravka
    4. Ležaić Nikolina

    27.1.2019.

    Ispit - Januar 1

    Ispit će biti održan u četvrtak, 24.01. sa početkom u 9h na Trgu. Prvo se radi teorijski test (35 min), a nakon toga praktični deo na fakultetskim računarima (3 sata).

    Bitno: ove godine, praktični deo ispita će nositi 35 poena (5 poena više od dosadašnjeg plana) zbog ponavljanja zadatka iz Jave sa kolokvijuma. Prag ostaje isti kao i do sada i odnosi se na 30 poena (ne računajući bonus zadatak).

    Šablon za Javu koji će biti dostupan na ispitu: [šablon]. Za C++ će biti na raspolaganju html knjiga: [cppreference].

    22.01.2019.

    *** Dragi studenti, želimo vam srećne novogodišnje i božićne praznike i puno uspeha u 2019. godini! ***

    28.12.2018.

    Rezultati kolokvijuma

    Rezultate kolokvijuma i tekuće poene na predispitnim obavezama možete pogledati ovde. Poeni su uneti i u Hipatiju (obavezno prijaviti ako primetite neko neslaganje). Ukoliko neko nije zadovoljan skaliranjem poena za peti zadatak i želi da se kod pregleda ručno, potrebno je javiti se asistentkinji mejlom zaključno sa petkom, 30.11.

    Bitno: praktični deo ispita će nositi 35 poena (5 poena više od dosadašnjeg plana) i na ispitu će biti ponovljena vrsta zadatka sa kolokvijuma koja je bila sporna (peti zadatak).
      Uvid
    • teorija: na pauzi između časova predavanja u ponedeljak, 26.11.
    • zadaci: u petak, 30.11. u 12h (kabinet 716)

    25.11.2018.

    Seminarski radovi

    Predati seminarski radovi se mogu naći ovde.

    14.11.2018.

    Kolokvijum

    Kolokvijum će biti održan u utorak, 20.11. sa početkom u 9h na Trgu. Prvo se radi teorijski test (25 min), a nakon toga praktični deo na fakultetskim računarima (120 min).

    Na praktičnom delu će biti ukupno pet zadataka: četiri zadatka iz skript programiranja (od toga dva iz oblasti programiranja ograničenja) i jedan zadatak iz konkurentnog programiranja (u okviru ovog zadatka će postojati deo koji nije obavezan - pravljenje GUI-a koji će, ukoliko se radi, doneti određen broj bonus poena).

    14.11.2018.

    Predispitne obaveze

    Tekuće poene na predispitnim obavezama možete pratiti ovde.

    09.11.2018.

    Nadoknada

    Termini nadoknade:
    • utorak, 30.10. 8-10 (RLAB)
    • sreda, 31.10. 10-12 (DLAB)

    26.10.2018.

    Vežbe

    U petak, 19.10. neće biti časova vežbi u obe grupe. Termin nadoknade biće dogovoren sa studentima na času sledeće nedelje.

    18.10.2018.

    Teme za seminarske radove

    Teme za seminarske radove se mogu naći ovde.
    Kratka obuka korišćenja Latexa će biti održana u ponedeljak 22. oktobra. Ovde se može naći šablonski dokument koji treba koristiti pri izradi seminarskog rada.
    Rok za izradu seminarskog rada je 15 dana od datuma kada se data tema obradi na predavanjima. Za teme koje su već obrađene, rok se računa u odnosu na 22. oktobar.
    Predavanje seminarskog rada: poslati mejlom odgovarajuću zip arhivu koja sadrži .tex, .bib i .pdf fajl (i eventualno neke slike ukoliko se koriste u radu).
    Zamena teme je moguća ukoliko nađete odgovarajućeg para za zamenu (u tom slučaju je potrebno prijaviti zamenu).

    16.10.2018.

    Prijava seminarskog rada

    Ukoliko želite da radite seminarski rad potrebno je da se do 10.10.2018. prijavite preko ove forme. Izrada seminarskog rada nije obavezna i može se ostvariti maksimalni broj poena i desetka i bez izrade seminarskog rada. Ipak, ukoliko se prijavite da radite seminarski rad pa posle toga od izrade seminarskog odustante, to će biti sankcionisano negativnim poenima.
    Teme će biti podeljene do 15.10. kada će biti određeni i rokovi za izradu seminarskog rada koji će biti različiti, u zavisnosti od dodeljene teme.
    Izrada seminarskog rada obuhvata pisanje teksta koji prati izlaganja neke od tema koje se obrađuju na predavanjima. U okviru izrade seminarskog rada očekuje se da se savlada Latex.

    06.10.2018.

    Početak nove školske godine

    Svim studentima želimo lep i uspešan početak školske 2018/19. godine!

    24.9.2018.

    Matematički fakultet, Univerzitet u Beogradu
    školska 2018/19. godina