Tarkvaratehnoloogiad: erinevus redaktsioonide vahel
| 82. rida: | 82. rida: | ||
Kui ülesanne osutub lihtsaks ja jõuate kiiresti valmis, siis on soovitav ehitada andmestiku pealt mõni mõttekas graafik, mida samuti kuvate veebis. Kui ülesanne osutub raskeks, siis realiseerige eeskätt lihtsad asjad: oluliselt parem on töötav lihtne asi, kui mittetöötav keeruline kava. | Kui ülesanne osutub lihtsaks ja jõuate kiiresti valmis, siis on soovitav ehitada andmestiku pealt mõni mõttekas graafik, mida samuti kuvate veebis. Kui ülesanne osutub raskeks, siis realiseerige eeskätt lihtsad asjad: oluliselt parem on töötav lihtne asi, kui mittetöötav keeruline kava. | ||
Väga soovitavalt tuleks tulemus panna üles avalikku veebiserverisse (soovitus: [http://digitalocean.com digitalocean]) ja kood avalikku koodihoidlasse (soovitus: [http://github.com github]). | Väga soovitavalt tuleks tulemus panna üles avalikku veebiserverisse (soovitus: [http://digitalocean.com digitalocean]) ja kood avalikku koodihoidlasse (soovitus: [http://github.com github]). Alternatiiv on panna tulemus dijkstra serverisse Taltechis. | ||
Github on tasuta, digitalocean annab alustajatele ca 100 USD krediiti ja lisaks on olemas Github student pack, mis sisaldab ca 50 USD digitaloceani krediiti. Rangelt kohustuslik avaliku veebiserveri ja githubi kasutamine ei ole: väiksema arvu punkte saab praktikumist ka siis, kui realiseerid kõik lihtsalt oma arvutis ja ei pane kuhugi üles. | Github on tasuta, digitalocean annab alustajatele ca 100 USD krediiti ja lisaks on olemas Github student pack, mis sisaldab ca 50 USD digitaloceani krediiti. Rangelt kohustuslik avaliku veebiserveri ja githubi kasutamine ei ole: väiksema arvu punkte saab praktikumist ka siis, kui realiseerid kõik lihtsalt oma arvutis ja ei pane kuhugi üles. | ||
=== Praktikumi töökorraldus === | |||
Ülesannet võib teha üksi või kahekesi. | |||
Kursuse praktikumipäevadel tegeleme teie projekti realiseerimise etappidega, ning iga etapi/praktikumipäeva lõpuks vaatame üle hetkeseisu ja anname esialgsed hinnangud, kui kaugele on jõutud ja mis on edasised sammud, veidi sarnaselt tüüpiliste agiilse arenduse hetkeseisu-koosolekutega. | |||
Selleks peab iga grupp tegema praktikumipäeva lõpus paariminutise ettekande, kus on öeldud: | |||
* grupi liikmete nimed | |||
* mida sel päeval üritati teha ja kuhu jõuti | |||
* mis on plaan järgmise praktikumikorraga saavutada | |||
Praktikumijuhendaja hindab iga päeva progressi. | |||
Lõpp-presentatsioon viimasel päeval peaks olema pikem, ca viisteist minutit. | |||
Praktikumi kogutulemusest on arvestuslikult ca 50% lõpptulemus ja teine ca 50% esimese nelja päeva tulemused. | |||
| 124. rida: | 141. rida: | ||
* Oma ülesande põhjal veidi suurema funktsionaalsuse väljamõtlemine, arhitektuuri plaani tegemine ja töömahtude hindamine: nö tellimuse ja lahenduse kondikava ja töömahtude hinnangu toorik. | * Oma ülesande põhjal veidi suurema funktsionaalsuse väljamõtlemine, arhitektuuri plaani tegemine ja töömahtude hindamine: nö tellimuse ja lahenduse kondikava ja töömahtude hinnangu toorik. | ||
=== 4. päev: | === 4. päev: kujunduse parandamine, testimine, arenduse jätk === | ||
| 136. rida: | 153. rida: | ||
Kursuse lõpus teevad kõik grupid veidi pikema presentatsiooni, ca 15 minutit: | Kursuse lõpus teevad kõik grupid veidi pikema presentatsiooni, ca 15 minutit: | ||
* kui kaugele te oma rakendusega jõudsite | * kui kaugele te oma rakendusega jõudsite, sh reaalne demo, | ||
* mis oli algses plaanis, aga mis tingimata päris lõpp-rakendusse veel ei jõudnud | * mis oli algses plaanis, aga mis tingimata päris lõpp-rakendusse veel ei jõudnud, | ||
* ettekanne oma edasiarenduse plaanist ja selle lühike arutelu | * ettekanne oma edasiarenduse plaanist ja selle lühike arutelu. | ||
== Loengud ja materjalid == | == Loengud ja materjalid == | ||
Redaktsioon: 29. jaanuar 2020, kell 12:55
|
Ainekood: ITO8020 |
Kursuse eesmärk ja põhimõtted
Mõista IT-süsteemide tehnoloogilist konstruktsiooni, arendusvahendeid ja arendusprotsesse.
Saada aru riistvara, tarkvara ja kommunikatsiooniprotokollide ehituse põhiideedest.
Mõista
- tarkvara peamisi arhitektuurivariante,
- erinevate programmeerimiskeelte olemust,
- teekide ja raamistike kasutamise üldisi põhimõtteid,
- erinevate arendusprotsesside ideid.
Kursuse raames ülikoolis kohapeal loenguid ei toimu: kõik loengud on varasemalt salvestatud videosse, ja lisatud presentatsioon, vaata siin lehel allpool.
Kohapealne töö (praktikum/konsultatsioon) on mõeldud eeskätt praktilise arenduskogemuse saamiseks, eesmärgiga omaenda katsetuste najal tekitada arusaamine, mismoodi praktiline arendusprotsess toimub, mida ja kuidas standardtehnoloogiatega teha saab, mis on keeruline ja mis lihtne.
Kohapealne praktiline töö eeldab varasemat tutvumist osade allpool toodud teemadega.
Esimeseks praktikumiks oleks väga soovitav vaadata/lugeda läbi allpool materjalid teemadel
- Veebilehed (tingimata)
- Programmeerimise sissejuhatus Pythonis (soovitav)
Hindamine
Kursus lõpeb eksamiga. Eksam on kirjalik ja selle tegemiseks kulub orienteeruvalt poolteist tundi. Aega eksamiks on kolm tundi.
Hindamisel arvestatakse praktikumide tulemusi kaaluga 40% ja eksamitulemusi kaaluga 60%.
Eksamis ei tule otseseid programmeerimisülesandeid ning vastused tuleb kirjutada paberile: arvutit ja lisamaterjale kasutada ei või. Küsimused tulevad järgmisest neljast sordist:
- Küsimused mõistete ja põhimõtete ja tehnoloogiate kohta: mis on mis ja milleks kasutatakse. Vastused on siis paarilauselised seletused. Küsimused tulevad ainult kursuse powerpointides ja videoloengutes toodu kohta.
- Kontrollküsimused eesmärgiga aru saada, kas olete lugenud kursuse lehel arendusprotsesside peatüki lõpus oleva kirjanduse läbi. Iga selline küsimus küsib midagi lühidat teksti mõne põhipunkti või eriti meeldejääva asjaolu kohta: pikemaid vastuseid/referaate ei ole vaja kirjutada.
- Küsimused väikeste näite-koodi-juppide - python, javascript, html, css - äratundmise ja esmase arusaamise kohta. Kõik need näitejupid võetakse otse kursuse powerpointidest ja videoloengutest ja küsitakse, mis keeles jupp ja mida ta umbes teeb.
- Küsimused, kus antakse ülesanne pakkuda välja arhitektuuriline ja tehnoloogiline lahendus mingile suhteliselt väikesele tarkvara-loomise probleemile, seda lahendust põhjendada ja tuua välja orienteeruv töömaht lahenduse eri osadele ja võimalikud riski- ning keerukuskohad.
Praktikumi/konsultatsiooni ajad
Eri rühmadel neljapäeviti ja reedeti ruumis ICT-501:
B-rühm (IADM20B) neljapäeviti:
- 30.01.2020 kl 16-20.30
- 13.02.2020 kl 16-20.30
- 27.02.2020 kl 16-20.30
- 12.03.2020 kl 16-20.30
- 26.03.2020 kl 16-20.30
A-rühm (IADM20A) reedeti:
- 31.01.2020 kl 15-19.30
- 14.02.2020 kl 15-19.30
- 28.02.2020 kl 15-19.30
- 13.03.2020 kl 15-19.30
- 27.03.2020 kl 15-19.30
Praktiline ülesanne
NB! Esimese praktikumi eel on väga soovitav tutvuda allpool klippide ja materjalidega teemadel "veebilehed" (tingimata) ja "programmeerimise sissejuhatus Pythonis" (soovitav)
Kursuse kodu-või-praktikumiülesandeks on reaalse rakenduse ehitamine, mis kuvab kasutajale veebis mõistetavalt ja otsitavalt ja/või sorteeritavalt mingit reaalset andmestikku, mis on soovitavalt teie enda töökohast pärit. Kui sa sobivat andmestikku oma töökohast ei leia, vali mõni töödeldav ja huvitav andmestik eesti avaandmete portaalist.
Kui ülesanne osutub lihtsaks ja jõuate kiiresti valmis, siis on soovitav ehitada andmestiku pealt mõni mõttekas graafik, mida samuti kuvate veebis. Kui ülesanne osutub raskeks, siis realiseerige eeskätt lihtsad asjad: oluliselt parem on töötav lihtne asi, kui mittetöötav keeruline kava.
Väga soovitavalt tuleks tulemus panna üles avalikku veebiserverisse (soovitus: digitalocean) ja kood avalikku koodihoidlasse (soovitus: github). Alternatiiv on panna tulemus dijkstra serverisse Taltechis.
Github on tasuta, digitalocean annab alustajatele ca 100 USD krediiti ja lisaks on olemas Github student pack, mis sisaldab ca 50 USD digitaloceani krediiti. Rangelt kohustuslik avaliku veebiserveri ja githubi kasutamine ei ole: väiksema arvu punkte saab praktikumist ka siis, kui realiseerid kõik lihtsalt oma arvutis ja ei pane kuhugi üles.
Praktikumi töökorraldus
Ülesannet võib teha üksi või kahekesi.
Kursuse praktikumipäevadel tegeleme teie projekti realiseerimise etappidega, ning iga etapi/praktikumipäeva lõpuks vaatame üle hetkeseisu ja anname esialgsed hinnangud, kui kaugele on jõutud ja mis on edasised sammud, veidi sarnaselt tüüpiliste agiilse arenduse hetkeseisu-koosolekutega.
Selleks peab iga grupp tegema praktikumipäeva lõpus paariminutise ettekande, kus on öeldud:
- grupi liikmete nimed
- mida sel päeval üritati teha ja kuhu jõuti
- mis on plaan järgmise praktikumikorraga saavutada
Praktikumijuhendaja hindab iga päeva progressi.
Lõpp-presentatsioon viimasel päeval peaks olema pikem, ca viisteist minutit.
Praktikumi kogutulemusest on arvestuslikult ca 50% lõpptulemus ja teine ca 50% esimese nelja päeva tulemused.
1. päev: ülesande valik, soovitud tulemuse kirjeldus, keskkonna ülesseadmine, katse-html lehe tegemine
Päeva eesmärk on (a) valida andmestik ja otsustada, mida meie rakendus sellega teeks, (b) töövahendite installeerimine ja katsetamine.
- Otsi andmestik, uuri, kas see on sulle kättesaadav/töödeldav.
- Otsusta, kuidas seda avalikkusele ilusamini kuvada ja millised filtrid/valikud lasta kasutajatel teha.
- Installeeri endale sobiv tekstiredaktor, soovitavalt ka Python ja Flask.
- Logi katseks dijkstra serverisse ja püüa sinna mõni fail veebiserveri alla kopeerida.
- Tee konto (soovitavalt) digitaloceani serverisse ja githubi koodihoidlasse, lae sinna faile.
- Alusta oma rakenduse veebilehe tegemist esmaste pisikatsetustega.
Kui Pythonit ja Flaski ei õnnestu enda arvutisse installeerida, saab nendega töötada ka üle võrgu otse dijkstra või digitaloceani serveris.
Päeva lõpuks teeb iga grupp paariminutise ettekande, kus on öeldud (a) grupiliikmete nimed, (b) mis andmekogu ja ülesanne valiti, (b) mis töövahendid käima saadi ja kuhu õnnestus sisse logida/andmeid kopeerida, (c) kuhu aeg peamiselt kulus ja mis olid ootamatused. (d) mis on plaan järgmiseks korraks.
2. päev: andmete töötlemine ja baasi panek, esmase html lehe tegemine serveris
Päeva eesmärk on (a) katsetada tehnoloogiaid: python ja flask, sqlite (b) teha oma andmebaas ja laadida andmed oma andmebaasi (c) teha katseid päringutega andmebaasist (d) ideaalis realiseerida juba mingi mõttekas osa süsteemist. Päeva lõpuks teeb iga grupp ühe-kahe minutise ettekande, kus on öeldud (a) grupiliikmete nimed, (b) mis käima saadi (c) kuhu aeg peamiselt kulus ja mis olid ootamatused. (d) mis on plaan järgmiseks korraks.
See, mis sa päeva lõpuks (ja kuidas) realiseerid, sõltub sellest, mis tehnoloogiad sa käima saad (kas saad flaski ja pythoni ja sqlite käima, kas oled juba saanud sisse logida ja tegutseda jne). Kui sa mingite tehnoloogiatega hätta jääd, vali alternatiivne lahendus, millega asjad välja tulevad.
Kui andmete saamine andmebaasi osutub keeruliseks (sest näiteks sa ei saanud Pythonit ja Flaski ja sqlite oma arvutisse, serverisse ei õnnestu või on keeruline sisse logida vms) siis on OK teha alternatiivselt lihtsamaid ülesandeid ilma andmebaasita:
- Andmete sqlite sisestamise asemel võid panna andmed otse veebilehele või csv faili, nii et neid serveris eraldi ei töödeldagi ja kuvamist ja valikuid teeb javascript otse veebilehel. Loe ja kasuta õpetust ja näitekoodi
- Html lehe digitalocean serverisse panemise asemel kas paned nad tehnikaülikooli dijkstra serverisse või jätkad html lehe arendamist oma arvutis failidena, mida brauser siis kuvab.
3. päev: veebilehe kasutajaliidese tegemine ja seostamine andmebaasiga
Siit alates on kolm tegevussuunda kursuse lõpuni:
- Kasutajaliidese parandamine.
- Brauserist Flaskiga pythoni programmilt andmete küsimine
- Oma ülesande põhjal veidi suurema funktsionaalsuse väljamõtlemine, arhitektuuri plaani tegemine ja töömahtude hindamine: nö tellimuse ja lahenduse kondikava ja töömahtude hinnangu toorik.
4. päev: kujunduse parandamine, testimine, arenduse jätk
5. päev: edasiarenduse planeerimine, vigade ja puuduste parandamine, ettekanne
Päeva põhieesmärk on edasiarenduse planeerimine: mida saaks/tasuks süsteemi juurde teha, kes ja kui palju neid täiendusi kasutaks, mis oleks tehnoloogiline/arhitektuuriline plaan edasiarenduse jaoks, mis on ajalise ja rahalised hinnangud, milline oleks projektiplaani kondikava. Edasiarenduse kontekstiks oleks selle tellimine, mitte teiepoolne tegelik ehitamine.
Ülejäänud aeg kasuta oma rakenduse täiustamisele: tee need asjad korda, mis jäid puudulikuks.
Kursuse lõpus teevad kõik grupid veidi pikema presentatsiooni, ca 15 minutit:
- kui kaugele te oma rakendusega jõudsite, sh reaalne demo,
- mis oli algses plaanis, aga mis tingimata päris lõpp-rakendusse veel ei jõudnud,
- ettekanne oma edasiarenduse plaanist ja selle lühike arutelu.
Loengud ja materjalid
Loengud on salvestatud youtube klippidena, iga loenguga on seotud presentatsioon ja soovitavad täiendavad materjalid ja lingid.
Videoloengute youtube üldlisti järjekord on suvaline, kasuta pigem allolevaid linke õiges järjekorras.
Sissejuhatus ja põhimõisted
- Sissejuhatus ja video
- Põhimõisted ja video.
Kuidas arvuti töötab
- Protsessor ja video
- Eelmise presentatsiooni lõpuosa ja seejärel reaalne näide protsessori käskudega: video
Soovitavalt loe veel:
- The infinite space between words
- võibolla peamine arendajate üldhuvi-uudistesait: loe seda iga päev!
Interneti funktsioneerimine
- Esimene osa ja video
- Teine osa ja video
Programmeerimise sissejuhatus Pythonis
- Programmeerimise sissejuhatus: video
- Programmeerimine 2: python video
- Programmeerimine 3: tingimused, tsüklid, funktsioonid: video
- Programmeerimine 4: failitöötlus video ja failitöötluse näitekood pythonis
- Programmeerimine 5: andmeimport ja andmete seostamine video ja tabelite tegemise ja andmete sisestamise näited
Vajalik Pythoni tarkvara:
Head pikemad õpetused:
- Kõige lihtsam: w3schools
- Veidi keerulisem: tutorial pythoni lehel
- Eestikeelne õpik
Tekstiredaktorid:
- päris rikkalik: vs code
- keskmiselt rikkalik: atom
- üpris minimaalne: notepad++
- eriti minimaalne: scite
Veebilehed
- Sissejuhatus teemasse
- Esimene osa, html: video
- Teine osa, css: video
- Kolmas osa, javascript: video
Kõige paremad veebiehituse õpetused algajale on w3schools saidil
Üleüldine peamine küsimuste/vastuste sait on stackoverflow.
Server ja veebirakendus
- Põhipunktid ja koodinäited
- Esimene osa, server ja veebiteenus: video
- Teine osa, veebirakendus: video
Flask server:
- Kasutame Pythoni populaarset micro-frameworki Flask
- Sul peab olema Windowsil käsurealt käivitatav python ja pip. pip on levinuim Pythoni moodulite installeerimise-programm.
- Ütle käsurealt: pip install flask
- Flask veel ise käima ei lähe: loe presentatsioonist edasi.
Andmebaasiga serverirakenduse ehitamine
Tehisintellekt
Soovitavalt vaata ja loe lisaks:
- Boston Dynamics robot donkey (aka big dog) varane, big dog praegu, Cheetah, Wildcat,Petman, Atlas
- Kuidas AlphaGo töötab
- Darpa grand challenge 2005 ja urban challenge
- Miks mitte karta super-tehisintellekti
- Rodney Brooksi väike tehisintellekti-sari osa 1, osa 2, osa 3, osa 4
Arendusvahendid, programmeerimiskeeled ja arhitektuur
Arendusprotsess
Loe (pikemad sirvi) need arendusprotsessiga seotud artiklid kursuse käigus läbi. Nende kõigi kohta võidakse eksamil küsida lugemiskontrolli-küsimusi.
- Paul Graham Hackers and painters
- Paul Graham: How to start a startup?
- Paul Graham: Great hackers
- Joel Spolsky: The iceberg secret revealed
- Joel Spolsky: IT firma töökorraldus: 12 sammu
- Agiilarenduse manifest ja selle lisapunktid
- Paul Reeves: What is software design? vana artikkel ja What Is Software Design: 13 Years Later
- Gnu manifest The Free Software Definition ja Gnu ülevaade litsentsidest
- Fred Brooks 1986: No Silver Bullet
- 20 aastat kogemust tarkvara arendusmeetoditega