Programmeerimise algkursus: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
62. rida: 62. rida:


Käesoleva lehe lõpuosas on antud ka täiendavaid lugemismaterjale.
Käesoleva lehe lõpuosas on antud ka täiendavaid lugemismaterjale.
== Hindamine ==
Hinde aluseks on punktid erinevatest ülesannetest:
* Praktikumitööd: 30%
* Kontrolltööd: 20% (ei ole kohustuslik, kui teed piisavalt hästi tasemetöö (täpsem info esimeste nädalate jooksul))
* Eksam: 50%
* Robocode tankiturniir: vastavalt tulemustele.


== Praktikumiülesanded ja tähtajad ==
== Praktikumiülesanded ja tähtajad ==
89. rida: 98. rida:
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.
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.
; 1. Sissejuhatus programmeerimisse, kursuse ülevaade.
:Aeg: 5 september.
:Aeg: 1 september.
:Loengumaterjal:  [[Media:Progpohi1_07.ppt|Progpohi1_07.ppt]], [[Media:Progpohi1_07.pdf|Progpohi1_07.pdf]]  
:Loengumaterjal:  [[Media:Progpohi1_07.ppt|Progpohi1_07.ppt]], [[Media:Progpohi1_07.pdf|Progpohi1_07.pdf]]  
:Lugeda: D.Eck ptk 1
:Lugeda: D.Eck ptk 1
:Tutvuda:
<!-- :Lugeda: [http://norvig.com/21-days.html Peter Norvig: Teach yourself programming in ten years] -->
:* [http://www.wikipedia.org/wiki/Comparison_of_Java_to_Cplusplus Java ja C++ keeltena]
:Lugeda: [http://www.paulgraham.com/hp.html Paul Graham: Hackers and Painters]
:* [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]
 
; 2. Muutujad, lihtandmed, juhtimiskonstruktsioonid ja tsüklid. Laboratoorne töö 1.
:Aeg: 12 september.
: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]
 
; 3. Funktsioonid, klassid. Kompleksandmed: eeskätt stringid ja massiivid.
:Aeg: 19 september.
:Loengumaterjal: [[Media:Progpohi3_07.ppt|Progpohi3_07.ppt]], [[Media:Progpohi3_07.pdf|Progpohi3_07.pdf]]
:Lugeda: D.Eck ptk 4, 5 algus
 
; 4. Sissejuhatus teise praktikumitöösse. Veatöötlus. Failid.
:Aeg: 26 september.
:Praktikumimaterjalid: [[Praktikumitöö: Raamatute hinnavaatlus]].
:Loengumaterjal: [[Media:Progpohi4_07.PPT|Progpohi4_07.PPT]],  [[Media:Progpohi4_07.pdf|Progpohi4_07.pdf]]
:Lugeda: D.Eck 7,8
 
; 5. Java arendusmetoodika hansapangas, extreme programming ja test-driven arendus
:Aeg: 3. oktoober.
:Loengu annavad Marek Kusmin ja Erik Jõgi Hansapanga arendusmeeskonnast.
:T.Tammet on [http://www.rto.nato.int/panel.asp?panel=IST NATO RTO IST] koosolekul
 
; 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 praktikumi (Kalahi programm) 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]]
:Loengus (varem) kirjutatud parser: [[parse1.java]]
:Lugeda: D.Eck ptk 9 losad 4 ja 5.


; 16. Threadid ja konsultatsioon.
:Aeg: 19 detsember.
: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 ==
== Tarkvara ja käsiraamatud ==

Redaktsioon: 1. september 2008, kell 13:27

Ainekood: I200
Link: http://www.lambda.ee/index/Programmeerimise_algkursus ehk http://www.lambda.ee/index/I200
Võid vaadata ka iti0010 2006 arhiivi.

Lektor: Tanel Tammet blog
Kontakt: tammet@staff.ttu.ee, 6203457, TTÜ AK223
Praktikum ja harjutused: Antti Andreimann (antti.andreimann@itcollege.ee), Margus Ernits (mernits@itcollege.ee)

Klee: twittering machine
Klee: twittering machine


Aeg, koht

Loengud: Igal esmaspäeval kell 12.00-13.30, ruumis 314
Semester: sügis
Tulemus: kirjalik eksam, mille eelduseks ja üheks punktiosaks on praktikumiülesanded ja kontrolltööd.


Praktikum: kord nädalas a 2*45 minutit. Rühmadel on erinevad ajad ja juhendajad.

Praktikumiajad:

  • Kolmapäev 8.15-9.45: paaritu nädal 11, paaris nädal 12
  • Neljapäev 12.00-13.30: paaritu nädal 13, paaris nädal 14
  • Reede 10.00-11.30: 13 ja 14
  • Reede 12.00-13.30: 11 ja 12


Kursuse eesmärk

Õpetada programmeerimise aluseid ja tehnoloogiat üldiselt, eeldamata varasemat kokkupuutumist programmeerimisega. Programmeerimiskeelena kasutatakse Javat. Rõhk on arusaamisel ning praktiliste kogemuste ja oskuste omandamisel: iseseisev töö praktikumis on olulisem, kui õpiku lugemine. Märgatava osa loenguaega kulutab lektor kohapeal ette-programmeerimiseks.

Õ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 keerulisemad osad õpikust. 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.

Hindamine

Hinde aluseks on punktid erinevatest ülesannetest:

  • Praktikumitööd: 30%
  • Kontrolltööd: 20% (ei ole kohustuslik, kui teed piisavalt hästi tasemetöö (täpsem info esimeste nädalate jooksul))
  • Eksam: 50%
  • Robocode tankiturniir: vastavalt tulemustele.

Praktikumiülesanded ja tähtajad

Ilmuvad siia Antti Andreimanni ja Margus Ernitsa poolt.

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 arvutiklassides loe neid soovitusi: AK arvutiklasside XP java käsurida.

Tähelepanek: 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

Praktikumi/harjutusülesanded jagunevad kahte gruppi:

  • Väikesed üleni iseseisvalt kirjutatavad programmid. Kõigile kohustuslik.
  • Robocode tankilahing: kursuse käigus selgitatakse parimad turniiril. Paremad saavad suure hulga eksami-lisapunkte.

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 programmeerimisse, kursuse ülevaade.
Aeg: 1 september.
Loengumaterjal: Progpohi1_07.ppt, Progpohi1_07.pdf
Lugeda: D.Eck ptk 1
Lugeda: Paul Graham: Hackers and Painters


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".
    (või hilisem) 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!).

Tehnilised käsiraamatud:

Lisa-lugemismaterjale

Lihtsad:

Keskmise keerukusega:

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