Programiranje na visokoj razini apstrakcije

Prikazani su podaci za akademsku godinu: 2023./2024.

Opis predmeta

Metode kao objekti prvog reda. Lijeno izračunavanje. Pobrojivi objekti i iteratori. Obrada podatkovnog toka kompozicijom iteratora. Zadavanje iteratora i kolekcija u sažetom skupovnom zapisu. Rukovanje pobrojivim objektima. Čiste funkcije i popratni učinci funkcija. Pakiranje i raspakiravanje argumenata. Umatanje funkcija. Bezimene funkcije. Kontekstne funkcije. Dekoratori i memoizacija. Generatorske funkcije. Razredi kao objekti prvog reda. Deskriptori i svojstva. Metarazredi.

Studijski programi

Sveučilišni diplomski
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)
Izborni predmeti (1. semestar) (3. semestar)

Ishodi učenja

  1. objasniti prednosti implicitnog polimorfizma u dinamičkim jezicima
  2. primijeniti metode kao punopravne objekte
  3. objasniti prednosti lijenog izračunavanja
  4. objasniti elemente iteratorskog protokola
  5. primijeniti umatanje funkcija za ostvarivanje lijenog izračunavanja
  6. ocijeniti prednosti generatora u odnosu na klasične programske tehnike

Oblici nastave

Predavanja

Predavanja će se održavati u trajanju od 2 sata tjedno.

Samostalni zadaci

Samostalni zadatci rješavat će se kao priprema i u okviru laboratorijskih vježbi.

Laboratorij

Laboratorijske vježbe će se održavati u četiri ciklus a po 2 školska sata.

Način ocjenjivanja

Kontinuirana nastava Ispitni rok
Vrsta provjere Prag Udio u ocjeni Prag Udio u ocjeni
Laboratorijske vježbe 50 % 20 % 50 % 20 %
Međuispit: Pismeni 0 % 35 % 0 %
Završni ispit: Pismeni 30 % 45 %
Ispit: Pismeni 50 % 80 %

Tjedni plan nastave

  1. Definicija klasa: polja. metode i konstruktori, Podklase. nasljeđivanje i prekrivanje metoda, Sustavi modula
  2. Dinamičko upućivanje: definicija poziva metode, Podtipovi
  3. Razredi, metode i funkcije kao prvorazredni objekti
  4. Korištenje klasa prikupljanja. iteratora i ostlih komponenti iz zajedničke biblioteke
  5. Ugnježdene i unutarnje klase i funkcije kao prvorazredni objekti
  6. Popratni efekti i izračunavanje bez stanja. Odloženo izračunavanje i beskonačni tokovi
  7. Funkcije višeg reda (preuzimanje i vraćanje funkcija)
  8. Međuispit
  9. Ugnježdene i unutarnje klase i funkcije kao prvorazredni objekti
  10. Idiomi funkcijskog programiranja (map, reduce/fold, filter)
  11. Odloženo izračunavanje i beskonačni tokovi
  12. Odloženo izračunavanje, beskonačne strukture, strogost. Upravljačke apstrakcije (obrada iznimaka, continuations, monads)
  13. Obrambeno programiranje (e.g. sigurno programiranje, obrada iznimaka)
  14. Metaprogramiranje (makro programiranje, generativno programiranje, razvoj temeljen na modelima)
  15. Završni ispit

Literatura

Zoran Kalafatić, Antonio Pošćić, Siniša Šegvić, Julijan Šribar (2016.), Python za znatiželjne, Element
Luciano Ramalho (2021.), Fluent Python, O'Reilly Media

Za studente

Izvedba

ID 222725
  Zimski semestar
5 ECTS
R1 Engleski jezik
R1 E-učenje
30 Predavanja
0 Seminar
0 Auditorne vježbe
8 Laboratorijske vježbe
0 Konstrukcijske vježbe

Ocjenjivanje

88 izvrstan
75 vrlo dobar
62 dobar
50 dovoljan