Eriülesanded

Õppejõud pakuvad välja eriülesannete teemad. Ühte teemat saab võtta rohkem kui üks inimene. Kokkuleppel lektoriga võib olla ka enda valitud teema. Eriülesanne on vabatahtlik, kuid annab maksimaalselt 15 punkti.

Eriülesanne on iseseisev töö! Kui sama teema on valinud mitu tudengit ning töödest ja suulisest vastamisest jääb lektorile mulje, et kahe tudengi lahendus on valminud grupitööna, antakse ilma pikema aruteluta mõlemale tudengile eriülesande eest 0 punkti.

Tähtajad

  1. Lektorid esitavad kõik teemad hiljemalt 30.sept.
  2. Tudengid teostavad valiku hiljemalt 15.okt.
  3. Tudengid esitavad tegutsemise kava hiljemalt 31.okt.
  4. Tudengid esitavad valmis lahenduse elektroonilisel kujul hiljemalt 15.nov.

Valik, kava ning lahenduse elektrooniline kuju tuleb edastada teema välja pakkunud lektorile.

Vestlus tudengi ja lektori vahel peab toimuma enne esimest eksamiaega.

Referaadid

Üks võimalik eriülesande vorm on referaat. Referaadi maht on 10 lehekülge. Referaat tuleb kaitsta teema pakkunud lektori ees (15-20 min).

Referaat koosneb üldiselt:

  • Sissejuhatusest
  • Valdkonna ülevaatest
  • Analüütilisest osast (võrdlus jne)
  • Kokkuvõttest

Referaat võib olla kas eesti või inglise keeles.

Teemad

  1. Caching in enterprise applications. Where and what to cache. Instance caching. Query caching. Caching strategies. (Lecturer:Ivo Mägi; form:report; maximum: two students):
    1. ehcache
    2. JBoss Cache
    3. Tangosol Coherence
    4. OSCache
    5. ...
    • Valik tehtud: Henri Valdmann (esitamata), Antero Maripuu (pdf)
  2. Rule engines. What, why, when. Implement a realistic business use case. (Lecturer:Ivo Mägi; form:sample application; maximum: two students):
    1. Jess
    2. JBoss Rules (former Drools)
    3. ILog JRules
  3. Distributed transactions. When and where to use. Issues. (Lecturer:Ivo Mägi; form: report; maximum: one sudent):
    1. ...
  4. Resource pooling. Different resources (DB, LDAP, file handles, threads, ...). Should pooling be achieved in server or in client (Oracle RDBMS SHARED/DEDICATED mode vs. application server connection pools)? (Lecturer:Ivo Mägi; form:report; maximum: one student):
    1. ...
  5. Securing enterprise applications. Authentication. Request security. Service layer security. Domain object instance security. (Lecturer:Ivo Mägi; form: sample application; maximum: one student).
    1. Acegi
    2. JAAS
    3. Vendor - specific implementations
      1. BEA Weblogic Server
      2. ...
  6. Andmetöötlusvõimalused pihuarvutis. Lokaalandmebaas vs kaugandmebaas. Sünkroniseerimine. (Lektor Indrek Sander, iga alamteema peale 1 tudeng)
    1. Java lahendused !teema võetud!
    2. Microsofti (ADO.NET) lahendused !teema võetud!
    3. Sybase'i lahendused (Ultralite, ASA)
  7. Assotsiatiivne andmemudel ja tema keel (Lektor Indrek Sander, kuni 4 tudengit) !teema võetud!
    1. Simon Williams - The Associative Model of Data.pdf
  8. JRuby and JVM. JRuby is going to be included into Java 7. What will be the limitations of interoperability among Java and Ruby and how will it influense Java ecosystem? (Jevgeni Kabanov, max 2 students, report in english)
    1. JRuby
    2. Video presentation on JRuby & JVM
    3. PDF presentation on JRuby & JVM
    4. Students
      1. Dmitri Borissenko
      2. Karl Blum
  9. Assume we have a Java program written by students. We would like You to derive a formula that will help a teacher to evaluate student's work. Formula's arguments are collection of collected metrics and collection of expected metric values, for instance [measuredLoc:300, measuredCoverage:60%, expectedLoc:500, expectedCoverage:80%]. Formula's output - letter from A to E. Result of Your work should be a report containing introduction, formula, its argumentation, how results were achieved, examples, discussion of formula's flaws and drawbacks of its application. (Lecturer Anton Litvinenko, up to 5 students)
    1. Introduction to metrics
      1. http://en.wikipedia.org/wiki/Software_metrics
      2. http://ats.cs.ut.ee/courses/2005/tvt/pmwiki/uploads/Main/software_engineering_21.pdf
    2. Introduction to code coverage
      1. http://en.wikipedia.org/wiki/Code_coverage
      2. http://www.bullseye.com/coverage.html
    3. Some articles
      1. Identifying effective software metrics using genetic algorithms
        1. Overview
        2. Whole article
      2. Finding optimal software metrics to classify software maintainability using a parallel genetic algorithm
        1. Overview
        2. Whole article
      3. More articles
    4. Tools to be used
      1. SourceKibitzer
      2. FindBugs
      3. Cobertura

Lühirakendused

Kõigi rakenduste puhul on tarvis teha töötav lahendus ning lühidokumentatsioon tööpõhimõtete kohta (1 lk). Lahendus peab järgima hea projekteerimise ning realiseerimise tavasid, lähtekood peab olema kergesti loetav/muudetav ning hästi dokumenteeritud. Kaitsmisel seda lahendust ja source koodi näidata ning seletada ja põjendada oma tehnoloogilisi valikuid.

  • Lektor: Erik Jõgi
  • Max 2 tudengit per rakendus
  1. Teha veebirakendus, mis inimese nime järgi leiab Sertifitseerimiskeskuse LDAPi teenuse kaudu sellele vastava(d) isikukoodi(d). Realiseerida WebService, mis suhtleb LDAPiga ning HTML leht, mis AJAXi abil pöördub selle WebService'i poole.
    • Tudeng: Oleg Šelajev
    • Tudeng: Tauno Talimaa
  2. Teha WAP lahendus, mis võimaldab äriregistrist leida firma nime järgi tema registrinumbri.
    • Tudeng: Arni Leibovits
    • Tudeng: Indrek Ulst
  3. Teha lihtne Dependency Injection konteiner. Konteiner peab käsitlema klasse, kes on mingil kindlal viisil märgistatud (annotation, marker interface, ...). Kui klass A sõltub klassidest B ja C (omades vastavaid setter meetodeid), siis küsides klassi A instansi peab loodama ka B ja C ning need A-le külge pandama. Igat klassi peab olema maksimaalselt üks instants. Võimalikud keeled: Java, C#, Python, PHP
    • Tudeng: Rene Saarsoo
  4. Teha primitiivne Object-Relational Mapper, mis ei kasuta mingit metadatat. Eeldada, et klassi nimed vastavad tabelite nimedele ja klassi väljad vastavad tabeli veergudele. Keel: Java 1.5. Implementeerida meetodid:
    public <T> List<T> find(Class<T> class, String field, String value);
    public <T> T findOne(Class<T> class, String field, String value);
    public void store(Object object);
    
    • Tudeng: Ivo Seeba
edit