Programske paradigme i jezici

Opis predmeta

Predmet daje pregled različitih programskih paradigmi. Obrađuju se koncepti koji postoje u raznim imperativnim programskim jezicima. Detaljnije se razrađuje objektno orijentirana programska paradigma te se upoznaje sa deklarativnom paradigmom. Završava se uvodom u paralelizam.

Opće kompetencije

Studenti će usvojiti koncepte zajedničke za više programskih jezika i paradigmi, čime će se pojednostavniti buduće učenje novih jezika. Utvrdit će znanje objektne paradigme i studente uvesti u problematiku funkcijskog i deklarativnog programiranja. Steći će se i praktična znanja programiranja u različitim programskim jezicima.

Ishodi učenja

  1. razlikovati između različitih programskih paradigmi
  2. odabrati prikladnu programsku paradigmu za rješavanje specifičnog problema iz programskog inženjerstva
  3. baratati s barem po jednim jezikom iz imperativne, objektno-orijentirane i deklarativne paradigme
  4. klasificirati programske jezike ovisno o paradigmi kojoj pripadaju
  5. prepoznati istovrsne koncepte u različitim programskim jezicima i paradigmama
  6. koristiti adekvatne načine imenovanja i organizacije programskog koda

Oblici nastave

Predavanja

Izvođenje predavanja prema temama kolegija kroz 13 tjedana.

Provjere znanja

Znanje će se provjeravati međuispitom u sredini kolegija i završnim ispitom na kraju kolegija. Tijekom semestra bit će zadavane domaće zadaće.

Laboratorijske vježbe

Na laboratorijskim vježbama studenti će raditi na vlastitim programskim rješenjima te demonstrirati njihovu ispravnost.

Pokusi na predavanjima

Na predavanjima će se studentima na interaktivan način prikazati rad u programskim jezicima različitih paradigmi.

Demonstracijske vježbe

Demonstracijskim vježbama će se demonstrirati uporaba tehnologija za savladavanje problema iz laboratorijskih vježbi i iz inženjerske prakse.

Konzultacije

Studenti će na konzultacijama moći nadopuniti znanje po svim temama kolegija.

Način ocjenjivanja

Kontinuirana nastava Ispitni rok
Vrsta provjere Prag Udio u ocjeni Prag Udio u ocjeni
Laboratorijske vježbe 0 % 50 % 0 % 50 %
Domaće zadaće 0 % 5 % 0 % 5 %
Međuispit: Pismeni 0 % 15 % 0 %
Završni ispit: Pismeni 0 % 15 %
Završni ispit: Usmeni 15 %
Ispit: Pismeni 0 % 30 %
Ispit: Usmeni 15 %
Napomena / komentar

Na usmenom ispitu studenti moraju dobiti minimalno 7,5 bodova za prolaz predmeta.

Tjedni plan nastave

  1. Apstraktni strojevi. Interpreter. Prevodilac. Izražajnost programskih jezika.
  2. Imena i okoline. Blokovi. Statički i dinamički doseg. Statičko i dinamičko upravljanje memorijom. Izvedba pravila dosega.
  3. Kontrolne strukture. Strukturirano programiranje. Rekurzija repa.
  4. Potprogrami. Funkcije višeg reda. Iznimke.
  5. Tipovi podataka. Statičko i dinamičko provjeravanje tipova. Složeni tipovi. Ekvivalencija tipova. Višeobličje. Automatsko određivanje tipova. Viseće reference. Sakupljači smeća. Apstraktni tipovi podataka. Skrivanje informacija. Moduli.
  6. Pokazno predavanje: kako pisati programski kôd.
  7. Vježba za ispit.
  8. Ispiti.
  9. Ispiti.
  10. Objektno orijentirana paradigma. Dinamički pronalazak metoda. Jednostruko i višestruko nasljeđivanje. Dinamičko prosljeđivanje metodama. Polimorfizam. Generici. Kovarijantno i kontravarijantno nadjačavanje.
  11. Pokazno predavanje: razvoj aplikacije u objektno-orijentiranom programskom jeziku.
  12. Funkcijska paradigma. Izračunavanje bez stanja. Strategije evaluacije. Podudaranje uzoraka. Osnove lambda računa.
  13. Pokazno predavanje: programiranje u funkcijskom programskom jeziku.
  14. Logička paradigma. Izračunavanje dedukcijom. Teorija unifikacije. Logičko programiranje s ograničenjima.
  15. Paralelizam. Povijesni pregled programskih jezika i paradigmi.

Studijski programi

Sveučilišni preddiplomski
Programsko inženjerstvo i informacijski sustavi (modul)
(6. semestar)
Računarska znanost (modul)
Izborni predmeti (6. semestar)
Telekomunikacije i informatika (modul)
Izborni predmeti (6. semestar)

Za upis predmeta treba položiti predmete

Literatura

M. Gabrielli, S. Martini (2010.), Programming Languages: Principles and Paradigms, Springer
S. McConnell (2004.), Code Complete: A Practical Handbook of Software Construction, 2/e, MS Press
D. P. Friedman, M. Wand, C. T. Haynes (2001.), Essentials of Programming Languages, 2/e, MIT Press
Tomas Petricek, Jon Skeet (2010.), Real World Functional Programming: With Examples in F# and C#, Manning Publications
B. Tucker, R. E. Noonan (2001.), Programming Languages: Principles and Paradigms, McGraw-Hill

Laboratorijske vježbe

Izvedba

ID 34282
  Ljetni semestar
4 ECTS
R1 Engleski jezik
R2 E-učenje
45 Predavanja
0 Auditorne vježbe
15 Laboratorijske vježbe

Ocjenjivanje

90 izvrstan
80 vrlo dobar
65 dobar
50 dovoljan