Naziv
Napredno programiranje
Organizacijska jedinica
Odsjek za informacijske i komunikacijske znanosti
ECTS
4
Šifra
266152
Semestri
ljetni
Nastavnici
Satnica
Predavanja
30
Vježbe u praktikumu
15
Preduvjeti za upis i polaganje kolegija
Za upis kolegija se moraju

Cilj
Osposobiti studente za definiranje naprednih koncepata u programiranju i primjenjivanje programerskih paradigmi.
Osposobiti studente za analizu i rješavanje složenih programerskih problema primjenom napredne programerske metodologije i prakse.
Osposobiti studente za naprednu primjenu odabranog programskog jezika te radnog okruženja.
Osposobiti studente planiranje i organiziranje programa na temelju objektu usmjerene paradigme programiranja.
Osposobiti studente za strukturiranje naprednog programskoga koda i izradu složenih programa primjenom odabranog programskog jezika i usvojene programerske metodologije i prakse.
Sadržaj
  1. Uvod u kolegij. Pregled programerskih paradigmi. Sličnosti i razlike u pristupima. Koncepti i praksa. Arhitektura računala i utjecaj. Standardi.
  2. Datoteke. Vrste i podvrste. Pristupi. Modusi za rad s datotekama. Otvaranje i čitanje datoteka. Rad s datotekama. Funkcije i metode.
  3. Datoteke. Zapisivanje i zatvaranje datoteka. Pohrana podataka u datotekama. Formati. Podržani tipovi podataka. Kodiranje i dekodiranje. Funkcije i metode.
  4. Pogreške. Analiza i uklanjanje pogrešaka. Upravljanje izuzecima. Klase pogrešaka.
  5. Rad s izuzecima. Posebni izrazi. Potvrđivanje. Namjenske naredbe.
  6. Funkcije. Svojstva funkcija. Definicija funkcije. Jednostavne funkcije. Lokalnost i globalnost. Djelokrug. Formalni i stvarni parametri. Vraćanje vrijednosti. Zadane vrijednosti.
  7. Napredne funkcije. Proizvoljnost argumenata. Anonimne funkcije. Generatori i iteratori. Prijenos parametara. Komentiranje i dokumentiranje.
  8. Napredan rad modulima. Matematička obrada. Nasumičnost. Pseudo-nasumičnost. Funkcije i metode. Inicijalizacija generatora. Kriptografska sigurnost.
  9. Izrada modula. Pravila i karakteristike. Moduli i paketi. Vidljivost i putanje. Dohvaćanje identifikatora. Notacija. Razlikovanje načina pristupa modulu. Korisni alati i paketi.
  10. Uvod u rekurzije. Svrha rekurzije. Karakteristike rekurzije. Kontrola rekurzije. Unutarnje funkcije i razlika. Kombiniranje unutarnje funkcije i rekurzije. Primjena rekurzije.
  11. Regularni izrazi. Uvod i motivacija. Pravila. Identifikatori. Modifikatori. Meta-znakovi. Znakovi bjeline. Tretiranje posebnih znakova. Klase znakova. Grupe i nizovi.
  12. Objektu usmjereno programiranje. Motivacija i svrha. Prednosti i nedostaci. Terminologija. Objekt. Instanca. Klasa. Svojstva. Implementacija klase.
  13. Instancijacija. Atributi. Parametri. Vrste metoda. Referiranje na instancu klase. Objekt kao argument. Specifične funkcije. Životni ciklus objekta.
  14. Inicijalizacija. Konstruktori. Destruktori. Stupovi objektu usmjerenog programiranja. Apstrakcija. Enkapsulacija. Skrivanje podataka i pristup podacima. Zaštita podataka. Nasljeđivanje. Tipovi nasljeđivanja. Posrednički objekt. Linearizacija.
  15. Polimorfizam. Nadjačavanje metoda. Preopterećenje operatora. Ostali koncepti objektu usmjerenog programiranja.

Ishodi učenja
  1. Definira napredne koncepte i argumentira paradigme u programiranju.
  2. Primjenjuje naprednu metodologiju i programersku praksu u postupku rješavanja složenih programerskih problema.
  3. Planira potrebne resurse, alate i okruženja za rješavanje složenih programerskih problema.
  4. Osmišljava strukturu programa na temelju objektu usmjerene paradigme programiranja.
  5. Izrađuje napredne programe u odabranom programskom jeziku.
Metode podučavanja
Predavanja i vježbe na računalima koje kroz praktične primjere prate predavanja.
Metode ocjenjivanja
Pisani i usmeni ispit.

Obavezna literatura
  1. Napredno programiranje: skripta. Ivan Dunđer. 2020.
  2. Bilješke s predavanja i radni materijali.
  3. Službena dokumentacija odabranog programskog jezika.
Dopunska literatura
  1. Python for Everybody: Exploring Data in Python 3. Charles Severance. CreateSpace Independent Publishing Platform, 2016.
  2. Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming. Eric Matthes. No Starch Press, 2023.
  3. Starting Out with Python. Tony Gaddis. Pearson, 2017.

Izborni predmet na studijima
Novi i reformirani studiji
  1. Informacijske znanosti, sveučilišni prijediplomski jednopredmetni studij, 2., 4. semestar