Tarkvaratehnoloogiad

Allikas: Lambda

Ainekood: ITO8020
Link: http://www.lambda.ee/wiki/tarkvaratehnoloogiad
Link ÕISi https://ois.ttu.ee/aine/ito8020
Õppejõud: Tanel Tammet
Kontakt: tanel.tammet@ttu.ee, 6203457, ICT 426

Tulemused

Siin lingi all tabelis on lõplikud tulemused ja hinded peale kolmandat eksamit ja parandusi: tudengikoodi numbriline osa ja hinne.

Siin lingi all tabelis on tulemused ja hinded peale teist eksamit: tulbad on tudengikoodi numbriline osa, eksamipunktid (0-100), praktikumipunktid (0-100), koondpunktid ja hinne. Hindes on eksam/praktikum kaaluga 50/50 vastavalt ainekaardil toodule.

Siin lingi all tabelis on tulemused ja hinded peale esimest eksamit: tulbad on tudengikoodi numbriline osa, eksamipunktid (0-100), praktikumipunktid (0-100) ja hinne. Hindes on eksam kaaluga 60% ja praktikum 40%.

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 ja selle tegemiseks kulub orienteeruvalt poolteist tundi. Aega eksamiks on kolm tundi. Eksamipäevad ja ajad on:

  • 27 märts kolmapäeval kell 14:00 ruumis U06A-229 (kuues korpus, ehk TTÜ põhihoonekompleksi mektory-poolne ots, teine korrus)
  • 10 aprill kolmapäeval kell 14:00 ruumis U03-103 (TTÜ põhihoonekompleksi pikk koridor läbi korpuste, selle 1. korrus ca keskel).
  • 15 mai kell 9:00 majandusmajas SOC-311

Eksamiks registreerida ei ole vaja.

Hindamisel arvestatakse praktikumide tulemusi kaaluga 40% ja eksamitulemusi kaaluga 60%.

Lisaks kursuse eksamile tuleb küsimusi sellest ainest ka eraldi magistrieksamisse, mis ühendab mitut ainet. See ühine magistrieksam toimub mais (esmaspäevadel 6, 13 ja 20 mai kell 11:00) ning võib omal valikul osaleda ühel või kahel ajal. Eksami pikkus on kolm tundi.

Kummaski 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

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äeva eesmärk on (a) katsetada tehnoloogiaid ja installeerimist (digitalocean või dijkstra server, python ja flask, sqlite) (b) realiseerida 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, mis serveris/läptopis ja mis tehnoloogiaga (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 käima, kas saad sisse logida, ja tegutseda jne). Kui sa mingite tehnoloogiatega hätta jääd, vali alternatiivne lahendus, millega asjad välja tulevad.

Põhi/maksimaalülesanne koosneb kahest osast:

Kui mõni nendest osadest 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 väga OK teha alternatiivselt lihtsamaid ülesandeid:

  • 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

Kolm tegevussuunda kursuse lõpuni:

  • Kasutajaliidese parandamine.
  • Andmete panemine andmebaasi pythoni abil ja 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: puhver, kujunduse parandamine, lisafunktsioonide ehitamine, lõpp-presentatsioon

Lisaks kolmanda päeva kolmele tegevusvariandile oleks hea mõte panna oma kood Githubi. Selleks tee Githubi konto ja lae veebi kaudu failid üles või installeeri omale Githubi desktop ja lae failid selle kaudu.

Kursuse lõpus teevad kõik grupid veidi pikema presentatsiooni, ca 5 minutit:

  • kui kaugele te oma rakendusega jõudsite
  • mis katseid te veel tegite (näiteks, andmete panek andmebaasi, lehe panek digitaloceanisse jne) mis tingimata päris lõpp-rakendusse veel ei jõudnud
  • kui te olete teinud edasiarenduse funktsionaalsuse, arhitektuuri ja töömahtude hinnangu, siis ettekanne sellest.

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

Kuidas arvuti töötab

Soovitavalt loe veel:

Interneti funktsioneerimine

Programmeerimise sissejuhatus Pythonis

Vajalik Pythoni tarkvara:

Head pikemad õpetused:

Tekstiredaktorid:

Veebilehed

Kõige paremad veebiehituse õpetused algajale on w3schools saidil

Üleüldine peamine küsimuste/vastuste sait on stackoverflow.

Server ja veebirakendus

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 ja SQL video
  • Serverirakendus ja SQL 1. osa video
  • Serverirakendus ja SQL 2. osa video

Tehisintellekt

Soovitavalt vaata ja loe lisaks:

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.