Prakside kava
Tavarühmade materjal
- Praks 1 (08.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 (10.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 (15.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 (17.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 (22.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")
- 24.02 praktikumi ei toimu
- Praks 6 (01.03)
- 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 (03.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 8 (08.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 9 (10.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 (15.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 (08.02) Sissejuhatus. Java põhikonstruktsioonid.
Edasijõudnute materjalid
- Praks 11 (17.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
- multimodule projects with maven https://www.baeldung.com/maven-multi-module
- useful maven commands https://www.journaldev.com/33645/maven-commands-options-cheat-sheet
- artefacts repository https://www.eficode.com/blog/artifactory-nexus-proget
- Praks 12 (22.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 13 (24.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 14 (29.03)
- Classpath, resource loading https://github.com/mbakhoff/classpath-template
- Praks 15 (31.03)
- KT1.
- Ülesanded avalikustatakse moodle-is.
- Esitada tuleb moodlisse! ja igaks juhuks meiliga juhendaja aadressile.
- Tutvuge enne kontrolltööd ka KT reeglitega
- KT1.
- Praks 16 (05.04)
- Serialization, JSON, XML https://github.com/Zukkari/java-serialization-template
- Praks 17 (07.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 (12.04)
- Jätkame Stream-idega ja ülesannetega:
- Stream API, harjutused https://github.com/sim642/oop-lambda-template
- Praks 19 (14.04)
- Testing with JUnit; Mock objects, constructor injection
https://github.com/Zukkari/testing-template
- Testing with JUnit; Mock objects, constructor injection
- Praks 20 (19.04)
- JDBC: H2 embedded, prepared statement, transactions
https://github.com/mbakhoff/jdbc-template
- JDBC: H2 embedded, prepared statement, transactions
- Praks 21 (21.04)
- JPA, Hibernate ORM
https://github.com/mbakhoff/jpa-template
- JPA, Hibernate ORM
- Praks 22 (26.04)
- Crypto basics
https://github.com/mbakhoff/crypto-template
- Crypto basics
- Praks 23 (28.04)
- Visitor pattern
https://github.com/sim642/oop-visitor-template
- Visitor pattern
- Praks 24 (03.05)
- Annotations + reflection
https://github.com/Zukkari/reflection-template
- Annotations + reflection
- Praks 25 (05.05)
- 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 26 (10.05)
- Praks 27 (12.05)
- KT2.
- Esitada tuleb moodlisse! ja meiliga juhendaja aadressile.
- Esitamine läheb moodle-is lukku kell 16:05. Palun jälgige aega!
- Tutvuge enne kontrolltööd ka KT reeglitega
- KT2.
- Praks 28 (17.05)
- Profiling with VisualVM; Garbage collection
https://github.com/mbakhoff/profiling-template
- Profiling with VisualVM; Garbage collection
- Praks 29 (19.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://forms.gle/oDK42efenAVXCr437
- Rühmatööde esitlused
- Eksam (24.05)
- Praks 11 (17.03)