Programmeerimise põhikursus 2008: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
 
(ei näidata 3 kasutaja 344 vahepealset redaktsiooni)
1. rida: 1. rida:
<table>
<tr>
<td>
</td>
<td>


Ainekood: <b>ITI0010</b><br>
Link: http://www.lambda.ee/index/Programmeerimise_põhikursus ehk http://www.lambda.ee/index/iti0010<br>
Võid vaadata ka [[iti0010 2007]] arhiivi.


== Maht, aeg, tulemus ==
Lektor: [http://tanel.tammet.googlepages.com Tanel Tammet] [http://pirrejaraak.blogspot.com blog]<br>
Kontakt: tammet@staff.ttu.ee, 6203457, TTÜ AK223<br>
<!-- Praktikumijuhendajad: priit.potter@webmedia.ee, Kristjan.Haavik@seb.se (vt allpool praktikumiaegu!) -->
</td>
</tr>
</table>


Loenguid nädalas: 2 tundi. Kui pole teisiti märgitud, toimuvad kõik loengud:
[[Pilt:highway2.jpg|left|Klee: Higways and byways]]


* TTÜ-s järgmistel aegadel.
<!--
** Neljapäeval 8.00-9.30, aula (loeb Tanel)
** Venekeelne loeng: kolmapäeval, 10.00-11.30, VII korpus saal 226 (loeb Deniss)
* ITK-s järgmistel aegadel.
** Teisipäeval 12.00-13.30, Neo saal (loeb Tanel)


Harjutustund TTÜ: iseseisev lugemine ja (vahel) ülesannete lahendamine, juhendajat ei ole.<br>
== <font color="red">Augusti järeleksami tulemused</font>  ==
Harjutustund ITK: iseseisev lugemine ja (vahel) ülesannete lahendamine, juhendaja suunamisel.


TTÜ: kursus lõpeb EKSAMIGA. Eksam on kirjalik, kaks või enam tundi, kümme küsimust ja ülesannet.<br>
[[iti0010 järeleksam 2008 august |Vaata siit]].
ITK: kursus lõpeb ARVESTUSEGA. Arvestus on kirjalik, kaks või enam tundi, kümme küsimust ja ülesannet.


== Eksamid ja arvestused ==
-->


TTÜ eestikeelsete gruppide '''lõplikud''' tulemused peale põhi- ja järeleksameid sessi jooksul on kättesaadavad [[Media:www_itsisseksamjan05.html|selle lingi alt]].


NB! Järgmine järeleksam toimub kevadsemestri teisel poolel, info aja/koha kohta ilmub veebruaris või märtsis siia lehele.
== <font color="red">Kevadise järeleksami tulemused</font> ==


Tehnikaülikoolis, eestikeelsed grupid:
<pre>
Inits Matrikkel Praxsum Eksam Kokku Hinne
JA 73864         24 48 72 3
AA 73865         29 43 72 3
JK 73724         19 38 57 1
JK 75342         21 16 37 0
ON 40550         20 55 75 3
VV 55161         21 24 45 0
</pre>


* Konsultatsioon: neljapäev, 16. dets. kell 14.00 ruumis VI-229
== Kursuse tulemused ==
* Lühem (alternatiivne) konsultatsiooniaeg: neljapäev, 16. dets. kell 16.00 ruumis VI-229
* Põhieksam 1: esmaspäev, 20. dets. kell 10.00 ruumis VI-201
* Põhieksam 2: teisipäev, 21. dets. kell 10.00 ruumis VI-201
* Järeleksam 1: esmaspäev, 10. jaan. kell 10.00 ruumis VI-201
* Järeleksam 2: teisipäev, 11. jaan. kell 10.00 ruumis VI-201


Tehnikaülikoolis, venekeelsed grupid:
[[iti0010 2008/2009 kevadise eelnädala järeleksami tulemused |<font color="red">Kevadise eelnädala järeleksami tulemused vaata siit</font>]]


* Põhieksam 1: kolmapäev, 05. jaan. kell 17.30 ruumis III-103
On nii ÕIS-s kui (enne järeleksameid) siin: [[iti0010 2008 sügissemestri tulemused]]
* Põhieksam 2: laupäev, 08. jaan. kell 10.00 ruumis IV-103
* Järeleksam: kolmapäev, 12. jaan. kell 17.30 ruumis III-103


IT Kolledzhis:
Probleemide/võimalike vigade puhul palun võtta ühendust: tammet@staff.ttu.ee


* Põhiarvestus 1: teisipäev, 14. dets kell 18.00 ruumis 211 ja 218
Esimene järeleksam toimub kevadsemestri eelnädalal, 30 jaanuari (reede) hommikul kell 9.00 ruumis VI-201 (kuues korpus).
* Põhiarvestus 2: kolmapäev, 15. dets kell 14.00 ruumis 211
 
Teine järeleksam toimub kevadsemestri lõpupoole.
 
== Eksam ==
 
Talvisel sessil oli võimalik eksamit teha kahel erineval päeval (teine aeg ei ole järeleksam, st mõlemil päeval eksamit teha ei või):
 
* 8. jaanuar 2009 (neljapäev) kell 10.00 ruumis I-202 (aula taga)
* 15. jaanuar 2008 (neljapäev) kell 10.00 ruumis I-202 (aula taga)
       
NB! Kaasa vaja võtta pildiga dokument.
 
Järeleksamid toimuvad kevadsemestri eelnädalal (26.- 31.jaanuar), kevadsemestri lõpupoole ja sügissemestri eelnädalal. Järeleksamite ajad ja kohad teatatakse hiljem.  
 
== Aeg, koht  ==
 
Loengud: Igal kolmapäeval kell 8.00-9.30, ruumis VII-131<br>
Semester: sügis<br>
Tulemus: kirjalik eksam, mille eelduseks ja üheks punktiosaks on praktikumiülesanded.<br>
Punkte: 3.5<br>
Eeldusaine: IAG3103 Informaatika II<br>
 
Praktikum: kord nädalas a 2*45 minutit, AK arvutiklassides <b>IT-213</b>.
Rühmadel on erinevad ajad ja juhendajad.
 
Praktikumiajad:
* Esmaspäev 16-17.30 IT 213E: IAPB31, IAPB32. Juhendaja Madis Puju.
* Teisipäev 16-17.30 IT 213A: IABB31, IABB32, IANM11. Juhendaja Andri Rebane.
* Neljapäev 16-17.30: IT 213C: YABM11, YASM11, IAPB33, IAPB34. Juhendaja Madis Puju.
* Reede 14-15.30: IT 213A: IABB37, IAPB37. Juhendaja Andri Rebane.
 
(kontrolli oma rühma üldisest tunniplaanist, et siin antud aeg on ikka õige):


== Kursuse eesmärk ==
== Kursuse eesmärk ==


* Anda kokkusurutud ülevaade informaatikast tervikuna.
Õ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.
* Anda ajalooline ülevaade IT teooria, tehnoloogia ja äri arengust.
 
* Tutvustada edaspidiseid loengukursusi stuudiumi vältel.  
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.
 
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 septemri, oktoobri, novembri ja kursuse lõpp. Esialgu (2008 sügis) on antud üks ülesanne:
-->
 
# Esimene ülesanne on täpselt sama, kui eelmine aasta: [[tikumängu ülesanne]], ainult tekstiliides. Tähtaeg: septembri lõpp. [[Media:Ulesanne1_vene.rtf | venekeelne variant tikumängu ülesandest]]
# Teine ülesanne. [[Praktikumitöö: twitter]]  Tähtaeg: oktoobri lõpp.
# Kolmas ülesanne. [[Praktikumitöö: aktsiahinnad]] Tähtaeg: reede, 28 november (soovitus teha varem: jääb rohkem aega neljanda jaoks!).
# Neljas ülesanne. [[Praktikumitöö: reversi]] Tähtaeg: 21 detsember
<!--
Edaspidised ülesanded tulevad umbes sama keerukusega, kui järgmised 2007 aasta ülesanded, kuid kindlasti erinevad:
# Vana teine ülesanne. [[Praktikumitöö: Raamatute hinnavaatlus]].
# Vana kolmas ülesanne. [[Praktikumitöö:graafiline  rakendus]].
# Vana neljas ülesanne. [[Praktikumitöö: Kalah]].
-->


NB! Kursus EI ÕPETA elementaarset arvutikasutamist. Samuti ei õpeta kursus programmeerimist, kuigi annab õrna sissejuhatuse programeerimisse.
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 


== Kokkuvõte ==


Ajalooline ja kontseptuaalne ülevaade informaatikast kui äri-, teadus- ja insenerivaldkonnast. Valdkonna varajane ajalugu, teaduslikud ning tehnilised arengud selle sajandi alguses, sajandi keskpaiga kiire tehnoloogiline ja äriline areng ning viimastel kümnenditel toimunu nii äris, tehnoloogias kui teaduse baasosades. Peamised programmeerimise paradigmad (imperatiivne, loogiline, funktsionaalne, objekt-orienteeritud) ning rakendussüsteemide tehnoloogia paradigmad (suurarvutid, personaalarvutid, klient-server süsteemid, hajutatud ja mitmekihilised süsteemid). Uute tehnoloogiate ja firmade teke ning allakäigu lained, printsiibid ja konkreetsed võtmesündmused.
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 eksamil 10 trahvipunkti (eksami maksimumpunktid on 100)
* Iga hilinenud ülesanne annab 5 trahvipunkti.
* Pärast 21. detsembrit ei aktsepteerita enam ühtegi ülesannet.
* Iga ülesanne tuleb programmeerida iseseisvalt ja näidata 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 <b>2007 sügisel tehtud praktikumitööde kohta</b>: kui oled 2007 sügissemestril saanud  punkte, siis saad neid 2008 sügissemestril kasutada ainult juhul, kui said 2007 eksami edukalt sooritatud (hinne vähemalt 1). Vastasel korral pead praktikumitööd uuesti tegema. Teiste sõnadega: vanad praktikumitulemused kehtivad <b>ainult</b>  juba olemasoleva hinde parandamiseks, mitte aga olukorras, kus sa pole eksamil läbi saanud. Viimasel juhul pead lihtsalt tegema nullist selle aasta praktikumitööd.
<b>Eksamid ja hindamispõhimõtted</b>: 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 50-59,60-69,70-79,80-89,90 ja enam. 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 ja materjalid ==


Kursusel ei ole ühtegi konkreetset õpikut. Järgnevas on toodud iga loenguga seotud materjalid eraldi.
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: 3 september.
:Loengumaterjal:  [[Media:Progpohi1_07.ppt|Progpohi1_07.ppt]], [[Media:Progpohi1_07.pdf|Progpohi1_07.pdf]]
:Lugeda: D.Eck ptk 1
:Tutvuda:
:* [http://www.wikipedia.org/wiki/Comparison_of_Java_to_Cplusplus Java ja C++ keeltena]
:* [http://www.learnxpress.com/modules/contents/channels/prog,cs,,javavscs.aspx Java ja C# keeltena]
:* Java vs C kiirus: [http://www.freewebs.com/godaves/javabench_revisited/ Java vs C benchmarkimisest],  [http://www.kano.net/javabench/ uuem Java vs C benchmark]


; 1. Sissejuhatus : Programmeerimine ja arvuti tööpõhimõtted.  
; 2. Muutujad, lihtandmed, juhtimiskonstruktsioonid ja tsüklid. Laboratoorne töö 1.
:Loengumaterjal: [[Media:itsissejuhatus1o.PPT|itsissejuhatus1o.PPT]], [[Media:itsissejuhatus1o.pdf|itsissejuhatus1o.pdf]].
:Aeg: 10 september.
:Lisaks: loe juttu ja mängi andmete esitamise appletiga siin.  
:Loengumaterjal: [[Media:Progpohi2_07.ppt|Progpohi2_07.ppt]], [[Media:Progpohi2_07.pdf|Progpohi2_07.pdf]],
:Lugeda: D.Eck ptk 2, 3
:Lugeda [http://norvig.com/21-days.html Peter Norvig: Teach yourself programming in ten years]
:Lugeda [http://www.paulgraham.com/hp.html Paul Graham: Hackers and Painters]


; 2. Varane ajalugu : Industrialiseerimine. Teoreetilised alused. Loogika.  
; 3. Funktsioonid, klassid. Kompleksandmed: eeskätt stringid ja massiivid.
:Loengumaterjal: [[Media:itsissejuhatus2o.PPT|itsissejuhatus2o.PPT]], [[Media:itsissejuhatus2o.pdf|itsissejuhatus2o.pdf]].
:Aeg: 17 september.
:Lisaks:
:Loengumaterjal: [[Media:Progpohi3_07.ppt|Progpohi3_07.ppt]], [[Media:Progpohi3_07.pdf|Progpohi3_07.pdf]]
:* algus-1945: [http://www.maxmon.com/history.htm A history of computers]
:Lugeda: D.Eck ptk 4, 5 algus
:* Alustada: [[Media:loogikasissejuhatus_raamat.html|Loogika aine ja ajalugu]]


; 3. Keskajalugu : II maailmasõda kuni kuuekümnendate algus. Arvutid ja programmeerimine. Keeled ja rakendused. Integraalskeemid.
; 4. Sissejuhatus teise praktikumitöösse. Veatöötlus. Failid. Võrgust lugemine.
:Loengumaterjal: [[Media:itsissejuhatus3o.PPT|itsissejuhatus3o.PPT]], [[Media:itsissejuhatus3o.pdf|itsissejuhatus3o.pdf]].
:Aeg: 24 september.
:Lisaks:
:Esialgsed praktikumimaterjalid: [[Praktikumitöö: twitter]].
:* Eck intro lab: [http://math.hws.edu/TMCM/java/labs/DataRepsLab.html data reps].
:Loengumaterjal: [[Media:Progpohi4_07.PPT|Progpohi4_07.PPT]],   [[Media:Progpohi4_07.pdf|Progpohi4_07.pdf]]
:* Eck lab: [http://math.hws.edu/TMCM/java/labs/xTuringMachineLab.html Turing machines].
:Lugeda: D.Eck 8,11
:* Loe ka: Polsson ning a history of computers (vt viidad allpool)


; 4. Keskajalugu jätkub: seitsmekümnendate lõpp, kaheksakümnendate algus. Mikroprotsessorid ja personaalarvutid.
; 5. Teise praktikumitöö, failide jätk.  
:Loengumaterjal: [[Media:itsissejuhatus4o.PPT|itsissejuhatus4o.PPT]], [[Media:itsissejuhatus4o.pdf|itsissejuhatus4o.pdf]].
:Aeg: 30 september.
:Praktikumimaterjalid: [[Praktikumitöö: twitter]].


; 5. Lähiajalugu: kaheksakümnendad. IBM PC, Macintosh, uued vanad opsüsteemid. Spetsiaalarvutid, workstationid, oluline soft.
; 6. Objektid ja klassid.  
:Loengumaterjal:
:Aeg: 7. oktoober.
:Loengumaterjal, esimene osa: [[Media:itsissejuhatus5o.PPT|itsissejuhatus5o.PPT]], [[Media:itsissejuhatus5o.pdf|itsissejuhatus5o.pdf]].
:Loengumaterjal objektidest: [[Media:Progpohi7_07.PPT|Progpohi7_07.PPT]], [[Media:Progpohi7_07.pdf|Progpohi7_07.pdf]]
:Loengumaterjal, teine osa: [[Media:itsissejuhatus5Ao.PPT|itsissejuhatus5Ao.PPT]], [[Media:itsissejuhatus5Ao.pdf|itsissejuhatus5Ao.pdf]].
:Lugeda: D.Eck 5
:* Lisaks: Apple Macintoshi reklaamfilm:
:** [http:/materjalid/itsissejuhatus/apple_1984.mpeg Väike mpeg variant]
:** [http:/materjalid/itsissejuhatus/apple_1984.mov Suur quicktime variant]


; 6. Kaheksakümnendate lõpp kuni kaasaeg: Kokkuvõtted saagadest.
; 7. Graafika ja kasutajaliidese sissejuhatus.
:Loengumaterjal: [[Media:itsissejuhatus6o.PPT|itsissejuhatus6o.PPT]], [[Media:itsissejuhatus6o.pdf|itsissejuhatus6o.pdf]].
:Aeg: 14 oktoober
:Lisaks:
:Korratakse objektide loengumaterjali põhipunkte,  alustatakse graafika ja kasutajaliidesega.
:* Alustada: [[Media:teejuhtvorgundus_raamat.html |"Teejuht võrgumeediasse"]] toorik.
:Loengumaterjal, millega algust tehakse: [[Media:Progpohi6_06.PPT|Progpohi6_06.PPT]], [[Media:Progpohi6_06.pdf|Progpohi6_06.pdf]]
:* Tutvu: [http:/materjalid/itsissejuhatus/itsissejuhatus_eestiajalugu.ppt J.Penjami lühiülevaade Eestis tehtud ja olnud varastest arvutitest]
:Koodinäited: [[Media:javagraphexamples.zip|javagraphexamples.zip]]
:Lugeda: D.Eck 6 ptk 1-4.


; 7. Arvuti tööpõhimõtted, programmeerimiskeeled.
; 8. Graafika ja kasutajaliides. Materjali ja näidete jätk.  
:Loengumaterjal: [[Media:itsissejuhatus7o.PPT|itsissejuhatus7o.PPT]], [[Media:itsissejuhatus7o.pdf|itsissejuhatus7o.pdf]].
:Aeg: 21 oktoober.
:Lisaks:
:* Veidi tutvuda nende saitidega:
:** http://www.mkdata.dk/click/
:** [http://www.tomshardware.com/ Tom's hardware guide]
:* D.Eck, osad siit: [http://math.hws.edu/TMCM/java/index.html Eck laborid] (siit saad võtta [http://math.hws.edu/TMCM/java/DownloadingAndInfo.html eraldi rakendusena]). NB! Loe ise läbi, proovi ja tee igast osast üks-kaks harjutust:
:** [http://math.hws.edu/TMCM/java/labs/xLogicCircuitsLab1.html Logic circuits]
:** [http://math.hws.edu/TMCM/java/labs/xLogicCircuitsLab2.html Memory circuits]


;8. Progr. keeled jätkuvad. Operatsioonisüsteemid.
; 9. Kolmas praktikumitöö.
:Loengumaterjal: [[Media:itsissejuhatus8o.PPT|itsissejuhatus8o.PPT]], [[Media:itsissejuhatus8o.pdf|itsissejuhatus8o.pdf]].
:Aeg: 28 oktoober.
:Lisaks: Eck laborid jätk: loe ise läbi, proovi ja tee igast osast üks-kaks harjutust:
:Spec: [[Praktikumitöö: aktsiahinnad]]
:* [http://math.hws.edu/TMCM/java/labs/xComputerLab1.html xComputer]
:* [http://math.hws.edu/TMCM/java/labs/xComputerLab2.html xComputer assembly language]
:Soovitavat ja kohustuslikku lugemist:
:* Kohustuslik on esimene 1/4 pikast artiklist [[Media:commandlinebook.html|In the Beginning was the Command Line]]
:* Soovitav, kuid üldse mitte kohustuslik (algajatel raske mõista :-) [http://www.faqs.org/docs/artu/ The Art of Unix Programming]


;9. Tarkvara arhitektuur ja paradigmad.
; 10. Praktikumiabi jätk. Seejärel binaarne otsing ja sorteerimine.
:Loengumaterjal: [[Media:itsissejuhatus9o.PPT|itsissejuhatus9o.PPT]], [[Media:itsissejuhatus9o.pdf|itsissejuhatus9o.pdf]].
:Aeg: 5 november.
:Lisaks: Tutvuda:
:Loengumaterjal: [[Media:Progpohi10.PPT|Progpohi10.PPT]]  
:* [[Media:vabavara_ttriikanalyys.rtf|vabavara kasutamisest riigis]]
:Lugeda: D.Eck ptk 8.4: Searching and Sorting, [http://linux.wku.edu/%7Elamonml/algor/sort/sort.html analüüse ja seletusi].
:* [[Media:Itsissejuhatus_freesoftwaresong.au.snd|Stallmani naljalaul]]
:Proovida: [http://math.hws.edu/TMCM/java/xSortLab/ xsortlab], [http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html sorting demo], [[Media:Sortingdemo.zip|Sortingdemo.zip]]
:* [[Media:itsissejuhatus.au.snd|Linus Linuxit hääldamas]]


;10. Võrgutarkvara paradigma. Interneti baastehnoloogia.
; 11. Otsingualgoritmide algus. Travelling salesman problem.
:Loengumaterjal: [[Media:itsissejuhatus10o.PPT|itsissejuhatus10o.PPT]], [[Media:itsissejuhatus10o.pdf|itsissejuhatus10o.pdf]].
:Aeg: 12 november
:Lisaks: Tutvuda: http://www.w3schools.com/.
:Loengumaterjal: [[Media:Progpohi11.PPT|Progpohi11.PPT]]  
:Lisamaterjal: [[Media:searchadditional2.ppt|searchadditional2.ppt]]  
:Näiteprogramm paari optimeeringuga: [[tsp.java]]


;11. Võrgutarkvara paradigma. Interneti rakenduste tehnoloogia.
:Loengumaterjal: [[Media:itsissejuhatus11o.PPT|itsissejuhatus11o.PPT]], [[Media:itsissejuhatus11o.pdf|itsissejuhatus11o.pdf]].
:Lisaks: Tutvuda lühidalt:
:* Greenspuni [http://philip.greenspun.com/panda/ Panda book]
:* [http://www.apache.org/ Apache]
:* Loengus toodud näiteid: [[Media:Itsissejuhatus_tiny.zip|Tiny www server]], [[Media:Itsissejuhatus_calc.html|kalkulaator]], ning [[Media: Itsissejuhatus_xmcssjscriptnaited.zip|css, javascript, XML ja XSL näited]]
 
;12. Rekursioon. Funktsionaalne ja loogiline programmeerimine.
:Loengumaterjal: [[Media:itsissejuhatus12o.PPT|itsissejuhatus12o.PPT]], [[Media:itsissejuhatus12o.pdf|itsissejuhatus12o.pdf]].
:Lisaks: Vaata ja proovi näiteid modifitseerida:
:* [http://math.hws.edu/TMCM/java/labs/xTurtleLab3.html Lihtsamad rekursiivsed pildid]
:* [http://math.hws.edu/TMCM/java/xTurtle/index.html Rekursiivsed pildid randomiga]
:Huvi korral installeeri ja proovi Prologi: [http://www.swi-prolog.org/ SWI Prolog].
;13. Algoritmid. Keerukus ja lahenduvus.
:Loengumaterjal: [[Media:itsissejuhatus13o.PPT|itsissejuhatus13o.PPT]], [[Media:itsissejuhatus13o.pdf|itsissejuhatus13o.pdf]].
:Lisaks: Huvi korral vaata [http://www.ttu.ee/it/vorgutarkvara/iti0010/Tsp.html TSP programmi Java lähtekoodi]
;14. Tehisintellekt.
:Loengumaterjal: [[Media:itsissejuhatus14o.PPT|itsissejuhatus14o.PPT]], [[Media:itsissejuhatus14o.pdf|itsissejuhatus14o.pdf]].
:Huvi korral loe [[Media:Aifilosoofia_ttmatrix.doc|Matrix, Skynet ja sõda teispoolsusega]], [http://www-formal.stanford.edu/jmc/whatisai/whatisai.html klassiku ülevaadet tehisintellektindusest], [http://ase.tufts.edu/cogstud/pubpage.htm Dennetti artikleid], [http://aima.cs.berkeley.edu/ tuntud õpikut], [http://www.cs.washington.edu/research/jair/home.html ajakirja JAIR].
 
;15. IT äri, IT projektid.
:Loengumaterjal: [[Media:itsissejuhatus15o.PPT|itsissejuhatus15o.PPT]], [[Media:itsissejuhatus15o.pdf|itsissejuhatus15o.pdf]].
:Lisaks: mitmed kohustuslikud artiklid, vt kas powerpointist või sellel lehel allpool, :kohustuslike lugemismaterjalide peatüki allosas.


== Harjutamist eksamiks/arvestuseks ==
; 12. Mõtlemismängud (male, reversi jne) ja neljas praktikum.
:Aeg: 19. november
:Neljanda [[praktikumitöö: reversi]] sissejuhatus.
:Loengumaterjal: [[Media:Progpohi12_06.PPT|Progpohi12_06.PPT]]
:Lisaks:
:* Reversi: [http://en.wikipedia.org/wiki/Reversi wikipedia sissejuhatus] [http://othello.dk/book/index.php/Main_Page reversi oma wiki] ja [http://www.vieka.com/reversi/othello.htm detailsem strateegia-õpetus]
:* Minimax & alpha-beta: [http://en.wikipedia.org/wiki/Minimax minimax wikipedias], [http://en.wikipedia.org/wiki/Alpha-beta_pruning a-b wikipedias],  [http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabeta.html apletiga demo], [http://www.emunix.emich.edu/~evett/AI/AlphaBeta_movie/sld001.htm 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: 26. november
:Neljanda [[praktikumitöö: reversi]] jätk.
 
 
; 14. Listid, stack, queue, puud.
:Aeg: 3. detsember.
:Loengumaterjal: [[Media:Progpohi14_08.PPT|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. Keerukamad puud.
:Aeg: 10 detsember.
:Loengumaterjal:  [[Media:Progpohi15_07.PPT|Progpohi15_07.PPT]],  algus materjalidest [[Media:Progpohithreads.PPT|Progpohithreads.PPT]]
:Loengus tehtud näide puude kohta: [[Treex.java]]
:Loengu Näiteprogramme parserite kohta [[Media:Parse_examples.zip|Parse_examples.zip]]
:Lugeda: D.Eck ptk 9 osa 5, samuti ptk 11 osa 5.
 
 
 
<!--
; 5. Java arendusmetoodika hansapangas, extreme programming ja test-driven arendus
:Aeg: 1. oktoober.
 
 
; 6. Täiendavat teisest praktikumitööst
:Aeg: 10. oktoober.
:Õppejõud tegeleb loengus lahenduse osalise etteprogrammeerimisega.
 
; 7. Objektid ja klassid.
:Aeg: 17. oktoober.
:Loengumaterjal objektidest: [[Media:Progpohi7_07.PPT|Progpohi7_07.PPT]], [[Media:Progpohi7_07.pdf|Progpohi7_07.pdf]]
:Lugeda: D.Eck 5
:Näiteid eelmise aasta Puuseppa loengust: [[Media:Puusepp_java_objektid.zip|Puusepp_java_objektid.zip]]
 
; 8. Graafika ja kasutajaliidese sissejuhatus.
:Aeg: 24 oktoober
:Korratakse objektide loengumaterjali põhipunkte,  alustatakse graafika ja kasutajaliidesega.
:Loengu annab Aivo Anier.
:Loengumaterjal, millega algust tehakse: [[Media:Progpohi6_06.PPT|Progpohi6_06.PPT]],  [[Media:Progpohi6_06.pdf|Progpohi6_06.pdf]] 
:Koodinäited: [[Media:javagraphexamples.zip|javagraphexamples.zip]]
:Lugeda: D.Eck 6 ptk 1-4.
 
; 9. Kolmas praktikumitöö, graafika ja kasutajaliidese jätk.
:Aeg: 31 oktoober
:Jätkatakse graafilise kasutajaliidesega, antakse kolmas praktikumitöö.
:Loengumaterjal: eelmise loengumaterjali [[Media:Progpohi6_06.PPT|Progpohi6_06.PPT]], [[Media:Progpohi6_06.pdf|Progpohi6_06.pdf]]  jätk. Kolmanda praktikumitöö sissejuhatus.
:Koodinäited: [[Media:javagraphexamples2.zip|javagraphexamples2.zip]]
:Lugeda: D.Eck 6 ptk lõpuni, 7 ptk.
 
; 10. Graafika ja kasutajaliides: materjali ja näidete jätk. Kolmanda praktikumi osaline etteprogrammeerimine.
:Aeg: 7. november
 
; 11. Praktikumiabi jätk. Seejärel binaarne otsing ja sorteerimine.
:Aeg: 14 november.
:Loengumaterjal: [[Media:Progpohi10.PPT|Progpohi10.PPT]]
:Lugeda: D.Eck ptk 8.4: Searching and Sorting, [http://linux.wku.edu/%7Elamonml/algor/sort/sort.html analüüse ja seletusi].
:Proovida: [http://math.hws.edu/TMCM/java/xSortLab/ xsortlab], [http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html sorting demo], [[Media:Sortingdemo.zip|Sortingdemo.zip]]
 
; 12. Otsingualgoritmide algus. Travelling salesman problem.
:Aeg: 21 november
:Loengumaterjal: [[Media:Progpohi11.PPT|Progpohi11.PPT]]
:Lisamaterjal: [[Media:searchadditional2.ppt|searchadditional2.ppt]]
:Loengus kirjutatud näiteprogramm paari optimeeringuga: [[tsp.java]]
 
; 13. Mõtlemismängud: male, viis nuppu ritta jne.
:Aeg: 27. november
:Neljanda [[praktikumitöö: reversi]] sissejuhatus.
:Loengumaterjal: [[Media:Progpohi12_06.PPT|Progpohi12_06.PPT]]
:Lisaks:
:* Kalah: http://en.wikipedia.org/wiki/Kalaha.
:* Minimax & alpha-beta: http://sern.ucalgary.ca/courses/CPSC/533/W99/presentations/L2_5B_Lima_Neitz/search.html
:* Minimax & alpha-beta: http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabeta.html
:* Alpha-beta: http://www.emunix.emich.edu/~evett/AI/AlphaBeta_movie/sld001.htm
:* Chinook: http://www.cs.ualberta.ca/~chinook/
:* Hea tasuta raamat (disser) mängude programmeerimisest: http://web.archive.org/web/20040607185428/www.cs.vu.nl/~victor/thesis.html
 
 
 
; 14. Listid, stack, puud
:Aeg:  5. detsember.
: Loengu annab Aivo Anier.
:Loengumaterjal: [[Media:Progpohi13_06.PPT|Progpohi13_06.PPT]]
:Lugeda: D.Eck ptk 11.
 
; 15. Keerukamad puud.
:Aeg: 12 detsember.
:Loengumaterjal:  [[Media:Progpohi15_07.PPT|Progpohi15_07.PPT]],  algus materjalidest [[Media:Progpohithreads.PPT|Progpohithreads.PPT]]
:Loengus (varem) kirjutatud parser: [[parse1.java]]
:Lugeda: D.Eck ptk 9 losad 4 ja 5.
 
; 16. Konsultatsioon.
:Aeg: 17 detsember.
: Konsultatsiooni mõte on tudengitelpoolne küsimuste esitamine eksami kohta. Palun vaadake läbi varasemad näite- eksamid,
: ja mõelge, mis on ebaselge või segane või keeruline ning küsige kohapeal!
: Lisaks konsultatsioonile räägin - kui aega üle jääb - veidi juurde/üle andmestruktuuridest (hash) ja
: threadidest (sissejuhatus eelmises loengus, veidi jätkaks/kordaks).
:Loengumaterjalid: [[Media:Progpohithreads.PPT|Progpohithreads.PPT]]
:Lugeda: D.Eck ptk 8 osa 5.
:Näiteprogrammid:
:* [[Httpserveri näide]]
:* [[ThreadsStartExample näide]]
:* [[PrintThread1 näide]]
 
-->
 
== Tarkvara ja käsiraamatud ==
 
'''Vajalik tarkvara kodus töötamiseks: '''
 
<ul>
<li> Java J2SE JDK (Java 2 standard edition java development kit).<br>
Tõmba SUN-i lehelt http://java.sun.com/javase/downloads/ versioon "JDK 6 update 7".<br>
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.<br>
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 <tt>javac</tt>), siis on ta OK, kui versioon on vähemalt 1.3.1. Vanemaid, kui 1.3.1 versioone ei ole soovitav kasutada.
<ul>
<li> [http://java.sun.com/javase/6/webnotes/install/index.html Praktiline juhatus] versiooni 6 installeerimiseks
</li>
<li> Praktiline kiire juhatus eelmise kasutamiseks:
[http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html windowsi jaoks],
[http://java.sun.com/docs/books/tutorial/getStarted/cupojava/unix.html unixi jaoks]</li>
<li>Linuxil on hea mõte kasutada sinu distro standardset Java-paketti</li>
<!--
<li>[http://ubuntuforums.org/showthread.php?t=201378 Eclipse ja Java 1.5 Ubuntu Linuxi jaoks]</li>
-->
</ul> </li>
<li> Tekstiredaktor SciTE: [http://www.scintilla.org/SciTE.html põhileht],
[http://prdownloads.sourceforge.net/scintilla/gscite171.tgz?download linuxi download] (alternatiivina on distrotes enamasti oma scite package)
[http://prdownloads.sourceforge.net/scintilla/wscite171.zip?download windowsi download],
[http://users.hfx.eastlink.ca/~gisdev/scite-1.70-setup-1.exe mõnusam windowsi download (soovitav!)]. </li>
<li> Alternatiivina Scitele on Windowsil sobiv kasutamiseks ka [http://notepad-plus.sourceforge.net Notepad++]
</ul>
 
''' Tehnilised käsiraamatud: '''
 
* Sun'i tehniliste Java käsiraamatute üldleht: [http://java.sun.com/docs/ leiad siit]
* Sun'i Java teekide ja teegifunktsioonide kataloog:  [http://java.sun.com/j2se/1.5.0/docs/api/ otselink versiooni 1.5 jaoks]
 
== Lisa-lugemismaterjale ==


Tee iseseisvalt vanad eksamid:
'''Lihtsad''':
* Bradley Kjell: [http://chortle.ccsu.edu/CS151/cs151java.html  Computer Science I, using Java]


* [[Media:itsissejuhatus_eksamnaide1.pdf|vana eksam 1]]
'''Keskmise keerukusega''':
* [[Media:itsissejuhatus_eksamnaide2.pdf|vana eksam 2]]
* Sun'i Java tutorial: [http://java.sun.com/docs/books/tutorial/index.html algus on siin]
* [[Media:itsissejuhatus_eksamnaide3.pdf|vana eksam 3]]
* Sun'i kataloog erinevatest [http://developer.java.sun.com/developer/onlineTraining/ õppematerjalidest]
'''Keerukad''' (ära loe, kui kõik muu pole veel liiga-liiga lihtne!):
* Bruce Eckel: [http://www.pythoncriticalmass.com/downloads/TIJ-3rd-edition4.0.zip Thinking in Java] Vt ka http://mindview.net/Books.


== Kohustuslikud lugemismaterjalid ==
== Harjutamist ja taustinfot eksamiks ==


Järgnevate materjalide läbilugemine on kursuse läbimisel kohustuslik.


* Ajalugu algus - 1981 (piisab kiirest läbivaatamisest, vajalik materjal loengutes): [http://www.maxmon.com/history.htm Bebop BYTES Back]
Kuidas on tudengitel selles aines varem läinud?
* Ajalugu 1945-1990 (piisab kiirest läbivaatamisest, vajalik materjal loengutes): [http://www.computerhistory.org/timeline/ The Computer Museum].
Vanad, 2005 sügissemestri tulemused [[Media:ITI0010_eksam2_2005_pub.htm | leiad siit]]).
* [http://cs.ttu.ee/kursused/itv0010/elcomphist/index.htm Ajalugu 1947-1999] (see ei ole otseselt kohustuslik): autor Ken Polsson.
* Vana jutt infoühiskonnast: T.Tammet 1995-1996: [[Media:teejuhtvorgundus_raamat.html |"Teejuht võrgumeediasse"]] toorik.
* Elektroonilisest demokraatiast ja riigist:
** T.Tammet, 2001: [[Media:Ttevalimisteanalyys24oct.doc|E-valimiste analüüs]]
* Loogika ainest ja ajaloost: T.Tammet: [[Media:Loogikasissejuhatus_raamat.html|Loogika aine ja ajalugu]]: sissejuhatus T.Tamme, T.Tammeti ja R.Prangi loogikaõpikule "Mõtlemisest tõestamiseni".
* Opsüsteemidest laiemas kontekstis: Kohustuslik on algusosa (esimene 1/4) pikast artiklist [[Media:Commandlinebook.html| In the Beginning was the Command Line]]
* Kohustuslikud artiklid IT äri ja juhtimise teemal on järgmised. Neid "ära õppida" vms pole vaja, piisab lihtsast mõnusast kiirest läbilugemisest:
** Joel Spolsky: Esileht: http://www.joelonsoftware.com/
** Joel Spolsky: Strateegia: http://www.joelonsoftware.com/articles/fog0000000074.html
** Joel Spolsky: Funktsionaalsuse spec:Painless Functional Specifications (1 osa): http://www.joelonsoftware.com/articles/fog0000000036.html
** Joel Spolsky: IT firma töökorraldus: 12 steps: http://www.joelonsoftware.com/articles/fog0000000043.html
** Joel Spolsky: Projekti planeerimine: Painless Software Schedules: http://www.joelonsoftware.com/articles/fog0000000245.html
** Greenspun: Lihtsalt loe sisukorda, tervet raamatut pole vaja!: http://philip.greenspun.com/panda/
** Greenspun: Future peatükk: http://philip.greenspun.com/panda/future
** Greenspun: Nali: http://philip.greenspun.com/careers/


== Väga kasulikud lugemismaterjalid: loe neid! ==
Näite-eksamiülesanded 2004 aastast leiad siit:
* [http://cs.ttu.ee/kursused/iti0010/progpohi7jan04a.doc vana eksam 1]
* [http://cs.ttu.ee/kursused/iti0010/progpohi7jan04b.doc vana eksam 2]


* Loe iga päev: http://www.news.com
Peaasi on teha ise ja korralikult praktikumiülesandeid: see
* Loe iga päev: http://www.slashdot.org
ongi parim harjutus eksamiks.  
* Software management, ca kord nädalas materjale: http://www.joelonsoftware.com
* [http://catb.org/~esr/jargon Jargon leksikon ja the New Hacker's Dictionary].
* [http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ The cathedral and Bazaar]
* [http://www.gnu.org/philosophy/ Gnu manifestid]
* [http://math.hws.edu/TMCM/java/index.html David Eck: Labs and Applets for "The Most Complex Machine"].


== Kui kõik tundub liiga lihtne, siis: ==


* Loe läbi Steven Raymondi raamat (NB! algajatel raske õieti mõista :-) [http://www.faqs.org/docs/artu/ The Art of Unix Programming]
* Loe läbi väga lõbus ja hariv raamat: Philip Greenspuni [http://philip.greenspun.com/panda/ Guide to Web Publishing]. Kui meeldis, uuri järgi, mida Greenspun veel teeb (sh loe teisi raamatuid ka) ja [http://www.waxy.org/random/arsdigita/ kuidas sündis ja suri tema kuulus firma].
* Vaata, mis võrgust (loodetavasti) edaspidi saab: [http://www.w3.org/2001/sw/Activity Semantic Web]
* Loe hoolega läbi (ei ole üldse kohustuslik ja algajatele mittesoovitav) ja tee harjutusi ka: [http:/materjalid/csapp.beta.11.16.pdf Computer Systems: a programmers perspective] toorikvariant.
* Proovi õppejõu tehisintellektisüsteem [http://www.ttu.ee/it/gandalf/ Gandalf] installeerida (Unix või Windows+[http://www.cygwin.com/ cygwin]) ja mängi sellega. Proovi ka [http://www-unix.mcs.anl.gov/AR/otter/ Otterit] (lihtsam, aga nõrgem klassikaline süsteem). Kuidas, loe [http://www-unix.mcs.anl.gov/AR/otter/ siit] ja [http://www.cs.miami.edu/%7Etptp/OverviewOfATP.html siit] ja [http://www-2.cs.cmu.edu/%7Efp/courses/atp/handouts.html siit].
* Tee omal käel ette läbi terve [http://cs.ttu.ee/kursused/iti0010/ programmeerimise põhikursus] (peaasi: tee kõik harjutustööd: programmeerimise õppimiseks ainus viis on palju programmeerida :-)
* [http://webster.cs.ucr.edu/ Õpi assembleris programmeerima] (üpris ebapraktiline oskus, aga hästi hariv :-)


[[Category:Kursus]]
[[Category:Kursus]]

Viimane redaktsioon: 14. juuni 2009, kell 18:40

Ainekood: ITI0010
Link: http://www.lambda.ee/index/Programmeerimise_põhikursus ehk http://www.lambda.ee/index/iti0010
Võid vaadata ka iti0010 2007 arhiivi.

Lektor: Tanel Tammet blog
Kontakt: tammet@staff.ttu.ee, 6203457, TTÜ AK223

Klee: Higways and byways
Klee: Higways and byways


Kevadise järeleksami tulemused

Inits	Matrikkel	Praxsum	Eksam	Kokku	Hinne
JA	73864	        24	48	72	3
AA	73865	        29	43	72	3
JK	73724	        19	38	57	1
JK	75342	        21	16	37	0
ON	40550	        20	55	75	3
VV	55161	        21	24	45	0

Kursuse tulemused

Kevadise eelnädala järeleksami tulemused vaata siit

On nii ÕIS-s kui (enne järeleksameid) siin: iti0010 2008 sügissemestri tulemused

Probleemide/võimalike vigade puhul palun võtta ühendust: tammet@staff.ttu.ee

Esimene järeleksam toimub kevadsemestri eelnädalal, 30 jaanuari (reede) hommikul kell 9.00 ruumis VI-201 (kuues korpus).

Teine järeleksam toimub kevadsemestri lõpupoole.

Eksam

Talvisel sessil oli võimalik eksamit teha kahel erineval päeval (teine aeg ei ole järeleksam, st mõlemil päeval eksamit teha ei või):

  • 8. jaanuar 2009 (neljapäev) kell 10.00 ruumis I-202 (aula taga)
  • 15. jaanuar 2008 (neljapäev) kell 10.00 ruumis I-202 (aula taga)

NB! Kaasa vaja võtta pildiga dokument.

Järeleksamid toimuvad kevadsemestri eelnädalal (26.- 31.jaanuar), kevadsemestri lõpupoole ja sügissemestri eelnädalal. Järeleksamite ajad ja kohad teatatakse hiljem.

Aeg, koht

Loengud: Igal kolmapäeval kell 8.00-9.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-213. Rühmadel on erinevad ajad ja juhendajad.

Praktikumiajad:

  • Esmaspäev 16-17.30 IT 213E: IAPB31, IAPB32. Juhendaja Madis Puju.
  • Teisipäev 16-17.30 IT 213A: IABB31, IABB32, IANM11. Juhendaja Andri Rebane.
  • Neljapäev 16-17.30: IT 213C: YABM11, YASM11, IAPB33, IAPB34. Juhendaja Madis Puju.
  • Reede 14-15.30: IT 213A: IABB37, IAPB37. Juhendaja Andri Rebane.

(kontrolli oma rühma üldisest tunniplaanist, et siin antud aeg on ikka õige):

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.

Käsureaga mugavamaks hakkamasaamiseks AK arvutiklassides loe neid soovitusi: AK arvutiklasside XP java käsurida.

  1. Esimene ülesanne on täpselt sama, kui eelmine aasta: tikumängu ülesanne, ainult tekstiliides. Tähtaeg: septembri lõpp. venekeelne variant tikumängu ülesandest
  2. Teine ülesanne. Praktikumitöö: twitter Tähtaeg: oktoobri lõpp.
  3. Kolmas ülesanne. Praktikumitöö: aktsiahinnad Tähtaeg: reede, 28 november (soovitus teha varem: jääb rohkem aega neljanda jaoks!).
  4. Neljas ülesanne. Praktikumitöö: reversi Tähtaeg: 21 detsember

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 eksamil 10 trahvipunkti (eksami maksimumpunktid on 100)
  • Iga hilinenud ülesanne annab 5 trahvipunkti.
  • Pärast 21. detsembrit ei aktsepteerita enam ühtegi ülesannet.
  • Iga ülesanne tuleb programmeerida iseseisvalt ja näidata 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 2007 sügisel tehtud praktikumitööde kohta: kui oled 2007 sügissemestril saanud punkte, siis saad neid 2008 sügissemestril kasutada ainult juhul, kui said 2007 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 50-59,60-69,70-79,80-89,90 ja enam. 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: 3 september.
Loengumaterjal: Progpohi1_07.ppt, Progpohi1_07.pdf
Lugeda: D.Eck ptk 1
Tutvuda:
2. Muutujad, lihtandmed, juhtimiskonstruktsioonid ja tsüklid. Laboratoorne töö 1.
Aeg: 10 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.
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: Praktikumitöö: aktsiahinnad
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, analüüse ja seletusi.
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öö: reversi sissejuhatus.
Loengumaterjal: Progpohi12_06.PPT
Lisaks:


13. Neljanda praktikumi jätk.
Aeg: 26. november
Neljanda praktikumitöö: reversi jätk.


14. Listid, stack, queue, puud.
Aeg: 3. 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. Keerukamad puud.
Aeg: 10 detsember.
Loengumaterjal: Progpohi15_07.PPT, algus materjalidest 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.
  • 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:

Lisa-lugemismaterjale

Lihtsad:

Keskmise keerukusega:

Keerukad (ära loe, kui kõik muu pole veel liiga-liiga lihtne!):


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.