Programmeerimise põhikursus Javas (2015)
Ainekood: ITI0011 Kursus varasematel aastatel: Programmeerimise põhikursus Javas (2014), 2013, 2012 Страница курса на русском языке здесь: ITI0011RUS |
Teated
Jooksev punktiseis: https://docs.google.com/spreadsheets/d/1L4pZWWDOJ_qMf7LPvK9263Bq7WDDLl0R_fVUfw02yIA/pubhtml
Tunni toimumisajad ja õppejõud
Vastutav õppejõud: Ago Luberg
Kontakt: ago.luberg ätt ttu.ee, TTÜ ICT-423
Praktikumide ajad:
IAPB21, IAPB22: T8 (ICT-501), R10 (ICT-401)
IAPB23, IAPB24: T15.45 (ICT-401), N10 (ICT-501)
IAPB25: T10 (ICT-404), N12 (ICT-402)
IAPB27, IAPB28 (venekeelne): K8 (ICT-402), N10 (ICT-403)
Praktikumide õppejõud: Gert Kanter, Evelin Halling, Aleksandr Lenin (venekeelne praktikum)
Konsultatsiooniajad:
Ago Luberg: T12.00 (peale hommikusi praktikume), tuleb eelnevalt emaili teel kokku leppida (ago.luberg ätt ttu.ee)
Aleksandr Lenin: aeg tuleb eelnevalt emaili teel kokku leppida (aleksandr.lenin ätt ttu.ee)
Gert Kanter: aeg tuleb eelnevalt emaili teel kokku leppida (gert ätt cs.ttu.ee)
Kodused ülesanded ja tähtajad
- I kodutöö - Tikumäng, kaitsmised 26.-27. veebruaril. Pikendatud 5.-6. märts.
- II kodutöö - Säuts, kaitsmised 7. - 8. aprillil.
- III kodutöö - Mull, kaitsmised 7. - 8. mail.
- IV kodutöö, - Gomoku, kaitsmised 19.-22. mail.
Hindamispõhimõtted
- Tudengid koguvad erinevate ülesannete lahendamise ja eksami eest punkte.
- Punktid liidetakse kokku ning lõpphinde saab TTÜ õppekorralduse eeskirja järgi vastavalt 51-60 -> "1", 61-70 -> "2", ... 91 ja üle -> "5".
- Tähtaegade ületamine annab vähem punkte.
- Tudeng peab kõik ülesanded lahendama iseseisvalt.
- Plagiaadi esitamise eest on tulemus automaatselt 0 punkti.
Täpsemalt on punktide saamine kirjeldatud järgmistes alalõikudes.
Harjutused
Tunni lõpus antakse koduseks harjutamiseks suhteliselt lihtne harjutusülesanne. Ülesande tähtaeg on järgmise tunni algus. Ülesande lahendamise eest on võimalik saada kuni 1 punkt. Kokku on semestri peale vähemalt 20 ülesannet.
Ülesanne läheb hindamisele, kui selle lahendus on enne tunni algust git'is vastavas kaustas (näiteks EX1) JA ülesande eest on automaattestidest saadud rohkem kui 0 punkti (ehk siis vähemalt üks test on läbi läinud). Ülesande git'i panemisel jooksutatakse tudengi koodi peal automaatsed testid, mis kontrollivad lahenduse korrektsust. Tudeng saab testitulemusest teada emailiga (näiteks 80% testidest läbitud). Tudengil on kuni tunni alguseni võimalik oma programmi parandada, et saada testidest läbitavus 100%. Ülesande git'i esitamise eest saab maksimaalselt 0.5 punkti (ehk siis pooled punktid), täpsemalt 0.5 * testide tulemus (näiteks 80% oli testimide tulemus, tudeng saab 0.8 * 0.5 = 0.4 punkti).
Ülesande hindamine toimub tunnis. Ülesanne läheb tunnis hindamisele, kui see on esitamise osa eest (vt eelmist lõiku) rohkem kui 0 punkti (ehk siis vähemalt ühest testist on läbi saanud) NING ülesande esitaja tudeng on tunni alguses kohal. Hindamine näeb välja sedasi, et tudengid jagatakse juhuslikult paaridesse. Tudengid hindavad paarisiseselt üksteise töid. Hindamine toimub veebivormi algusel, kus märgitakse ära hinnang ja kommentaar kolme kriteeriumi kohta:
- töökindlus
- lahenduse arusaadauv
- koodistiil (kvaliteet, paindlikkus)
Ehk siis iga kriteeriumi kohta märgib hindaja ära hinde skaalal 0-5 (0 - täitsa puudu, 5 - suurepärane) ning lisab tekstilise kommentaari. Mõlemad väljad on kohustuslikud. Kommentaar "ok" pole piisavalt informatiivne. Välja peaks tooma hindaja arvates nii head kui halvad kohad koodis.
Kui tudeng osaleb hindamisel ja kirjutab teisele tudengile hinnangu, saab selle eest juurde 0.25 punkti. Ülejäänud hinne kujuneb teise tudengi poolt määratud hinnangust ja tudengi enda hindamisest. Hindamist kontrollivad õppejõud, kes vaatavad, kas hinnang on vastavuses hinnatava koodiga.
Harjutuse eest saadavad esitamise ja hindamise punktid liidetakse kokku. Maksimaalselt on võimalik saada 1 punkt ühe harjutuse eest. Hiljem kõikide ülesannete punktid liidetakse kokku. Tulemus ümardatakse üles (esimese täisarvuni, mis võrdne või suurem saadud summast). Ehk kui summa on kokku 17.1 saab tulemuseks 18 punkti.
Kokkuvõtvalt:
- kui töö on git'is esitatud enne tunni algust, võib selle eest saada maksimaalselt 0.5 punkti (tundi tulema ei pea, kui see 0.5 rahuldab).
- tunnis hindavad tudengid üksteise tööd.
- ainuüksi hindamisprotsessi läbimise eest saab 0.25 punkti.
- ülejäänud hindamise eest saab kuni 0.25 punkti (seal sisaldub hinne teiselt tudengilt ja hindamise korrektsus).
- iga harjutuse eest võib maksimaalselt saada 1 punkti
- kõikide harjutuste punktid liidetakse kokku, tulemus ümardatakse üles
Kodutööd
Kodutööd on mõnevõrra mahukamad iseseisvad tööd, kus kombineeritakse erinevaid õpitud teadmisi mõne suurema probleemi lahendamiseks. Kokku on semestri jooksul 4 kodutööd. Igal kodutööl on konkreetne tähtaeg (vt #Kodused ülesanded ja tähtajad). Iga kodutöö realiseerimine annab 5 punkti. Täiendavalt on võimalik saada lisapunkte.
Kodutöö tuleb ettemääratud tähtajaks laadida git'i (kaust HW1). Tudeng saab oma esitatud koodi kohta tagasisidet automaattestidest nagu harjutusülesannete puhulgi. Kodutöö tuleb kaitsta õppejõule kohapeal (emaili vms kaitsmisviisi ei aktsepteerita), kes küsib küsimusi tudengi enda koodi kohta. Lisaks võib õppejõud lasta teha väikese muudatuse koodi. Õppejõu kontrollimise eesmärk on aru saada, kas tudeng on koodi ise kirjutanud ja/või kas ta saab sellest lõpuni aru. Kui tudeng kaitseb oma koodi ilusti õppejõule ära, on kodutöö tulemuseks punktid, mis tulenevad automaattestidest saadud tulemusega. Näiteks kui tudeng lahendab 6p ülesannet ning testid annavad tulemuseks 80%, siis tudeng saab 6 * 0.8 = 4.8 punkti. Saadud punktid ümardame tavalisi matemaatika ümardamisreegleid kasutades (4.49 => 4, 4.5 => 5).
Kodutöö kaitsmine nädal või rohkem enne tähtaega annab +1 lisapunkti. Hilinemine annab 50% punktidest. 4 või enam nädalat hilinemist annab 0 punkti. Kui tudeng esitab 8-punktise töö üks, kaks või kolm nädalat hiljem, saab ta 4 punkti. Kui tudeng esitab sama töö 4 või enam nädalat hiljem, saab ta 0 punkti.
Kokkuvõtvalt:
- 4 kodutööd semestri jooksul, igaüks 5 punkti + lisaülesanded
- Kodutöö kaitsmine enne tähtaega annab +1 lisapunkti
- Kodutöö kaitsmine kuni 3 nädalat peale tähtaega annab 50% punktidest (ümardatud alla)
- Kodutöö kaitsmine 4 või enam nädalat peale tähtaega annab 0 punkti.
- Kodutöö tuleb laadida mainitud tähtajaks git'i vastavasse kausta (HWx, kus x on kodutöö number [1, 2, 3, 4]).
- Kodutöö tuleb kaitsta õppejõule kohapeal (email vms kaitsmisviisi ei aktsepteerita).
- Kodutöö hinne kujuneb testidest saadud tulemusest. Soovitud punktid korrutatakse testitulemusega läbi, tulemus ümardatakse matemaatika ümardamisreegleid kasutades. Õppejõul on õigus punkte vähemaks võtta kui ta veendub, et tudeng ei saa oma koodist aru.
- Kodutöö kaitsmisel on oluline, et kood oleks tudengi enda kirjutatud ja ta saab oma koodist aru.
- Plagiaadi esitamise eest tulemust kirja ei saa.
Tunnikontrollid
Semestri jooksul korraldatakse kuni 4 tunnikontrolli. Tunnikontroll võtab kokku teemad, mida seni käsitletud on. Tunnikontrolli peamine eesmärk on valmistada tudengeid ette eksamiks. Tunnikontrolli eest antakse kuni +1 lisapunkt. Pigem peaks tudeng väärtustama tagasisidet, mis ta saab oma teadmiste kohta. (Võrdluseks, eelmisel aastal ei saanud tunnikontrolli eest ühtegi lisapunkti, kokku kirjutas tööd 98 tudengit, üle poolte nendest, kes eksamile pääses.)
Täpsemad toimumisajad, teemad ja vorm selgub jooksvalt.
Eksam
Enne eksamit kõik saadud punkti liidetakse ning arvesse läheb maksimaalselt 50 punkti (ehk siis kui tudeng on kogunud 53 punkti, läheb arvesse 50).
- Eksamieeldus:
- vähemalt 20 punkti harjutuste, kodutööde jm lisapunktide eest enne eksamit.
- JA vähemalt 2 kodust ülesannet lahendatud/kaitstud.
- Eksam annab kokku 60 punkti.
- Eksam on sooritatud, kui selle eest on saadud vähemalt 31 punkti (51% võimalikust maksimaalsest).
- Eksamile peab registreerima ÕIS-is (hiljemalt eelmisel päeval kl. 12)
- NB! Kaasa vaja võtta pildiga dokument.
- Eksam jaguneb:
- natuke teoreetilisem (koodi lugemine, üks praktiline ülesanne ka) osa paberi peal, 1.5h:
- koodi lugemine 10p
- valikvastused 10p
- programmeerimisülesanne 10p
- praktiline osa arvuti peal, 1.5h:
- rekrsiooni ülesanne 10p
- masiivi ülesanne 10p
- sõne ülesanne 10p
- natuke teoreetilisem (koodi lugemine, üks praktiline ülesanne ka) osa paberi peal, 1.5h:
Esimesena sooritab tudeng paberil kirjutata eksami. Selleks on vaja kaasa võtta kirjutusvahendid. Mitte midagi muud selle eksami ajal kasutada ei tohi.
Arvutis kirjutatav osa sooritatakse arvutiklassi arvutite peal, kood läheb git'i. Välist internetti kasutada ei tohi. Git'i seadistamisel jms puhul saavad õppejõud aidata.
Näidiseksamid
Näidiseksami I osa (paberil), II osa (arvutis)
Näidiseksam (28.mai): I osa (paberil), II osa (arvutis)
Eksamiajad:
- 28.05 kell 10:00 kirjalik osa ICT-A2, 12:00 arvutiga osa ICT-401
- 28.05 kell 12:00 kirjalik osa ICT-A2, 14:00 arvutiga osa ICT-401
- 28.05 kell 14:00 kirjalik osa ICT-A1, 16:00 arvutiga osa ICT-401
- 04.06 kell 10:00 kirjalik osa ICT-A1, 12:00 arvutiga osa ICT-401
- 04.06 kell 12:00 kirjalik osa ICT-A1, 14:00 arvutiga osa ICT-401
- 04.06 kell 14:00 kirjalik osa ICT-A1, 16:00 arvutiga osa ICT-401
Järeleksam:
- 17.06 kell 12:00 kirjalik osa ICT-A2, 14:00 arvutiga osa ICT-401
Punktid kokkuvõtvalt
Enne eksamit:
- Harjutusülesanded 20 x 1p = kuni 20 p
- Koduülesanded 4 x 5p = 20 p
- Koduülesannete boonuspunktid 4 x vähemalt 5p = 20 p
- Tunnikontrollid 3-4 x 1p = 4p
- Muud lisapunktid kuni 10p
Seega enne eksamit on teil võimalus koguda punkte erinevatest kohtadest. Kokku üle 60p. Arvesse läheb maksimaalselt 50p.
- Kirjalik eksam 30p
- Eksam arvutis 30p
Materjalid
Java lühijuhend (täieneb vastavalt läbitud teemadele)
- 1. praktikum: Praktikum01.pptx.
- 2. praktikum: ITI0011:praktikum 02, ITI0011:harjutus 01
- 3. praktikum: massiiv, Java:Massiiv, ITI0011:harjutus 02
- 4. praktikum: Java:Sõne, ITI0011:harjutus 03
- 5. praktikum: Java:Veahaldus, Java:Sisend-Väljund, ITI0011:harjutus 04
- 8. praktikum: ITI0011:harjutus 05
- 10. praktikum: ITI0011:harjutus 06
- 11. praktikum: Java:Objektid, ITI0011:harjutus 07
- 12. praktikum: pärimine (inheritance), polümorfism jm (Java:Objektid), ITI0011:harjutus 08
- 13. praktikum: ITI0011:harjutus 09
- 14. praktikum: ITI0011:praktikum 14
- 15. praktikum: ITI0011:harjutus 10
- 16. praktikum: ITI0011:praktikum 16, ITI0011:praktikum 16 G5, ITI0011:praktikum 16 G12, ITI0011:harjutus 11
- 17. praktikum: ITI0011:praktikum 17 G12, ITI0011:praktikum 17 G5, ITI0011:praktikum 17 G34
- 18. praktikum: ITI0011:harjutus 12
- 20. praktikum: ITI0011:harjutus 13, ITI0011:JavaFX
- 21. praktikum: ITI0011:harjutus 14
- 22. praktikum: ITI0011:harjutus 15
- 23. praktikum: ITI0011:Android - infot Androidi paigaldamise kohta, ITI0011:harjutus 16, ITI0011:Android praktikum 1
- 24. praktikum: ITI0011:Android praktikum 2, ITI0011:harjutus 17
- 25. praktikum: Java visualizer, unit testing, rekursioon, EX17 testimine, ITI0011:praktikum 25, ITI0011:harjutus 18
- 26. praktikum: rekursioon
- 29. praktikum: ITI0011:harjutus 19, gomoku
- 31. praktikum: Lahendame tunnis ülesandeid
- ITI0011:harjutus 20
Viited ja materjalid
- Kursuse teated: http://groups.google.com/group/iti0011
- CodingBat (hea leht, kus harjutada väikeste ülesannete lahendamist): http://codingbat.com/java
- Hindamise keskkond: https://cs.ttu.ee/apps/java15/
- Giti juhend Eclipse'is kasutamiseks, Git kasutusjuhend
- Checkstyle'i kasutamine
- praktikumides kirjutatud kood
Õpik
Tasuta e-book: David Eck, Introduction to Programming Using Java , version 7.0, 2014
(http://math.hws.edu/javanotes/ vt ka http://math.hws.edu/eck/cs124/downloads/javanotes7.pdf)