IFI6074.DT Programmeerimise alused
Hindamisviis: eksam
Kursuse maht: 4.0 EAP
Õppejõud: Inga Petuhhov
Toimumisaeg: sügissemester 2023
Kursuseprogrammid on ÕISis.
Üldine sissejuhatus ja soovitused
- See kursus on programmeerimise ja algoritmimise algõpetus. Seetõttu ei tutvu me paljude
spetsiifiliste Python-keele võimalustega, vaid pigem keele tuumaga, millel
on kõige rohkem ühisjooni teiste programmeerimiskeeltega.
Omandatud teadmised peaksid olema abiks teiste programmeerimisega seotud
kursuste läbimisel. Samuti ei
kasuta me mitmeid programmeerija elu lihtsustavaid funktsioone, sest
üks oluline kursuse eesmärk on õppida
algoritmiliselt mõtlema ja mõista
tüüpiliste programmeerimiskeele käskude ja mõistete tähendust ja
toimimist.
- Väga oluline on
põhimõistete omandamine. Nende abil pead ka edaspidi suhtlema.
- Lõpeta enne järgmist tundi pooleli jäänud ja
lisaks antud ülesanded. Nad on olemas iga nädala praktikumi kirjelduses. Kui
jääd hätta, küsi abi. Ka minult. Selleks on
vastuvõtuaeg ning võimalus täiendavaid konsultatsiooniaegu kokku leppida.
- Kui Sa ei saa tundi tulla, siis pead samal nädalal endale materjali selgeks tegema. Järgmises tunnis
on ka eelmise tunni materjali vaja teada. Võid tulla ka teise rühma
praktikumi, kui oma rühma tund vahele jääb ja muu tunniplaan lubab.
- Arvesta sellega, et programmeerimist õppides kasvab üks
teadmine teise otsa ja kui kuhugi auk sisse jääb, kipub ta iga
nädalaga kasvama. Mida kiiremini augu kinni lapid, seda kergem on:
lahenda ülesandeid, küsi abi minult ja rühmakaaslastelt.
- Kui uurid näiteprogramme või mõne kursusekaaslase
töid, siis on sellest kasu ainult siis, kui enda jaoks programmi
iga lause ja ka lause osa tähenduse selgeks mõtled:
mida see lause täpselt teeb, miks ta programmis selle koha peal on?
- Enne esimese koodirea kirjutamist saa aru ülesande püstitusest. Seejärel mõtle läbi sammud, kuidas tulemuseni
jõuda, st koosta algoritm. Kõige parem, kui selle ka üles joonistad.
Ning alles siis kui lahenduse põhiidee selge, alusta programmi kirjutamist.
Väga oluline on ise lahendusideest aru saada, sest muidu ei ole
võimalik arvutit "õpetada" ülesannet lahendama.
- Ehkki pea pole prügikast, proovi siiski olulisemad keele laused
meelde jätta, sest kui iga lause õigekirja internetist ja materjalidest taga otsida, siis
muutub programmi kirjutamine väga vaevaliseks ja piinarikkaks.
- Ülesannete lahendamiseks ära mine esimese asjana internetti
valmis lahendusi otsima. Reeglina ei saa sa sel viisil targemaks. Katsu tulemus saavutada
oma peaga mõeldes. Ehk siis oluline ei ole niivõrd
lõpptulemus, kui selleni jõudmise
protsess. Ülesanded on valitud selliselt, et nad aitaksid
mõnda keele elementi või algoritmilist nõksu mõista ja enne lahendama asumist selgitan
olulise tahvlil lahti. Kui siiski alustada valmislahenduse vaatamisest, siis peale selle katsetamist ja mõistmist kustuta kopeeritud lahendus ja kirjuta see oma peaga uuesti.
- Kuula ja mõtle tunnis kaasa ja saa üle käe ulatuses
olevatest internetiahvatlustest. Ma ei taha näha tunni ajal
arvutiekraanil Facebooke, Twittereid jms teemaga mitteseotud asju. Ka mobiili pidev näppimine reeglina ei soodusta mõttetegevust. Kui tahad tunni ajal
tegeleda millegi muuga, siis tee seda palun väljaspool klassiruumi, et mitte
eksitada oma kursusekaaslasi.
Eksam
Eksam on praktiline, tuleb lahendada ülesanne, arvestades kehtestatud nõudeid ja piiranguid.
Eksamitele tuleb registreeruda ÕISis.
Põhieksamite ajad:
20.12.2023 kell 10.00 - 13.00 A406
22.12.2023 kell 10.00 - 13.00 A406
8.01.2024 kell 10.00 - 13.00 A406
Järeleksam:
17.01.2024 kell 10.00 - 13.00 A406
Detsembrikuu eksamite kommentaarid.
Jaanuarikuu eksami kommentaarid.
Järeleksami kommentaarid.
Hinded leiad ÕISist.
Kui soovid midagi üle küsida, täpsustada, siis kirjuta ja küsi.
Test
Nädalal, mis algab 4. detsembriga, on kursuseprogrammi kohaselt test. Testi eesmärk on kontrollida peamiselt mõistest aru saamist. Test moodustab osa lõpphindest ning selle positiivne sooritamine (>= 50%) on eelduseks eksamile pääsemisele.
NB! Test toimub teises klassiruumis!
4.12.2023 kell 12.15 A402
5.12.2023 kell 10.15 T223
6.12.2023 kell 10.00 T223
Testi tulemused.
Testi järeltöö toimub 19.12.2023 kell 14.15 ruunis S236.
Palun kõigil, kes 19.12.2023 soovivad testi järgi teha, registreeruda ÕISis vahekontrollide all. Testi peavad uuesti tegema need, kelle tulemus on alla 50%. Palun registreeruda nii neil, kes testi ei teinud kui ka neil, kes piisavalt punkte ei saanud.
Järeltesti tulemused.
Kontrolltöö
Semestri vältel toimub kaks kontrolltööd, mille
eesmärgiks on anda ja saada tagasisidet senisele edasijõudmusele.
Sisuks on ülesannete lahendamine.
Kontrolltööd ei mõjuta lõpphinnet ja seega puuduvad järeltööd. Kuid loomulikult
võib lahendamiseks olnud ülesanded muul ajal ära
lahendada ja tagasiside saamiseks mulle ettenäidata.
Esimese kontrolltöö kommentaarid.
Kui töö esitasid, aga kommentaari ei ole, siis palun anna mulle e-mailile märku.
Teise kontrolltöö kommentaarid.
Kui töö esitasid, aga kommentaari ei ole, siis palun anna mulle e-mailile märku.
Konsultatsioon
Kolmapäeval, 18.10.23 kell 16.00 toimub konsultatsioon (ruum M217, lisaks käivitan Meeti), kus saab arutada nii kontrolltöö ülesannete üle kui ka üldisemalt küsida programmeerimise kohta. Täpsemad teemad lähtuvad teie küsimustest. Soojalt soovitav neile, kes kontrolltöö ajal raskusi kogesid. Saadan Meeti lingi läbi ÕISi.
Iseseisev töö
Iseseisev töö on see õppeainega seotud tegevus, mida teed väljaspool kontakttunde. Reeglitest lähtudes tuleb iseseisvale tööle kulutada keskmiselt sama palju aega kui on kontakttunde ehk ca 4 tundi nädalas. Antud kursuses on kõige olulisemaks tunnis pooleli jäänud ülesannete lõpuni lahendamine. Palun tee seda järjekindlalt igal nädalal!
Siis saad järgmisel tunnil midagi üle küsida. Samuti tule ja küsi tunnivälisel ajal.
Lisaks tuleb mõistete ja muu kinnistamiseks lugeda teoreetilisi materjale, peamiselt raamatut "Think Python" ja Tartu Ülikooli materjale, millede sobilikele peatükkidele praktikumide tabelis ka viidatakse.
Praktikumide materjalid
Ehkki kursus ei ole keele, vaid programmeerimise ja algoritmimise õppimiseks, tuleb oma programmeerimiskatsetuste jaoks siiski mingit programmeerimiskeelt kasutada. Meil on selleks Python 3.x.
Kuupäevad |
Teemad |
Materjalid ja lugemine |
1. nädal
4.09. - 8.09.23
|
Sissejuhatus. Üldine tutvustus.
Programmeerimine. Algoritm..
Muutuja. Aritmeetikaavaldis. Omistuslause.
Python. Töökeskkond Thonny. Sisend, väljund.
|
Tunni kirjeldus
Loe: Sissejuhatus
Pythonisse
Pythoni sisend ja
väljund
Aritmeetika-, loogika- ja
stringavaldised
Muutujad ja omistamine
Sissejuhatus (UT õpik)
Avaldised ja
lihtlaused (UT õpik)
Algoritmi
mõistest (UT õpik)
|
2. nädal
11.09. - 15.09.23
|
Vead programmis. Mõtteid vigade otsimisest
Lahendame ülesandeid, otsime vigu.
|
Tunni kirjeldus
Valemid inimese analüüsiks
Loe: 1.
ptk Sissejuhatus ja 2.
ptk Variables, expressions and statements (Think Python)
Otsi üles vead järgmistest programmikestest
Kirjuta üles, milles viga seisnes ja kuidas selle parandasid.
Infot print() lauses väljatrüki vormindamise kohta.
|
3. nädal
18.09. - 22.09.23
|
Tingimuslause põhjalikumalt.
Loogikatehted
Lahendame ülesandeid.
Positsioonilised arvusüsteemid:
Arvusüsteemidest
|
Tunni kirjeldus
rasvad.gif
Loe:
Tingimuslaused
5.
ptk Conditionals and recursion, v.a 5.8-5.10 (Think Python)
Valikulause
(loe peatüki algust) (UT õpik)
|
4. nädal
25.09. - 29.09.23
|
Tsüklid. Loendamine. Summeerimine.
Andmed arvuti mälus.
Arvusüsteemide
materjal
|
Tunni kirjeldus
Loe:
7.
ptk Iteration (Think Python)
Tsüklid
(loe alates Korduslause e while) (UT õpik)
Ujukomaarvudest
|
5. nädal
2.10. - 6.10.23
|
For-tsükkel. Lahendame ülesandeid.
Kontrolltöö.
|
Tunni kirjeldus
Kontrolltöö ülesanded
|
6. nädal
9.10. - 13.10.23
|
Testimine: materjal.
Stringid.
Stringid, listid ja
ennikud
|
Tunni kirjeldus
Stringimeetodid standardteegis
Isikukoodi kirjeldus
Loe silumisest Think Python raamatu
lisast.
8.
ptk Strings (Think Python)
|
7. nädal
16.10. - 20.10.23
|
Stringid ja listid (üldisemalt massiivid).
Stringid, listid ja
ennikud
|
Tunni kirjeldus
Loe: 10.
ptk Lists (Think Python)
Järjendid
(listid, samas ka for-tsüklist) (UT õpik)
|
8. nädal
30.10. - 3.11.23
|
Listid: ülesannete lahendamine.
|
Tunni kirjeldus
|
9. nädal
6.11. - 10.11.23
|
Tekstifailid (lugemine ja kirjutamine).
Tekstifailide kasutamine
|
Tunni kirjeldus
Keskmised skoorid: ülesanne ja testid
Palindroomi testid
Kolmas pikkus testid
Loe: 14. ptk Files
ja 9.1
Reading word lists (Think Python)
Tekstifailid (UT õpik)
|
10. nädal
13.11. - 17.11.23
|
Funktsioonid - loomine ja teooria.
Funktsioonide loomine
Materjal
|
Tunni kirjeldus
eesti1.txt
inglise1.txt
saksa1.txt
Loe ka: 3. ptk
Functions (Think Python) ja ptk 6 Fruitful
functions (Think Python)
Funktsioonid
(UT õpik)
ptk 11. Dictionary (Think Python)
|
11. nädal
20.11. - 24.11.23
|
Kontrolltöö (faili lugemine - ühel real kaks väärtust, listid, summa,
loendamine, keskmine, suurim, vähim)
|
Tunni kirjeldus
KT ülesanded ja andmefail
Palun saada töö minu e-mailile!
|
12. nädal
27.11. - 1.12.23
|
Mitmemõõtmeline andmestik.
|
Tunni kirjeldus
|
13. nädal
4.12. - 8.12.23
|
Test. Võimalus kasutada mittedigitaalseid materjale.
Mõisted, koodi mõistmine, vigade otsimine, arvusüsteemide
teisendamine. Arvutit ei kasutata, koodi ei kirjutata.
|
|
14. nädal
11.12. - 15.12.23
|
Konsultatsioon. Harjutame eksamiks.
|
Tunni kirjeldus
|
Programmide koodinäited
Algoritmide vooskeemid. NB! Laiendiga .fprg failid on Flowgorithmi omad, need tuleb alla laadida ning vastavas programmis avada.
Praktikumide ülesanded koos (ja mõned
andmefailid)
Praktikumiülesannete lahendusi.
Täiendatud:
Algoritmimisest, programmeerimisest ja Pythonist - eestikeelset
materjali
Tartu Ülikoolis väljatöötatud programmeerimise aluste
õpik: progeopik.cs.ut.ee
Ahto Truu koostatud Tartu Ülikooli Teaduskooli materjalid
"Programmeerimise
alused"
Järgnevatele eestikeelsetele Pythoni lühimaterjalidele kehtib Creative Commons
Attribution-Share Alike 3.0 litsents.
Sissejuhatus Pythonisse
Python-programmi minimeeritud stiilijuhis.
Python'i sisend ja
väljund
Aritmeetika-, loogika- ja
stringavaldised
Muutujad ja omistamine
Tingimuslaused
Vead ja erindid
Tsüklid
Stringid, listid ja ennikud
Funktsioonid
Tekstifailide kasutamine
Sõnastik
Materjale Pythonist võõras keeles
Põhiõpik: Think Python. How to Think Like a Computer Scientist
(autor Allen B. Downey, näited Python 3-s) on aadressil http://greenteapress.com/thinkpython2/thinkpython2.pdf
Õpikuks on raamat sobiv mitmel põhjusel:
- Raamat räägib olulistest algtõdedest,
mõistetest ja põhimõtetest.
- Ta teeb seda lihtsalt ja meeldivalt ning sisaldab arvukalt näiteid.
- Raamat on üsna lihtsas inglise keeles ja peaks sobima ka
inimesele, kes ei ole veel väga kogenud IT-alast teksti lugema
Programmikoodi vormindamiseks võib tutvuda dokumendiga Style Guide for Python
Code ja Google Python Style Guide. Nendest lähtumine ei ole kohustuslik. Nagu ka viidatud dokumendis
kirjas - kõige olulisem on terviklikkus ja järjepidevus.
Viiteid Pythoni spetsifikatsoonile
The Python
Language Reference
The Python Tutorial
Pythoni
sisefunktsioonid (Built-in Functions)
The
Python Standard Library
Docstring Conventions
Pythoni
grammatika
Pythoni tutorialid
Materjale Pythoni-juttudele lisaks
Andmete esitamine arvutis: bit, bait, sõna.
Numbriliste andmete esitamine. Positsioonilised arvusüsteemid (kahend-,
kaheksand- ja kuueteistkümnendsüsteem). Tekstiliste andmete digitaalne
esitamine. Peamised andmetüübid. Materjal
Veidi juttu sellest, kuidas tekivad vead
ujukomaarvudega
Alamprogramm kui protseduurse programmeerimise alus.
Protseduur. Funktsioon. Moodulid. Materjal
Testimine.
Materjal
Programmeerimiskeelte süntaks ja semantika.
Backus-Nauri normaalkuju (BNF). Süntaksi diagramm. Materjal
Ülesanded veebis
harjutamiseks ja tagasiside saamiseks. Ainus häda on see, et ta
tugineb Python 2-le ja kood tuleb kirjutada funktsioonidena.
Tarkvara
Programmeerimiseks kasutame Pythonit, mille viimane püsiv versioon 2023 a. augusti lõpus on 3.11.5. Tegelikult päris viimast versiooni vaja ei ole, kuid 3.* oleks hea. Python'it saab kasutada vastavalt avatud
lähtekoodiga tarkvara litsentsile (open source license).
Pythoni ametlik veebileht on
www.python.org
Allalaadimislehelt http://www.python.org/download/ leiad interpretaatori oma maitsele (ja arvutile) sobiva platvormi/operatsioonisüsteemi jaoks. Esindatud on Windows, Linux/Unix, MacOS jne. Samuti dokumentatsiooni jms.
Automaatselt tuleb kaasa ka töökeskkond IDLE.
Eelistatult kasutame klassis töökeskkonda Thonny, mis on loodud Tartu Ülikoolis õppimis-õpetamiseesmärgil ja omab Pythoni IDLE-ga võrreldes huvitavaid lisavõimalusi.
Thonny saad allalaadida siit: https://thonny.org
Vooskeemide ehk plokk-skeemide (Flowchart) joonistamiseks kasutame programmi Flowgorithm.