Arvutiteaduse instituut
  1. Kursused
  2. 2023/24 kevad
  3. Objektorienteeritud programmeerimine (LTAT.03.003)
EN
Logi sisse

Objektorienteeritud programmeerimine 2023/24 kevad

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhend
  • Süvendusrühm
  • Silumisest

Prakside kava

Tavarühmade materjal

  1. Praks 1 (13.02) Sissejuhatus. Java põhikonstruktsioonid.
    1. Lugeda Sissejuhatus (alates "Esimene Java programm")
    2. Lugeda Java põhikonstruktsioonid
    3. Abiks on ka 1. ja 2. loengu slaidid ja videod
    4. IDEA setup + run application
    5. Aine korraldus. Tutvumisring.
    6. Ülesanded: *
  2. Praks 2 (15.02) Objektid. Klassid.
    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 (20.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 (22.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 (27.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 (29.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 (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
  9. Praks 8 (07.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
  10. Praks 9 (12.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 https://www.geeksforgeeks.org/java-awt-vs-java-swing-vs-java-fx/
    6. scene graph, layouts
  11. Praks 10 (14.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
  12. Praks 11 (19.03)
    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. veel üks KT näidisülesanne

Edasijõudnute materjalid

  1. Praks 12 (21.03)
    1. Packaging + maven https://github.com/Zukkari/maven-template
    2. maven plugin creation guide https://www.baeldung.com/maven-plugin
    3. useful maven plugins https://javarevisited.blogspot.com/2016/08/top-10-maven-plugins-every-java-developer-know.html
    4. multimodule projects with maven https://www.baeldung.com/maven-multi-module
    5. useful maven commands https://www.journaldev.com/33645/maven-commands-options-cheat-sheet
    6. artefacts repository https://www.eficode.com/blog/artifactory-nexus-proget
  2. Praks 13 (26.03)
    1. Classpath, resource loading https://github.com/mbakhoff/classpath-template
  3. Praks 14 (28.03)
    1. KT1.
      1. Ülesanded avalikustatakse moodle-is.
      2. Esitada tuleb moodlisse! ja igaks juhuks meiliga juhendaja aadressile.
      3. Ärge unustage esitada ka lahenduse logid Moodle'i kaudu.
      4. Tutvuge enne kontrolltööd ka KT reeglitega
  4. Praks 15 (02.04)
    1. Serialization, JSON, XML https://github.com/Zukkari/java-serialization-template
  5. Praks 16 (04.04)
    1. Testing with JUnit; Mock objects, constructor injection
      https://github.com/Zukkari/testing-template
  6. Praks 17 (09.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
    4. Hacking lambda expressions
      https://dzone.com/articles/hacking-lambda-expressions-in-java
  7. Praks 18 (11.04)
    1. Jätkame Stream-idega ja ülesannetega:
    2. Stream API, harjutused https://github.com/sim642/oop-lambda-template
  8. Praks 19 (16.04)
    1. praktikumi ei toimu. võite kasutada aega et arendada rühmatöö projekte ja arutada neid omavahel praktikumi ajal
  9. Praks 20 (18.04)
    1. JDBC: H2 embedded, prepared statement, transactions
      https://github.com/mbakhoff/jdbc-template
  10. Praks 21 (23.04)
    1. JPA, Hibernate ORM
      https://github.com/mbakhoff/jpa-template
  11. Praks 22 (25.04)
    1. Crypto basics
      https://github.com/mbakhoff/crypto-template
  12. Praks 23 (30.04)
    1. Annotations + reflection
      https://github.com/Zukkari/reflection-template
  13. Praks 24 (02.05)
    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
  14. Praks 25 (07.05)
    1. Visitor pattern
      https://github.com/sim642/oop-visitor-template
  15. Praks 26 (09.05)
    1. KT2.
      1. Esitada tuleb moodlisse! ja meiliga juhendaja aadressile.
      2. Esitamine läheb moodle-is lukku kell 16:05. Palun jälgige aega!
      3. Tutvuge enne kontrolltööd ka KT reeglitega
  16. Praks 26 (14.05)
    1. Processes
      https://github.com/mbakhoff/process-template
  17. Praks 27 (16.05)
    1. Profiling with VisualVM; Garbage collection
      https://github.com/mbakhoff/profiling-template
  18. Praks 28 (21.05)
    1. Eksamiks kordamine
      1. Lõpusirge info (meil omad eksamile pääsemise tingimused, vaadake kindlasti oma punktiseisu üle ja esitage kõik kodutööd!)
      2. Tutvuge eksami juhendiga
        https://moodle.ut.ee/mod/page/view.php?id=1156648
      3. Eksami näidistest
        https://moodle.ut.ee/mod/quiz/view.php?id=725986
        1. Soovitame näidistesti lahendada mitu korda (küsimused varieeruvad).
        2. Kordamiseks on avatud ka kõik loengutestid (punktid arvesse enam ei lähe).
      4. Palun registreeruge ÕISis sobivale eksamiajale!
  19. Praks 29 (23.05)
    1. Rühmatööde esitlused
      1. Praktikumis on rühmatöö esitluseks aega 7-8 minutit.
      2. Esitlus võiks katta näiteks sellised teemad:
        1. programmi ja rühmaliikmete tutvustus
        2. tööjaotus meeskonnas
        3. ülevaate arendusprotsessist, tööde jaotus etappide vahel
        4. kogetud rõõmud ja mured ning nende ületamised
        5. tehnikad, komponendid, raamistikud, keerulisemad algoritmid, mida õppisite ja katsetasite.
      3. Abiks võiks olla enne koostatud esitluse fail (nt. PowerPoint või pdf).
      4. Esitluses võiksid osaleda kõik meeskonnaliikmed
    2. Lisaks õppejõule on hindamises oma roll ka teistel rühmadel. Valmistame praktikumiks küsitluse, kus oleks kõikide rühmade info.
    3. Kõik esinenud rühmaliikmed saavad esitluse eest võrdse hinde.
    4. Hindamise ankeet
      https://forms.gle/5GG7mFYfutJjFHoH9
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused