Oris teme
Programiranje 2 (PRO2)
Izvajalci predmeta
- doc. dr. Lovro Šubelj (R2.49 na FRI)
- asist. dr. Matjaž Zaveršnik (P10 na FMF)
- doc. dr. Lovro Šubelj (R2.49 na FRI)
Urnik izvajanja predmeta
- Predavanja: torek ob 14:15 v PR 3.10 (FMF)
- Vaje: torek ob 10:15 v PR 3.11 (FMF)
- Govorilne ure: po dogovoru (Piazza)
Opis in cilji predmeta
Osnovni cilj predmeta je študentom predstaviti osnove razvoja programja v programskih jezikih Python 3.7+ in Java 8+. Namen predmeta ni pisanje kratkih skript brez jasnega cilja, vendar razvoj celovitih praktično uporabnih programskih rešitev. Pridobljena znanja naj bi bila v pomoč pri reševanju praktičnih problemov, delu na diplomski nalogi ipd.
Predmet je razdeljen na tri dele. Namen prvega dela je prikaz enostavne podatkovne analitike v programskem jeziku Python 3.7 (prvih 7 tednov). V tem delu bomo analizirali podatke iz Twitterja, Google API, COVID-19 itd. Namen drugega dela je prikaz razvoja enostavnega grafičnega vmesnika v programskem jeziku Java 8 (naslednjih 7 tednov). V tem delu bomo razvili igrice Pac Man, Quoridor, Networks itd. Namen tretjega dela je prikaz drugih programskih jezikov, tehnologij in orodji (zadnji teden). V tem delu bodo predstavljeni različni splošnonamenski, skriptni, označevalni in poizvedovalni jeziki, jeziki za stavljenje besedil itd.
Znanja, ki jih bodo študenti pridobili na predavanjih in vajah, bodo uporabili za razvoj lastnih programskih rešitev v okviru dveh projektov.
Obveznosti in ocenjevanje
Od študentov se v prvi vrsti pričakuje redno obiskovanje predavanj in vaj. Sicer so obveznosti pri predmetu sestavljene iz dveh projektov v programskih jezikih Python in Java, reševanja nalog na vajah ter končnega pisnega izpita. Ocena predavanj in vaj bo določena na podlagi:
- naloge iz jezikov Python in Java (2×10% ocene vaj),
- projekta podatkovne analitike v jeziku Python (40% ocene vaj),
- projekta grafičnega vmesnika v jeziku Java (40% ocene vaj) in
- pisni izpit iz jezikov Python in Java (100% ocene predavanj).
Projekt v programskem jeziku Python 3.7+ zahteva razvoj enostavne podatkovne analitike podobne primerom predstavljenim na predavanjih. Študenti lahko sami izberejo problem, ki pa mora biti odobren s strani izvajalcev predmeta. Predviden obseg Python projekta je 30 programerskih ur na študenta.
Projekt v programskem jeziku Java 8+ zahteva razvoj enostavnega grafičnega vmesnika podobnega igricam predstavljenim na predavanjih. Študenti lahko sami izberejo igrico, ki pa mora biti odobrena s strani izvajalcev predmeta. Predviden obseg Java projekta je 50 programerskih ur na študenta.
Projekti se razvijajo v ekipah dveh študentov. Razvoj samostojnih projektov se ne priporoča, dočim pa so ekipe več kot dveh študentov možne zgolj izjemoma, če to odobrijo izvajalci predmeta (npr. razvoj obsežnejših rešitev). Vsak projekt zahteva oddajo predloga projekta s terminskim planom in repozitorijem, razvoj končne rešitve ter kratek posnetek predstavitve delovanja. Predlog in predstavitev projekta se neposredno ne ocenjujeta. Rok za oddajo vseh delov projektov je v nedeljo do polnoči.
Pisni izpit bo predvidoma sestavljen iz štirih nalog, dveh nalog v programskem jeziku Python in dveh nalog v programskem jeziku Java. Naloge bodo predvidevale znanja, predstavljena na predavanjih oziroma pridobljena v okviru vaj ali projektov. Med pisnim izpitom bo dovoljena uporaba poljubnega tiskanega gradiva, gradiva na eUčilnici, spletnih virov itd. Predviden obseg priprave na pisni izpit je vsaj 10 samostojnih učnih ur, neupoštevajoč obiska predavanj in vaj ter dela na projektih.
Komunikacija pri predmetu
Splošne novice in najave o predmetu bodo objavljene na spodnjem forumu. Za vsa vprašanja in diskusije o predmetu ter privatna sporočila izvajalcem uporabljajte Piazzo, kamor ste dodani z elektronskimi naslovi vpisanimi v sistemu VIS.
Podatkovna analitika v jeziku Python
- Spremenljivke, vejitve, zanke, metode, funkcije (pdf) ✓
- Branje in pisanje, zbirke podatkov, regularni izrazi (pdf) ✓
- Realna omrežja: graphs2.py (zip, log) ✓
- Google Translate: proverbs.py (log) ✓
- Search in Maps: slo.py (log) ✓
- Urnik FMF: fmf.py (log) ✓
- Razredi in objekti, dedovanje, napake in izjeme (pdf) ✓
- Omrežna knjižnica: networks.py (zip, log) ✓
- Vektorji in matrike: matrix.py (log) ✗
- Twitter API: followers.py (log) ✓
- Enostavna analiza podatkov, algoritmi, kompleksnost
- Game of Thrones: got.py (log, pdf) ✓
- Levenshteinova razdalja: edit.py (log, net) ✓
- Ugibanje besed: besedle.py (log, json) ✓
- Mere središčnosti: centrality.py (log, net) ✓
- Napredna analiza podatkov, podatkovne strukture
- Uvod v strojno učenje nad podatki
- Klasifikacija: ocr.py (log, pdf) ✓
- Regresija: electricity.py (log, arff, pdf) ✓
- Razvrščanje: terrorism.py (tab, pdf) ✗
- Knjižnice, dokumentacija, objava programja
Vaje iz programskega jezika Python bodo potekale preko sistema Tomo.
Grafični vmesniki v jeziku Java
Spodaj bodo objavljeni zapiski iz predavanj, naloge iz vaj in vsa razvita koda v programskem jeziku Java (vodič, dokumentacija). Seznam gradiv se bo posodabljal tekom predmeta. Pri delu se priporoča uporaba razvojnega okolja Eclipse (vodič) ali IntelliJ IDEA.
- Spremenljivke, vejitve, zanke, metode, funkcije (pdf) ✓
- Razredi in objekti, zbirke podatkov, branje in pisanje (pdf) ✓
- Primer: Demo2.java (log, txt, mp4) ✓
- Simulacija: Pacmans.jar (log, mp4) ✓
- Grafični vmesniki, okna, paneli in postavitve, risanje likov (pdf) ✓
- Vizualizacija: Visuals.java (zip, mp4) ✓
- Animacija likov in oblik, grafični elementi in nadzor programa (pdf) ✓
- Animacija: Vacmans.jar (zip, mp4) ✓
- Sestava grafičnega vmesnika, meniji in ikone, tipkovnica in miška ✓
- Igra z UI: Quoridor.jar (zip) ✓
- Analiza omrežij: Networks.jar (zip) ✗
- Reševanje praktičnih problemov s programskim jezikom Java
- Iskanje po zbirkah: Collections.java (log) ✓
- Razumevanje besedil: TFIDF.java (log, zip) ✗
- Slike z vodnim žigom: Watermark.java (zip) ✓
- Uporaba Pythona iz Jave: UL.jar (log, zip) ✗
- Problem nahrbtnika: Knapsack.java (log) ✗
- Naj matematiki: Mathematics.java (log, tab) ✓
- Priporočilni sistem: IMDb.jar (log, zip) ✗
- Igralni avtomat: Gambling.java (log) ✓
- Knjižnice, dokumentacija, objava programja
Vaje iz programskega jezika Java: