Napredno programiranje
ISVU: 266152•4 ECTS•Ljetni 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
- Uvod u kolegij. Pregled programerskih paradigmi. Sličnosti i razlike u pristupima. Koncepti i praksa. Arhitektura računala i utjecaj. Standardi.
- Datoteke. Vrste i podvrste. Pristupi. Modusi za rad s datotekama. Otvaranje i čitanje datoteka. Rad s datotekama. Funkcije i metode.
- Datoteke. Zapisivanje i zatvaranje datoteka. Pohrana podataka u datotekama. Formati. Podržani tipovi podataka. Kodiranje i dekodiranje. Funkcije i metode.
- Pogreške. Analiza i uklanjanje pogrešaka. Upravljanje izuzecima. Klase pogrešaka.
- Rad s izuzecima. Posebni izrazi. Potvrđivanje. Namjenske naredbe.
- Funkcije. Svojstva funkcija. Definicija funkcije. Jednostavne funkcije. Lokalnost i globalnost. Djelokrug. Formalni i stvarni parametri. Vraćanje vrijednosti. Zadane vrijednosti.
- Napredne funkcije. Proizvoljnost argumenata. Anonimne funkcije. Generatori i iteratori. Prijenos parametara. Komentiranje i dokumentiranje.
- Napredan rad modulima. Matematička obrada. Nasumičnost. Pseudo-nasumičnost. Funkcije i metode. Inicijalizacija generatora. Kriptografska sigurnost.
- Izrada modula. Pravila i karakteristike. Moduli i paketi. Vidljivost i putanje. Dohvaćanje identifikatora. Notacija. Razlikovanje načina pristupa modulu. Korisni alati i paketi.
- Uvod u rekurzije. Svrha rekurzije. Karakteristike rekurzije. Kontrola rekurzije. Unutarnje funkcije i razlika. Kombiniranje unutarnje funkcije i rekurzije. Primjena rekurzije.
- Regularni izrazi. Uvod i motivacija. Pravila. Identifikatori. Modifikatori. Meta-znakovi. Znakovi bjeline. Tretiranje posebnih znakova. Klase znakova. Grupe i nizovi.
- Objektu usmjereno programiranje. Motivacija i svrha. Prednosti i nedostaci. Terminologija. Objekt. Instanca. Klasa. Svojstva. Implementacija klase.
- Instancijacija. Atributi. Parametri. Vrste metoda. Referiranje na instancu klase. Objekt kao argument. Specifične funkcije. Životni ciklus objekta.
- 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.
- Polimorfizam. Nadjačavanje metoda. Preopterećenje operatora. Ostali koncepti objektu usmjerenog programiranja.
Ishodi učenja
- Definira napredne koncepte i argumentira paradigme u programiranju.
- Primjenjuje naprednu metodologiju i programersku praksu u postupku rješavanja složenih programerskih problema.
- Planira potrebne resurse, alate i okruženja za rješavanje složenih programerskih problema.
- Osmišljava strukturu programa na temelju objektu usmjerene paradigme programiranja.
- 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
- Napredno programiranje: skripta. Ivan Dunđer. 2020.
- Bilješke s predavanja i radni materijali.
- Službena dokumentacija odabranog programskog jezika.
Dopunska literatura
- Python for Everybody: Exploring Data in Python 3. Charles Severance. CreateSpace Independent Publishing Platform, 2016.
- Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming. Eric Matthes. No Starch Press, 2023.
- Starting Out with Python. Tony Gaddis. Pearson, 2017.