Institute of Computer Science
  1. Courses
  2. 2019/20 spring
  3. Object-oriented Programming (LTAT.03.003)
ET
Log in

Object-oriented Programming 2019/20 spring

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhendid
  • Silumisest
  • Edasijõudnute rühm

Prakside kava

Tavarühmade materjal

  1. Praks 1 (11.02)
    1. Lugeda Sissejuhatus (alates "Esimene Java programm")
    2. Lugeda Java põhikonstruktsioonid
    3. IDEA setup + run application
    4. Ülesanded: *
  2. Praks 2 (13.02)
    1. Enne praktikumi lugeda Objektid. Klassid.
    2. Praktikumi ajal lahendada ülesanded praktikumi materjalist P4, P6 ning harjutustest H2, H4
    3. IDE tricks: psvm, sout, alt+insert, rename symbol, ctrl+q, reformat code, reading javadoc, reading source
    4. class imports, Arrays.toString, cli-args
    5. koduste tööde esitamisest
  3. Praks 3 (18.02)
    1. Enne praktikumi lugeda Sõned. Failid. Listid.
    2. Praktikumi ajal lahendada ülesanded praktikumi materjalist P1, P8 ning harjutustest H3
    3. IDEA advanced: iter, fori, debugging
    4. code style: muutujate ja meetodite nimed oracle-i poolt soovitused
    5. value vs reference
  4. Praks 4 (20.02)
    1. Enne praktikumi lugeda Polümorfism. Liidesed.
    2. Praktikumi ajal lahendada ülesanded praktikumi materjalist P*
    3. Kes jõuab võite alustada ka harjutustega, need tuleb kodus lõpetada ja esitada osana kodutööst.
    4. List vs ArrayList? List.of, Arrays.asList, Collections.emptyList
    5. IDE tricks: extract method/var, ctrl+b/ctrl+alt+b, show usages, ctrl+alt+left/right, debugger eval expression
  5. Praks 5 (25.02)
    1. Enne praktikumi lugeda Ülemklassid. Alamklassid. Abstraktsed klassid.
    2. Praktikumi ajal lahendada ülesanded praktikumi materjalist P* välja arvatud 4,5
    3. IDE tricks: ctrl+i, ctrl+o
    4. dynamic dispatch, super.m() vs this.m()
    5. git intro
  6. Git (kodus)
    1. Loe üldist git sissejuhatust (algusest kuni "How GitHub fits in")
      https://guides.github.com/introduction/git-handbook/
    2. Lahenda ülesandekomplekt HelloGit
    3. Huvilisetele pikem jutt, kuidas git toimib
      https://tom.preston-werner.com/2009/05/19/the-git-parable.html
  7. Praks 6 (27.02)
    1. TODO flatten datastreamide kirjutamine, writeUTF seletus
    2. Enne praktikumi lugeda Vood.
    3. Lisaks lugeda primitiividest ja nende mälukasutusest
    4. Praktikumi ajal lahendada ülesanded praktikumi materjalist P4, P8 ning harjutustest H5
    5. edasijõudnud: tcp/ip, network protocols
      https://github.com/mbakhoff/sockets-template
    6. IDE tricks: thread dump, Files.readAllBytes, Files.readString
    7. rühmatööde tutvustus
  8. Praks 7 (03.03)
    1. Enne praktikumi lugeda Veahaldus.
    2. Praktikumi ajal lahendada ülesanded praktikumi materjalist P3, P6, P9 ning harjutustest H4, H8
    3. rethrow, runtime exceptionisse wrapimine
    4. IDE tricks: conditional breakpoint, exception breakpoint, ctrl+tab/ctrl+e/ctrl+n
  9. Praks 8 (05.03)
    1. Enne praktikumi lugeda Lõimed.
    2. Praktikumi ajal lahendada ülesanded praktikumi materjalist 2, 3, 4, 5, 8
    3. final fields
    4. deadlock näide, thread dump
      https://gist.github.com/mbakhoff/0fd51bfd653b778fcabc
    5. Executors fixedpool näide
    6. Item 66: Synchronize access to shared mutable data
  10. Praks 9 (10.03)
    1. Enne praktikumi lugeda Graafika.
    2. Enne praktikumi lugeda Sündmused.
    3. Praktikumi ajal lahendada ülesanded graafikast: P3, P6 ning harjutustest H2
    4. Praktikumi ajal lahendada ülesanded sündmustest P1, P4 ning harjutustest H1, H3
    5. awt vs swing vs javafx
    6. scene graph, layouts
  11. Praks 10 (12.03)
    1. Enne praktikumi lugeda Andmestruktuurid.
    2. koduste ülesannete analüüs (bugid)
      https://github.com/mbakhoff/oop-samples/tree/master/bugs
    3. natural ordering. eksamil peab teadma: ArrayList, LinkedList, HashSet, TreeSet, LinkedHashSet, ArrayDeque, HashMap, TreeMap, LinkedHashMap
    4. Praktikumi ajal lahendada ülesanded praktikumi materjalist P2, P4, P7
    5. edasijõudnud: "How does a hashmap work?"
      https://github.com/mbakhoff/hashmap-template

Edasijõudnute materjalid

  1. Praks 11 (17.03)
    1. Socket I/O https://github.com/mbakhoff/sockets-template juba tuttav materjal Echo Server kodutööst
    2. 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.
    3. Harjutamise mõttes proovige muuta oma Echo Server v2 lahendus võttes kasutusele nio ja SocketChannel-eid. Kasutage näidiskoodi eespool olevast artiklist.
  2. Praks 12 (19.03)
    1. Packaging + maven https://github.com/Zukkari/maven-template
  3. Praks 13 (24.03)
    1. Classpath, resource loading https://github.com/mbakhoff/classpath-template
  4. Praks 14 (26.03)
    1. Serialization, JSON, XML https://github.com/Zukkari/java-serialization-template
  5. Praks 15 (31.03)
    1. Crypto basics
      https://github.com/mbakhoff/crypto-template
  6. Praks 16 (02.04)
    1. Inner classes, lambdas, method references
    2. Introduction https://github.com/mbakhoff/lambda-template
    3. Stream API, harjutused https://github.com/sim642/oop-lambda-template
  7. Praks 17 (07.04)
    1. JDBC: H2 embedded, prepared statement, transactions
      https://github.com/mbakhoff/jdbc-template
  8. Praks 18 (09.04)
    1. JPA, Hibernate ORM
      https://github.com/mbakhoff/jpa-template
  9. Praks 19 (14.04)
    1. Visitor pattern
      https://github.com/sim642/oop-visitor-template
  10. Praks 20 (16.04)
    1. Testing with JUnit; Mock objects, constructor injection
      https://github.com/Zukkari/testing-template
  11. Praks 21 (21.04)
    1. KT1 kordamine
      1. 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
    2. harjutused
      1. Voogude harjutustest ülesanded 1, 3, 4
      2. Nimede lühendamine
      3. veel üks KT näidisülesanne
  12. Praks 22 (23.04)
    1. KT2 kordamine
      1. text vs binary streams, Files.readAllLines/write, list vs map vs set, File.exists vs Files.exists, exceptioni subclass loomine
    2. harjutused
      1. Voogude harjutustest ülesanne 6
      2. Erindite harjutustest ülesanded 2, 7
      3. veel üks KT näidisülesanne
  13. Praks 23 (28.04)
    1. KT2.
      1. Ülesanded avalikustatakse kell 12:15 moodle-is.
      2. Esitada tuleb moodlisse! ja meiliga Dmitri ja Stanislavi aadressitele.
      3. Esitamine läheb moodle-is lukku kell 14:05. Palun jälgige aega!
      4. 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.
      5. Tutvuge enne kontrolltööd ka KT reeglitega
  14. Praks 24 (30.04)
    1. Processes
      https://github.com/mbakhoff/process-template
  15. Praks 25 (05.05)
    1. Advanced synchronization
      https://github.com/mbakhoff/synchronization-template
  16. Praks 26 (07.05)
    1. Bitwise operators
      https://github.com/mbakhoff/bitwise-template
  17. Praks 27 (12.05)
    1. KT1.
      1. Ülesanded avalikustatakse moodle-is.
      2. Esitada tuleb moodlisse! ja meiliga Dmitri ja Stanislavi aadressitele.
      3. Tuleb kasutada ekraanisalvestust ja esitada ka videot.
      4. Tutvuge enne kontrolltööd ka KT reeglitega
  18. Praks 28 (14.05)
    1. Profiling with VisualVM; Garbage collection
      https://github.com/mbakhoff/profiling-template
  19. Praks 29 (19.05)
    1. Rühmatööde esitlused ZOOMis
  20. Praks 30 (21.05)
    1. Annotations + reflection
      https://github.com/Zukkari/reflection-template
  21. Praks 31 (26.05)
    1. Eksamiks kordamine
    2. Lõpusirge info (meil omad eksamile pääsemise tingimused, vaadake kindlasti oma punktiseisu üle ja esitage kõik kodutööd!
    3. eelmise aasta harjutused
      https://drive.google.com/open?id=16_FWqBiTEl1yNPBaLymfdA452kiIjXFf
    4. eksami info moodle-is
      https://moodle.ut.ee/mod/page/view.php?id=724207&inpopup=1
    5. eksami näidistest moodle-is
      https://moodle.ut.ee/mod/quiz/view.php?id=725986
    6. proovige läbi lahendada ka loengute kohta käivaid teste, otsige "(kordamine eksamiks)" moodle-i lehel
      https://moodle.ut.ee/course/view.php?id=5062
    7. Eksamieelne konsultatsioon esmaspäeval 25. mail kell 18:15
      https://zoom.us/j/92298169895
    8. Eelmise aasta eksami näidisülesannete lahendamise video (eksamitesti viimane küsimus on seda tüüpi)
      https://panopto.ut.ee/Panopto/Pages/Viewer.aspx?id=d86f224d-8d1a-4161-b00a-a9f001011395
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment