Programmeerimise põhikursus Javas (2015)

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Java logo and wordmark.svg.png

Ainekood: ITI0011
Link: http://courses.cs.ttu.ee/pages/ITI0011
Email: iti0011@cs.ttu.ee

Kursus varasematel aastatel: Programmeerimise põhikursus Javas (2014), 2013, 2012

Страница курса на русском языке здесь: ITI0011RUS

Aine info ÕIS-is

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

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

Hello world näide

Java lühijuhend (täieneb vastavalt läbitud teemadele)

ITI0011:Konsultatsioon_1

Viited ja materjalid

Õ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)