Programmeerimise põhikursus
Ainekood: ITI0010 Lektor: Aivo Anier Praktikumi juhendajad:
|
Sisukord
Teated
- 2010 sügis, ITI0011
- Lisaeksam, reedel 27.aug vt. Eksam
- Lisakesam, neljapäeval 13.mai vt. Eksam
- Lisakesam, neljapäeval 28.jaanuar vt. Eksam
- Kontrollige oma eksami aeg/grupp veel üle
- Eksami grupid-ajad on Kodutööde tulemused / seis lehel
- gomoku võisluse tulemused
- eksamiajad ÕIS-is üleval, "kehtiva deklaratsiooniga" tudengid peavad registreerima lisaeksamile 14.jaanuar
- kontrolliga oma kodutööde seisu
- konsultatsioon: neljapäeviti, kl. 12, ruumis IT112, eelneva registreerimisega e-postiga
- loengud said otsa
- Kodutööde tulemused / seis
- Kolmas ülesanne
- Teadete "feed": http://groups.google.com/group/iti0010
- Teine ülesanne
- Eeldusaine on Informaatika II, sobib ka koodiga IDK...
- Ainet saab sooritada kehtiva deklaratsiooniga - kõige kindlam viis on küsida dekanaadist üle, kas kehtib (sellel ei ole tähtsust, et see on esimesel korral T.Tammetile deklareeritud)
- Õppetöö on eestikeelne!
- Uus deklaratsioon (Sügis 2009) tuleb esitada ainele ITI0010 õppejõuga Aivo Anier (mitte Tanel Tammet). Kes on juba deklareerinud Tanel Tammeti nimele (sügis 2009), peab uuesti deklareerima õige õppejõuga (semestri esimestel päevadel oli periood, kus aine-õppejõu paar oli ÕIS-is valesti seadistatud)
Aeg, koht
Loengud: Reedeti kell 12.00-13.30, ruumis VII-131
Semester: sügis
Tulemus: kirjalik eksam, mille eelduseks ja üheks punktiosaks on praktikumiülesanded.
Punkte: 3.5
Eeldusaine: IAG3103 Informaatika II
Praktikum: kord nädalas a 2*45 minutit, AK arvutiklassides IT-213A & IT-213B. Rühmadel on erinevad ajad ja juhendajad.
Praktikumiajad:
* Esmaspäev 16.00 - 17.30 IT-213A & IT-213B: IAPB32, IAPB33 * Kolmapäev 8.00 - 9.30 IT-213A & IT-213B: IABB31, IABB32 * Neljapäev 16.00 - 17.30 IT-213A & IT-213B: IABB33, IAPB31 * Reede 8.00 - 9.30 IT-213A & IT-213B: IABB37, IAPB37, IAPB38
Konsultatsioon
Neljapäeviti, kl. 12, ruumis IT112, eelneva registreerimisega e-postiga
Eksam
Esimene eksam on ka lisaeksam - nö. kehtivate deklaratsioonidega õpilased peavad ennast sellele registreerima ÕIS-i kaudu. (eksam ilmub ÕIS-i lähipäevil)
Kõigil on võimalus valida omale päev, millal eksamit sooritada.
Eksamile lubatud õpilased jaotatakse kahte rühma - vastavalt millele saab eksamit sooritada kas kl. 10 või kl. 13. Nimekiri on siin: Kodutööde tulemused / seis lehel
Eksamiajad:
- 14. jaanuar 2010 (neljapäev), VII-226, kell 10.00-12.45 & 13.00-15.45
- 21. jaanuar 2010 (neljapäev), VII-226, kell 10.00-12.45 & 13.00-15.45
NB! Kaasa vaja võtta pildiga dokument.
Järeleksamid toimuvad kevadsemestri eelnädalal, kevadsemestri lõpupoole ja sügissemestri eelnädalal. Järeleksamite ajad ja kohad teatatakse hiljem.
Lisaeksam kevadsemestri eelnädalal:
- 28.jaanuar 2010 (neljapäev), VI-229, kell 12-15 - registreerimine ÕIS-is, lõpeb kolmapäeval kl 12 (sh. ka ITI0010 - Tammet)
Lisaeksam kevadsemestril:
- 13.mai 2010 (neljapäev), VI-229, kell 10-13, registreerimine ÕIS-is lõpeb 11.05.2010 kl. 12:00
Lisaeksam sügissemestri eelnädalal:
- 27.aug 2010 (reede), IT-140, kell 12-15, registreerimine ÕIS-is lõpeb 25.08.2010 kl. 12:00
Kursuse eesmärk
Õpetada programmeerimise aluseid ja tehnoloogiat üldiselt, eeldades kerget varasemat kokkupuutumist programmeerimisega vähemalt eeldusaine Informaatika II mahus. Rõhk on praktiliste kogemuste ja oskuste omandamisel: iseseisev töö praktikumis on olulisem, kui õpiku lugemine. Märgatava osa loenguaega kulutab lektor kohapeal ette-programmeerimiseks.
Kursus on sisuliselt (kuid mitte tingimata formaalselt) vajalik eeldus kõigile spetsiifilisematele programmeerimiskursustele, nagu "algoritmid ja andmestruktuurid", "süsteemprogrammeerimine", "objektorienteeritud programmeerimine" jms. Baaskeelena kasutatakse Javat, vältides samas eriliselt Java-päraseid meetodeid, teeke jms. Praktikumides loodavad rakendused on reeglina käsurea ja omaette akendega rakendused, mitte apletid.
Õpik
Tasuta e-book: David Eck, Introduction to Programming Using Java , version 5, 2006 (http://math.hws.edu/javanotes/ vt ka http://math.hws.edu/eck/cs124/downloads/javanotes5.pdf)
Kursus jätab käsitlemata mõned osad õpikust, kuid lisab õpikule mitmeid täiendavaid peatükke ja osi. Viited vajalikele peatükkidele ja täiendavatele materjalidele on kas juba võrgus antud või lisatakse võrku loengute käigus.
NB! Raskuste ja probleemide korral on soovitav iseseisvalt lugeda läbi kogu David Ecki raamat ja teha iga peatüki juures mõned iseseisvad harjutused (raamatus on toodud ka näitelahendused).
Käesoleva lehe lõpuosas on antud ka täiendavaid lugemismaterjale.
Praktikumiülesanded ja tähtajad
Alustuseks tee ära: java tutvustusülesanne.
NB! Tutvustusülesannet ei juhendata ega kontrollita. See tuleks iseseisvalt ära teha esimese õppetöö nädala jooksul.
Ülesanded tuleb ette näidata ja kaitsta praktikumis, praktikumi juhendajale.
Käsureaga mugavamaks hakkamasaamiseks AK arvutiklassides loe neid soovitusi: AK arvutiklasside XP java käsurida.
Ülesanded antakse veidi enne eelmise ülesande tähtaja lõppu, tähtajad on septembri, oktoobri, novembri ja kursuse lõpp. Esialgu (2009 sügis) on antud üks ülesanne.:
- Tikumäng Esimene ülesanne on täpselt sama, kui eelmine aasta: tikumängu ülesanne, ainult tekstiliides. Tähtaeg: 28.september.2009.
- Traceroute Tähtaeg: 26.oktoober.2009
- Paint Tähtaeg: 23.november.2009
- Gomoku Tähtaeg: 14.detsember.2009
Tähelepanek AK arvutiklassides: päris paljudel masinatel ei leia java kompilaator ja interpretaator (javac ja java) üles vajalikke klasse, isegi siis, kui asud kompileerides kataloogis, kus need vajalikud klassid on. Sellisel juhul kutsu javac ja java välja koos classpathiga, milleks on kataloog, kus ise oled (seda tähistab punkt -cp järel), eeldusel muidugi, et oled ise selles kataloogis, kus vajalikud klassid:
- javac -cp . minuprogramm.java
- java -cp . minuprogramm
NB! Arvesta järgmist:
- Eksamile pääsemiseks peavad olema sooritatud vähemalt kolm neljast praktikumi-ülesandest.
- Juhul, kui üks neljast ülesandest jääb realiseerimata, saab selle eest 10 trahvipunkti
- Iga hilinenud ülesande punktid jagatakse kahega.
- Pärast 18. detsembrit ei aktsepteerita enam ühtegi ülesannet.
- Iga ülesanne tuleb programmeerida iseseisvalt ja näidata/kaitsta praktikumi juhendajale praktikumi ajal ette. E-postiga saadetud lahendusi ei aktsepteerita!
- Ülesande arvestamiseks ütle juhendajale praktikumi ajal ise, kui soovid lahendatud ülesannet näidata: juhendaja ei hakka reeglina ise õigeagselt uurima, et kas on ülesanne ikka tehtud.
Täpsustav info eelmisel kursusel tehtud praktikumitööde kohta: kui oled eelmine kord saanud punkte, siis saad neid sel semstril kasutada ainult juhul, kui said eksami edukalt sooritatud (hinne vähemalt 1). Vastasel korral pead praktikumitööd uuesti tegema. Teiste sõnadega: vanad praktikumitulemused kehtivad ainult juba olemasoleva hinde parandamiseks, mitte aga olukorras, kus sa pole eksamil läbi saanud. Viimasel juhul pead lihtsalt tegema nullist selle aasta praktikumitööd.
Eksamid ja hindamispõhimõtted: eksamil osalemine eeldab vähemalt kolme sooritatud praktikumi. Eksamil saab punkte 0-60. Eksami punktide arv alla 20 (60st) annab automaatselt tulemuseks 0. Muudel juhtudel liidetakse praktikumipunktid ja eksamipunktid ning hindevahemikud on 51-60, 61-70, …, 91-100. Eksam on kirjalik, paberil, ja koosneb ainult väikestest programmeerimisülesannetest.
Esimene järeleksam toimub eksamissessiooni järel, teine kevadsemestri lõpupoole, kolmas sügissemestri eelnädalal.
Loengute plaan ja materjalid
Loengute plaan on esialgne, töö käigus ilmub siia kindlasti muutusi. Seega, täpselt adekvaatsed ja õiged on need materjalid, mille loeng on kas juba läbi või tuleb järgmisena: kõik tuleviku-loenguid puudutavad materjalid on vanad, ning saavad loengu kättejõudmise ajaks mingil määral modifitseeritud ja täiendatud.
- 1. Sissejuhatus, meeldetuletus, kursuse ülevaade.
- Aeg: 4 september.
- Loengumaterjal: Esimene
- Lugeda: D.Eck ptk 1
- Tutvuda:
- 2. Muutujad, lihtandmed, juhtimiskonstruktsioonid ja tsüklid. Laboratoorne töö 1.
- Aeg: 11 september.
- Loengumaterjal: Progpohi2_07.ppt, Progpohi2_07.pdf,
- Lugeda: D.Eck ptk 2, 3
- Lugeda Peter Norvig: Teach yourself programming in ten years
- Lugeda Paul Graham: Hackers and Painters
- 3. Funktsioonid, klassid. Kompleksandmed
- eeskätt stringid ja massiivid.
- Aeg: 17 september.
- Loengumaterjal: Progpohi3_07.ppt, Progpohi3_07.pdf
- Lugeda: D.Eck ptk 4, 5 algus
- 4. Sissejuhatus teise praktikumitöösse. Veatöötlus. Failid. Võrgust lugemine.
- Aeg: 24 september.
- Esialgsed praktikumimaterjalid: Praktikumitöö: twitter.
- Loengumaterjal: Progpohi4_07.PPT, Progpohi4_07.pdf
- Lugeda: D.Eck 8,11
- 5. Teise praktikumitöö, failide jätk.
- Aeg: 30 september.
- Praktikumimaterjalid: Praktikumitöö: twitter.
- loengunäidete kood
- 6. Objektid ja klassid.
- Aeg: 7. oktoober.
- Loengumaterjal objektidest: Progpohi7_07.PPT, Progpohi7_07.pdf
- Lugeda: D.Eck 5
- 7. Graafika ja kasutajaliidese sissejuhatus.
- Aeg: 14 oktoober
- Korratakse objektide loengumaterjali põhipunkte, alustatakse graafika ja kasutajaliidesega.
- Loengumaterjal, millega algust tehakse: Progpohi6_06.PPT, Progpohi6_06.pdf
- Koodinäited: javagraphexamples.zip
- Lugeda: D.Eck 6 ptk 1-4.
- 8. Graafika ja kasutajaliides. Materjali ja näidete jätk.
- Aeg: 21 oktoober.
- 9. Kolmas praktikumitöö.
- Aeg: 28 oktoober.
- Spec: Paint
- 10. Praktikumiabi jätk. Seejärel binaarne otsing ja sorteerimine.
- Aeg: 5 november.
- Loengumaterjal: Progpohi10.PPT
- Lugeda: D.Eck ptk 8.4: Searching and Sorting.
- Proovida: xsortlab, sorting demo, Sortingdemo.zip
- 11. Otsingualgoritmide algus. Travelling salesman problem.
- Aeg: 12 november
- Loengumaterjal: Progpohi11.PPT
- Lisamaterjal: searchadditional2.ppt
- Näiteprogramm paari optimeeringuga: tsp.java
- 12. Mõtlemismängud (male, reversi jne) ja neljas praktikum.
- Aeg: 19. november
- Neljanda praktikumitöö sissejuhatus.
- Loengumaterjal: Progpohi12_06.PPT
- Lisaks:
- Minimax & alpha-beta: minimax wikipedias, a-b wikipedias, apletiga demo, a-b liikuvate piltidega seletus
- Chinook: http://www.cs.ualberta.ca/~chinook/
- Hea tasuta raamat (disser) mängude programmeerimisest: http://fragrieu.free.fr/SearchingForSolutions.pdf
- 13. Neljanda praktikumi jätk.
- Aeg: 27. november
- Neljanda praktikumitöö jätk.
- 14. Listid, stack, queue, puud.
- Aeg: 4. detsember.
- Loengumaterjal: Progpohi14_08.PPT
- Näide, mis teisendab massiivi listiks, lisab uue elemendi ja siis teisendab tagasi massiiviks: Listex
- Õpikust lugeda: peatükk 9 osad 1,2,3,4.
- 15. Lõimed (i.k. threads).
- Aeg: 11. detsember.
- Loengumaterjal: Progpohi15_07.PPT, Progpohithreads.PPT
- Loengus tehtud näide puude kohta: Treex.java
- Loengu Näiteprogramme parserite kohta Parse_examples.zip
- Lugeda: D.Eck ptk 9 osa 5, samuti ptk 11 osa 5.
Tarkvara ja käsiraamatud
Vajalik tarkvara kodus töötamiseks:
- Java J2SE JDK (Java 2 standard edition java development kit).
Tõmba SUN-i lehelt http://java.sun.com/javase/downloads/ versioon "JDK 6 update 7".
NB! Vajalik on JDK, mitte JRE, ja nimelt J2SE (standard edition), mitte J2ME (micro edition) või J2EE (enterprise edition). Infoks: enne Java 1.5 versiooni kasutati nime JDK asemel nime SDK.
Versioone "JDK 6 with NetBeans" ja "JDK 6 with Java EE" ei ole soovitav tõmmata, kui sa just ise nende vastu spetsiaalset huvi ei tunne. Kui sinu masinas juba on Java JDK ehk SDK (kontrolli, kas leiad programmi nimega javac), siis on ta OK, kui versioon on vähemalt 1.3.1. Vanemaid, kui 1.3.1 versioone ei ole soovitav kasutada.- Praktiline juhatus versiooni 6 installeerimiseks
- Praktiline kiire juhatus eelmise kasutamiseks: windowsi jaoks, unixi jaoks
- Linuxil on hea mõte kasutada sinu distro standardset Java-paketti
- Tekstiredaktor SciTE: põhileht, linuxi download (alternatiivina on distrotes enamasti oma scite package) windowsi download, mõnusam windowsi download (soovitav!).
- Alternatiivina Scitele on Windowsil sobiv kasutamiseks ka Notepad++
Tehnilised käsiraamatud:
- Sun'i tehniliste Java käsiraamatute üldleht: leiad siit
- Sun'i Java teekide ja teegifunktsioonide kataloog: otselink versiooni 1.5 jaoks. .
Lisa-lugemismaterjale
Lihtsad:
- Mis on IDE?
- Bradley Kjell: Computer Science I, using Java
Keskmise keerukusega:
- Sun'i Java tutorial: algus on siin
- Sun'i kataloog erinevatest õppematerjalidest
Keerukad (ära loe, kui kõik muu pole veel liiga-liiga lihtne!):
- Bruce Eckel: Thinking in Java Vt ka http://mindview.net/Books.
Harjutamist ja taustinfot eksamiks
Kuidas on tudengitel selles aines varem läinud? Vanad, 2005 sügissemestri tulemused leiad siit).
Näite-eksamiülesanded 2004 aastast leiad siit:
Peaasi on teha ise ja korralikult praktikumiülesandeid: see ongi parim harjutus eksamiks.