Sadržaj se učitava...
mdi-home Početna mdi-account-multiple Djelatnici mdi-script Studiji mdi-layers Katedre mdi-calendar-clock Raspored sati FOI Nastava search apps mdi-login
Napredni programski koncepti
Advanced Programming Concepts
2023/2024
4 ECTSa
Informacijski i poslovni sustavi 1.2 (IPS)
Katedra za teorijske i primijenjene osnove informacijskih znanosti
M1
6. semestar
Osnovne informacijemdi-information-variant Izvođači nastavemdi-account-group Nastavni plan i programmdi-clipboard-text-outline Model praćenjamdi-human-male-board Ispitni rokovimdi-clipboard-check-outline Rasporedmdi-calendar-clock Konzultacijemdi-account-voice
Izvođenje kolegija
Studij Studijski program Semestar Obavezan
Informacijski i poslovni sustavi 1.2 (IPS) Analiza i dizajn poslovnih sustava 6 izborni
Informacijski i poslovni sustavi 1.2 (IPS) Umjetna inteligencija u poslovanju 6 izborni
Informacijski i poslovni sustavi 1.2 (IPS) Umreženi sustavi i računalne igre 6 izborni
Informacijski i poslovni sustavi 1.2 (IPS) Razvoj programskih sustava 6 izborni
Cilj kolegija
Upoznavanje s različitim konceptima programiranja koji su povezani s najboljom praksom. Obrađuju se elementi pomoću kojih se ostvaruje kvalitetniji programski kod od početnog pisanja, njegovog poboljšanja i održavanja. Kroz više koncepata programiranja (apstrakcija, generičko, meta) daje se temelj za razvoj više razine upotrebljivosti programskih sustava kao što su programski okviri u kojima važnu ulogu ima višedretveni oblik rada uz korištenje mrežnih resursa i baza podataka.
Preduvjeti
Norma kolegija
Predavanja
30 sati
Vježbe u praktikumu
15 sati
Nastavnik Uloga na kolegiju Oblik nastave Tjedana Sati Grupa
Kermek Dragutin Nositelj Predavanja
Vježbe u praktikumu
1
1
2
1
1
3
Radošević Danijel Nositelj Predavanja
Vježbe u praktikumu
9
9
2
1
1
3
Kaniški Matija Suradnik
Novak Matija Suradnik Predavanja
Vježbe u praktikumu
5
5
2
1
1
3
Sadržaj predavanja
  • Programske paradigme i usporedba programskih jezika (2 + 0 sata)
    Uvod u programske paradige. Osobine različitih programskih jezika kao što su: C, C++, Java, C#, Python, Scala, F#, PHP, Kotlin, JavaScript, R, Clojure
  • Principi čistog koda (3 + 1 sata)
    Što je čisti kod, obilježja lošeg koda, konvencija naziva, organizacija funkcija i klasa, čitljivost, pisanje komentara, formatiranje koda, smanjivanje povezanosti, SOLID principi
  • Optimizacija programskog koda (2 + 1 sata)
    Uvod u optimizaciju programskog koda. Optimizacija koda u kompilatoru. Problem curenje memorije. Vrsta optimizacije programskog kod. Alati za pomoć u optimizaciji programskog koda. .
  • Refaktoriranje (3 + 2 sata)
    Poboljšanje postojećeg koda, definicija refaktoriranja, principi refaktoriranja, uloga jediničnog testiranja kod refktoriranja, primjeri metoda refaktoriranja.
  • Održavanje koda (1 + 0 sata)
    Kontinuirano čišćenje, dijeljenje vlasništva, otvorenost za nadogradnje, važnost jediničnih testova u svrhu održavanja koda.
  • Apstraktni koncepti programiranja (3 + 2 sata)
    Apstraktne klasa, sučelje, modeliranje na bazi apstraktnog pristupa, specifičnosti korištenja apstraktne klase u odnosu na sučelje.
  • Generičko programiranje (3 + 1 sata)
    Osobine generičkog pristupa, primjena generičkih tipova podataka u dinamičkim strukturama, biblioteke generičkih tipova.
  • Funkcijsko programiranje u objektno orijentiranom programiranju (2 + 1 sata)
    Anonimne funkcije i osobine funkcijskog programiranja. Lambda izrazi. Tokovi podataka (eng. stream), rad s kolekcijama i paralelno izvršavanje, prednosti funkcijskog programiranja u odnosu na objektno orijetirani pristup
  • Metaprogramiranje (3 + 1 sata)
    Refleksivni pristup, utvrđivanje osobina objekta i klase, dinamičko učitavanja klase, dinamička instantacija objekta, introspekcija.
  • Razvoj programskih okvira (3 + 3 sata)
    Osobine i razvoj programskih biblioteka, osobine programskih okvira, primjena apstraktnog koncepta i metaprogramiranja, razvoj za promjene i proširenja.
  • Višedretvenost (2 + 1 sata)
    Osobine dretve, kreiranje dretve, sinkronizacija dretvi, izvršavanje grupe dretvi, upravljanje vremenom rada dretve, prekid rada dretve.
  • Mrežno programiranje (3 + 2 sata)
    Mrežni resursi, korištenje mrežnih protokola, rad s mrežnim vratima (port) i mrežnom utičnicom (socket), izrada mrežnog poslužitelja i klijenta, sigurnost u mrežnom okruženju.
Sadržaj seminara/vježbi
Ishodi učenja kolegija
  • Usporediti generičko i objektno orijentirano programiranje.
  • Analizirati funkcijsko programiranje u imperativnim programskim jezicima.
  • Modelirati višedretvene programe.
  • Koristiti mrežne resurse u razvoju programa.
  • Procijeniti refleksivna svojstva izabranih programskih jezika.
  • Realizirati jednostavne programske okvire.
  • Provesti poboljšanje programskog koda primjenom principa čistog koda, refaktoriranja i jediničnog testiranja
Ishodi učenja programa
  • razumjeti stanje i trendove razvoja suvremenih informacijskih i komunikacijskih tehnologija (ICT), razumjeti njihov utjecaj na pojedinca, organizaciju i društvo te procijeniti njihovu primjenjivost u zadanom kontekstu
  • razumjeti i primijeniti ključne aspekte informacijske tehnologije (programiranje, algoritmi, strukture podataka, baze podataka i znanja
  • razumjeti i primijeniti suvremene tehničke koncepte i prakse u informacijskim tehnologijama (arhitektura računala, operacijski sustavi, mreže računala)
  • razumjeti i primijeniti matematičke metode, modele i tehnike primjerene rješavanju problema iz područja informacijskih i poslovnih sustava
  • razumjeti bitne čimbenike koji utječu na poslovanje organizacije i pojedinaca te primijeniti osnovne metode i koncepte planiranja, upravljanja i obračuna poslovanja
  • analizirati stanje, identificirati prilike i definirati probleme s kojima se susreću organizacije i pojedinci u primjeni ICT, te formulirati rješenja uz primjenu ICT
  • razumjeti osnovna vertikalna područja primjene ICT (industrija, zdravstvo, promet, turizam, država i sl.), te horizontalne aplikacije (uredski sustavi, DSS, CRM, ERP, DMS i sl.)
  • razumjeti i primijeniti suvremene metodološke pristupe razvoja organizacijskih i informacijskih sustava, te oblikovanja organizacije i organizacijske strukture
  • razumjeti suvremene organizacijske koncepte i upravljati organizacijskom kulturom
  • modelirati poslovne procese i podatke u organizacijama i primijeniti modele u razvoju informacijskih i poslovnih sustava
  • razumjeti i primijeniti metode, tehnike razvoja informacijskih i programskih sustava u suvremenim razvojnim okolinama
  • razumjeti i primijeniti procese, metode i tehnologije upravljanja IT uslugama i resursima te podrške i pružanja različitih vrsta usluga vezanih uz ICT
  • razumjeti i primijeniti etička načela, zakonsku regulativu i norme koje se primjenjuju u struci
  • razumjeti osnovna načela i metode upravljanja organizacijom i uspješno raditi u timu
  • uspješno komunicirati s klijentima, korisnicima i kolegama na verbalan i pisani način uz primjenu odgovarajuće terminologije uključujući i sposobnost komunikacije o struci na stranom jeziku
  • pratiti stručnu literaturu na hrvatskom i stranom jeziku, pripremiti i samostalno održati prezentacije na hrvatskom i stranom jeziku stručnoj i općoj publici, te kritičku evaluaciju prezentirane stručne teme
  • razumjeti i primijeniti vještine učenja potrebne za cjeloživotno učenje i nastavak obrazovanja na diplomskom studiju.
  • razumjeti i primijeniti osnovne principe planiranja i razvoja karijere u struci i vlastitih poduzetničkih poduhvata
Osnovna literatura
  • Allen B. Tucker, Programming Language: Principles and Paradigms 2nd Edition, McGraw-Hill, 2017.
  • Robert C. Martin, The Clean Coder: A Code of Conduct for Professional Programmers, Prentice Hall, 2011.
  • Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 2 edition, 2018.
  • Robert C. Martin, Clean Architecture: A Craftsman's Guide to Software Structure and Design, Prentice Hall, 2017.
  • Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, Modern Java in Action: Lambdas, streams, functional and reactive programming, 2 edition, Manning Publications, 2018.     
  • Charlie Hunt, Monica Beckwith, Poonam Parhar, Bengt Rutisson - Java Performance Companion 1st Edition, Addison-Wesley Professional, 2016.
Dopunska literatura
  • Joshua Bloch, Effective Java 3rd Edition, Addison-Wesley Professional, 2018.
  • Mark Lutz, Learning Python, 5th Edition, O'Reilly Media, 2013. (23rd release 2019. ili novije)
Slični kolegiji
Redoviti studenti Izvanredni studenti
izvanredni rok
Datum: 27.11.2024.
Vrijeme: 16:00
Opis: Na Fakultetu
izvanredni rok
Datum: 25.04.2025.
Vrijeme: 16:00
Opis: Na Fakultetu
U kalendaru ispod se nalaze konzultacije predmetnih nastavnika, no za detalje o konzultacijama možete provjeriti na profilu pojedinog predmetnog nastavnika.
2024 © Fakultet organizacije i informatike, Centar za razvoj programskih proizvoda