Tarkvaratehnoloogiad
|
Ainekood: ITO8020 |
Kursuse eesmärk
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.
Maht, aeg, tulemus
Kursus lõpeb eksamiga. Eksam on kirjalik, kaks või enam tundi..
Hindamisel arvestatakse praktikumide tulemusi kaaluga 40% ja eksamitulemusi kaaluga 60%.
Praktikumi/konsultatsiooni ajad
Järgmistel neljapäevadel ruumis ICT-501:
- 31.01.2019: 15:00-20:30
- 14.02.2019: 15:00-20:30
- 28.02.2019: 15:00-20:30
- 14.03.2019: 15:00-21:00
Praktiline ülesanne
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).
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 tegelemegi selle ülesande 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 ca kaheminutise 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 viis minutit, ja kirjeldama
- mis oli algne plaan
- kuhu jõuti: reaalne demo
- probleemid, mis tekkisid ja võtsid rohkem aega
- ootamatud asjad, mida töö käigus õppisite või tähele panite
Praktikumi kogutulemusest on arvestuslikult ca 50% lõpptulemus ja teine ca 50% esimese kolme päeva tulemused.
Põhiplaan praktikumipäevade kaupa on järgmine, kuid väga soovitav on neid samme kiiremini teha.
1. päev: ülesande valik, soovitud tulemuse kirjeldus, keskkonna ülesseadmine
- 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, Python, Flask.
- Tee konto (soovitavalt) digitaloceani serverisse ja githubi koodihoidlasse.
- Logi serverisse sisse, kopeeri sinna katseks faile, pane katseks faile githubi.
2. päev: andmete töötlemine ja baasi panek, esmase html lehe tegemine serveris
Põhiülesanne koosneb kahest osast:
- Sisesta oma valitud andmed sqlite andmebaasi. Loe soovitusi ja õpetusi
- Pane serverisse esmane katse-html leht. Loe soovitusi ja õpetusi
Kui mõni nendest osadest osutub keeruliseks (sest näiteks sa ei saanud Pythonit ja Flaski oma arvutisse, serverisse ei õnenstu või on keeruline sisse logida vms) siis on väga OK teha alternatiivselt lihtsamaid ülesandeid:
- Andmete SQLite sisestamise asemel võid panna andmed otse veebilehele või sellega seotud javascripti faili, nii et neid serveris eraldi sisse ei loetagi. Loe soovitusi ja õpetusi
- Html lehe serverisse panemise asemel jätkad html lehe arendamist oma arvutis failidena, mida brauser siis kuvab.
3. päev: veebilehe kasutajaliidese tegemine ja seostamine andmebaasiga
4. päev: puhver, kujunduse parandamine, lisafunktsioonide ehitamine, lõpp-presentatsioon
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
- Programmeerimine 5: andmeimport ja andmete seostamine video
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
- Andmebaasid
- Serverirakendus ja SQL 1. osa video
- Serverirakendus ja SQL 2. osa video
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:
- 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