Prakside kava
Tavarühmade materjal
- Praks 1 (09.02) Sissejuhatus. Java põhikonstruktsioonid.
- Lugeda Sissejuhatus (alates "Esimene Java programm")
- Lugeda Java põhikonstruktsioonid
- Abiks on ka 1. ja 2. loengu slaidid ja videod
- IDEA setup + run application
- Aine korraldus. Tutvumisring.
- Ülesanded: *
- Praks 2 (11.02) Objektid. Klassid.
- Enne praktikumi lugeda Objektid. Klassid.
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P4, P6 ning harjutustest H2, H4
- IDE tricks: psvm, sout, alt+insert, rename symbol, ctrl+q, reformat code, reading javadoc, reading source
- class imports, Arrays.toString, cli-args
- koduste tööde esitamisest
- Praks 3 (16.02)
- Enne praktikumi lugeda Sõned. Failid. Listid.
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P1, P8 ning harjutustest H3
- IDEA advanced: iter, fori, debugging
- code style: muutujate ja meetodite nimed oracle-i poolt soovitused
- value vs reference
- Praks 4 (18.02)
- Enne praktikumi lugeda Polümorfism. Liidesed.
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P*
- Kes jõuab võite alustada ka harjutustega, need tuleb kodus lõpetada ja esitada osana kodutööst.
- List vs ArrayList? List.of, Arrays.asList, Collections.emptyList
- IDE tricks: extract method/var, ctrl+b/ctrl+alt+b, show usages, ctrl+alt+left/right, debugger eval expression
- Praks 5 (23.02)
- Enne praktikumi lugeda Ülemklassid. Alamklassid. Abstraktsed klassid.
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P* välja arvatud 4,5
- IDE tricks: ctrl+i, ctrl+o
- dynamic dispatch, super.m() vs this.m()
- git intro
- Git (kodus)
- Loe üldist git sissejuhatust (algusest kuni "How GitHub fits in")
https://guides.github.com/introduction/git-handbook/ - Lahenda ülesandekomplekt HelloGit
- Huvilisetele pikem jutt, kuidas git toimib
https://tom.preston-werner.com/2009/05/19/the-git-parable.html
- Loe üldist git sissejuhatust (algusest kuni "How GitHub fits in")
- Praks 6 (25.02)
- TODO flatten datastreamide kirjutamine, writeUTF seletus
- Enne praktikumi lugeda Vood.
- Lisaks lugeda primitiividest ja nende mälukasutusest
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P4, P8 ning harjutustest H5
- edasijõudnud: tcp/ip, network protocols
https://github.com/mbakhoff/sockets-template - IDE tricks: thread dump, Files.readAllBytes, Files.readString
- rühmatööde tutvustus
- Praks 7 (02.03)
- Enne praktikumi lugeda Veahaldus.
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P3, P6, P9 ning harjutustest H4, H8
- rethrow, runtime exceptionisse wrapimine
- IDE tricks: conditional breakpoint, exception breakpoint, ctrl+tab/ctrl+e/ctrl+n
- Praks 8 (04.03)
- Enne praktikumi lugeda Lõimed.
- Praktikumi ajal lahendada ülesanded praktikumi materjalist 2, 3, 4, 5, 8
- final fields
- deadlock näide, thread dump
https://gist.github.com/mbakhoff/0fd51bfd653b778fcabc - Executors fixedpool näide
- Item 66: Synchronize access to shared mutable data
- Praks 9 (09.03)
- Enne praktikumi lugeda Graafika.
- Enne praktikumi lugeda Sündmused.
- Praktikumi ajal lahendada ülesanded graafikast: P3, P6 ning harjutustest H2
- Praktikumi ajal lahendada ülesanded sündmustest P1, P4 ning harjutustest H1, H3
- awt vs swing vs javafx
- scene graph, layouts
- Praks 10 (11.03)
- Enne praktikumi lugeda Andmestruktuurid.
- koduste ülesannete analüüs (bugid)
https://github.com/mbakhoff/oop-samples/tree/master/bugs - natural ordering. eksamil peab teadma: ArrayList, LinkedList, HashSet, TreeSet, LinkedHashSet, ArrayDeque, HashMap, TreeMap, LinkedHashMap
- Praktikumi ajal lahendada ülesanded praktikumi materjalist P2, P4, P7
- edasijõudnud: "How does a hashmap work?"
https://github.com/mbakhoff/hashmap-template
- Praks 1 (09.02) Sissejuhatus. Java põhikonstruktsioonid.
Edasijõudnute materjalid
- Praks 11 (16.03)
- Socket I/O https://github.com/mbakhoff/sockets-template juba tuttav materjal Echo Server kodutööst
- Praktikumidest oli mitu korda mainitud nio lähenemine https://examples.javacodegeeks.com/core-java/nio/java-nio-socket-example/ mis ei blokeeri thread-e ja võimaldab ühe threadi abil töödelda mitut requesti korraga.
- Harjutamise mõttes proovige muuta oma Echo Server v2 lahendus võttes kasutusele nio ja SocketChannel-eid. Kasutage näidiskoodi eespool olevast artiklist.
- Praks 12 (18.03)
- Packaging + maven https://github.com/Zukkari/maven-template
- maven plugin creation guide https://www.baeldung.com/maven-plugin
- useful maven plugins https://javarevisited.blogspot.com/2016/08/top-10-maven-plugins-every-java-developer-know.html
- Praks 13 (23.03)
- Classpath, resource loading https://github.com/mbakhoff/classpath-template
- Praks 14 (25.03)
- KT1 kordamine
- fori vs iter, extract variable/parameter, täisarvudega jagamine, static fields, string equals vs ==, generics / raw types, instance vs static methods, dynamic dispatch, this.m() vs super.m(), twr, catch algoritm, Files.readAllLines, Files.write
- harjutused
- Voogude harjutustest ülesanded 1, 3, 4
- Nimede lühendamine
- veel üks KT näidisülesanne
- KT1 kordamine
- Praks 15 (30.03)
- KT1.
- Ülesanded avalikustatakse moodle-is.
- Esitada tuleb moodlisse! ja meiliga Dmitri ja Stanislavi aadressitele.
- Tuleb kasutada ekraanisalvestust ja esitada ka videot.
- Tutvuge enne kontrolltööd ka KT reeglitega
- KT1.
- Praks 16 (01.04)
- Serialization, JSON, XML https://github.com/Zukkari/java-serialization-template
- Praks 17 (06.04)
- Inner classes, lambdas, method references
- Introduction https://github.com/mbakhoff/lambda-template
- Stream API, harjutused https://github.com/sim642/oop-lambda-template
- Hacking lambda expressions
https://dzone.com/articles/hacking-lambda-expressions-in-java
- Praks 18 (08.04)
- Testing with JUnit; Mock objects, constructor injection
https://github.com/Zukkari/testing-template
- Testing with JUnit; Mock objects, constructor injection
- Praks 19 (13.04)
- JDBC: H2 embedded, prepared statement, transactions
https://github.com/mbakhoff/jdbc-template
- JDBC: H2 embedded, prepared statement, transactions
- Praks 20 (15.04)
- JPA, Hibernate ORM
https://github.com/mbakhoff/jpa-template
- JPA, Hibernate ORM
- Praks 21 (20.04)
- Crypto basics
https://github.com/mbakhoff/crypto-template
- Crypto basics
- Praks 22 (22.04)
- Visitor pattern
https://github.com/sim642/oop-visitor-template
- Visitor pattern
- Praks 23 (27.04)
- Annotations + reflection
https://github.com/Zukkari/reflection-template
- Annotations + reflection
- Praks 24 (29.04)
- KT2 kordamine
- text vs binary streams, Files.readAllLines/write, list vs map vs set, File.exists vs Files.exists, exceptioni subclass loomine
- harjutused
- Voogude harjutustest ülesanne 6
- Erindite harjutustest ülesanded 2, 7
- veel üks KT näidisülesanne
- KT2 kordamine
- Praks 25 (04.05)
- KT2.
- Ülesanded avalikustatakse kell 12:15 moodle-is.
- Esitada tuleb moodlisse! ja meiliga Dmitri ja Stanislavi aadressitele.
- Esitamine läheb moodle-is lukku kell 14:05. Palun jälgige aega!
- Tuleb kasutada ekraanisalvestust ja esitada ka videot. Kuna video on suur ja selle üleslaadimine võtab aega seda võib esitada hiljem, kuid informeerige meid meili teel kella 15-ks edusammudest.
- Tutvuge enne kontrolltööd ka KT reeglitega
- KT2.
- Praks 26 (06.05)
- Praks 27 (11.05)
- Advanced synchronization
https://github.com/mbakhoff/synchronization-template
- Advanced synchronization
- Praks 28 (13.05)
- Profiling with VisualVM; Garbage collection
https://github.com/mbakhoff/profiling-template
- Profiling with VisualVM; Garbage collection
- Praks 29 (18.05)
- Eksamiks kordamine
- Lõpusirge info (meil omad eksamile pääsemise tingimused, vaadake kindlasti oma punktiseisu üle ja esitage kõik kodutööd!
- Tutvuge eksami juhendiga
https://moodle.ut.ee/mod/page/view.php?id=905143 - Eksami näidistest
https://moodle.ut.ee/mod/quiz/view.php?id=725986- Soovitame näidistesti lahendada mitu korda (küsimused varieeruvad).
- Kordamiseks on avatud ka kõik loengutestid (punktid arvesse enam ei lähe).
- Veel üleeelmise aasta harjutused
https://drive.google.com/open?id=16_FWqBiTEl1yNPBaLymfdA452kiIjXFf - Palun registreeruge ÕISis sobivale eksamiajale!
- Praks 30 (20.05)
- Rühmatööde esitlused
- Praktikumis on rühmatöö esitluseks aega 10-12 minutit.
- Esitlus võiks katta näiteks sellised teemad:
- programmi ja rühmaliikmete tutvustus
- tööjaotus meeskonnas
- ülevaate arendusprotsessist, tööde jaotus etappide vahel
- kogetud rõõmud ja mured ning nende ületamised
- tehnikad, komponendid, raamistikud, keerulisemad algoritmid, mida õppisite ja katsetasite.
- Abiks võiks olla enne koostatud esitluse fail (nt. PowerPoint või pdf).
- Esitluses võiksid osaleda kõik meeskonnaliikmed
- Lisaks õppejõule on hindamises oma roll ka teistel rühmadel. Valmistame praktikumiks küsitluse, kus oleks kõikide rühmade info.
- Kõik esinenud rühmaliikmed saavad esitluse eest võrdse hinde.
- Hindamise ankeet
https://docs.google.com/forms/d/e/1FAIpQLSex-H-x2TxswaNTTV6Wox3jIwaWzm7-HMMMFUhw-jCAu9oxdA/viewform?usp=sf_link
- Rühmatööde esitlused
- Eksam (25.05)
- Praks 11 (16.03)