Prakside kava
Tavarühmade materjal
- Praks 1
- Lugeda Sissejuhatus (alates "Esimene Java programm")
- Lugeda Java põhikonstruktsioonid
- IDEA setup + run application
- Ülesanded: *
- Praks 2
- Lugeda Objektid. Klassid.
- Ülesanded P4, P6, H2, H4
- IDE tricks: psvm, sout, alt+insert, rename symbol, ctrl+q, reformat code
- class imports, Arrays.toString, cli-args
- koduste tööde esitamisest
- Praks 3
- Lugeda Sõned. Failid. Listid.
- Ülesanded P1, P8, H3
- IDEA advanced: iter, fori, debugging
- code style: muutujate ja meetodite nimed
- value vs reference
- Praks 4
- Lugeda Polümorfism. Liidesed.
- Ülesanded P*
- 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
- Lugeda Ülemklassid. Alamklassid. Abstraktsed klassid.
- praksis 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
- TODO flatten datastreamide kirjutamine, writeUTF seletus
- Lugeda Vood.
- primitive size
- Ülesanded P4, H5, P8
- 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
- Lugeda Veahaldus.
- Ülesanded P3, P6, P9, H4, H8
- rethrow, runtime exceptionisse wrapimine
- IDE tricks: conditional breakpoint, exception breakpoint, ctrl+tab/ctrl+e/ctrl+n
- Praks 8
- Lugeda Lõimed.
- final fields
- Ülesanded ül 2, 3, 4, 5, 8
- 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
- Lugeda Graafika.
- Lugeda Sündmused.
- awt vs swing vs javafx
- Ülesanded: Graafika: P3,P6,H2; Sündmused P1,P4,H1,H3
- scene graph, layouts
- Praks 10
- 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
- Ülesanded P2, P4, P7
- edasijõudnud: "How does a hashmap work?"
https://github.com/mbakhoff/hashmap-template
- Praks 1
Edasijõudnute materjalid
- Socket I/O
https://github.com/mbakhoff/sockets-template - HashMap basics
https://github.com/mbakhoff/hashmap-template - Packaging + maven
TODO swap with classpath-template, rewrite task1
https://github.com/mbakhoff/maven-template - Classpath, resource loading
- kompileeritud vs interpreteeritud
- https://github.com/mbakhoff/classpath-template
- 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
- Crypto basics
https://github.com/mbakhoff/crypto-template - Inner classes, lambdas, method references
- Introduction https://github.com/mbakhoff/lambda-template
- Stream API, harjutused https://github.com/sim642/oop-lambda-template
- JDBC: H2 embedded, prepared statement, transactions
https://github.com/mbakhoff/jdbc-template - JPA, Hibernate ORM
https://github.com/mbakhoff/jpa-template - Annotations + reflection
https://github.com/mbakhoff/reflection-template - Testing with JUnit; Mock objects, constructor injection
https://github.com/mbakhoff/testing-template - Profiling with VisualVM; Garbage collection
https://github.com/mbakhoff/profiling-template - Processes
https://github.com/mbakhoff/process-template - Bitwise operators
https://github.com/mbakhoff/bitwise-template - Advanced synchronization
https://github.com/mbakhoff/synchronization-template - 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
- Visitor pattern
https://github.com/sim642/oop-visitor-template - TODO java.time
- Rühmatööde esitlused
- Eksamiks kordamine
- Socket I/O