Preskoči na glavni sadržaj

Napredno programiranje

ISVU: 2661524 ECTSLjetni semestar

Osnovne informacije

Organizacijska jedinica
Odsjek za informacijske i komunikacijske znanosti
Satnica
  • Predavanja: 30 sati
  • Vježbe u praktikumu: 15 sati

Nastavnici

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.