Harjoitustyö 2020¶
Huom! Materiaali päivittyy hieman lähiaikoina detaljien osalta, ja kun taustajärjestelmä saadaan pystyyn, sekä kurssin edetessä kun lisäämme vinkkejä ongelmakohtiin. Joten tarkistakaa sivun sisältö aika ajoin!
Päivitetty viimeksi:
Ma 9. 11. 2020 siirretty harjoitustyön deadlinea, To 5. 11. 2020 muutettu langattoman viestinnän kuvausta
Ma 9. 11. 2020 siirretty harjoitustyön deadlinea, To 5. 11. 2020 muutettu langattoman viestinnän kuvausta
AVATAR¶
Tehtävänä harjoitustyössä on ohjata omaa avataria pelilaudalla, liikuttamalla SensorTagia ja viestimällä laitteessa tulkitut ohjauskomennot taustajärjestelmälle. Tavoitteena on saada pahis kiinni, eli viedä avatar samaan ruutuun missä pahis sijaitsee. Oman avatarin etenemistä voi seurata reaaliajassa selaimen kautta.
Tron-pelin taustajärjestelmä on käytetävissä harjoitusten aikaan luokassa TS135.
Vaatimukset¶
Työssä SensorTag-laitteeseen tehdään sovellus, joka tulkitsee laitteen liikkeen anturidatasta neljään suuntaan: ylös, alas, vasemmalle ja oikealle. Sovelluksella pitää pystyä liikuttamaan avataria viestimällä ohjauskomennot taustajärjestelmälle.
Laitteeseen toteutettavassa ohjelmassa oltava seuraavat ominaisuudet, jotta työ hyväksytään:
- Ohjelmassa tulee olla minimaalinen käyttöliittymä.
- Ohjauskomennot tulkitaan ensisijaisesti kiihtyvyys- ja asentoanturilla (MPU9250) kerätystä datasta, mutta laitteen muitakin antureita voi käyttää.
- Avatarin liikuttelu tapahtuu ohjauskomento kerrallaan. Sallitut ohjauskomennot ovat UP, DOWN, RIGHT JA LEFT. Yksi ohjauskomento vastaa avatarin yhtä askelta ruudukossa.
- Ohjelman on informoitava käyttäjää tunnistetusta komennosta laitteen näytöllä.
- Ohjelman on lähetettävä viesti taustajärjestelmälle kun komento on tunnistettu.
- Ohjelman on vastaanotettava viestejä taustajärjestelmältä ja reagoitava niihin. Viestin maksimipituus on 80 merkkiä.
- Ohjelman toteutuksen on perustuttava tilakoneeseen.
Työssä voi myös kokeilla SensorTagin käyttämistä irti työasemasta itsenäisenä laitteena. Ohjeistus SensorTagin käyttöönottoon patterin kanssa löytyy täältä.
Ohjauskomentojen tunnistaminen¶
Ohjauskomentojen toteutus SensorTagin liikkeenä sitä kädessä pitäen on ryhmän itsensä vapaasti päätettävissä. Mahdollisia vaihtoehtoisia toteutustapoja ovat ainakin:
- Laitteen liu'utus pöydänpintaa pitkin
- Laitteen kallitus ja/tai liike
- Laitteen hyppyytys (=käy välillä ilmassa) pöydänpintaa pitkin
- Laitteen liikuttelu ilman tukea "3D:nä" ilmassa.
Yleisiä ohjeita ohjauskomennon tulkitsemiseen:
- Kannattaa määrittää kuinka pitkä ajallisesti yksi komento on, ts. kuinka kauan laitteen pitää liikkua jotta datasta tulkitaan yksi ohjauskomento. Ohjauskomento siis vastaa avatarin askelta ruudukossa.
- Esimerkiksi yhden sekunnin mittainen liike pöydän pinnalla valittuun suuntaan vastaa yhtä ohjauskomentoa.
- Mittausten aikaväli, ts. kuinka usein anturilta kysytään dataa.
- Esimerkki: kerran sekunnissa lienee liian hidas aikaväli käden liikkeelle, mutta entäpä 5 tai 10 kertaa sekunnissa?
- Ohjauskomennon tulkitsemiseen ei tarvitse toteuttaa kovinkaan hienostunutta algoritmiä. Riittää kun analysoi esimerkiksi kiihtyvyysarvojen muutoksia ajan funktiona.
- Harjoitustyö ei edellytä peruskursseja syvällisempää matemaattista osaamista, joten ohjauskomentojen tunnistusalgoritmin laatua ei arvostella.
- Ohjelman tulee kuitenkin jollain osoitetulla tavalla reaalimaailman testitilanteessa tunnistaa komennot neljään suuntaan.
- Ohjauskomentojen ketjuttaminen on ok, eli jatkuvasta/pitkäkestoisesta liikkeestä voi tulkita useammankin komennon, mutta ne pitää lähettää viestinä yksi kerrallaan peräkkäin.
- Ihan näin vauhdikkaaksi ei menon tarvitse kurssilla yltyä..
Anturidatan keräys ja käsittely¶
Työ kannattaa aloittaa siten, että kerää MPU9250-anturilla datasetin talteen samalla kun käsin liikuttaa laitetta. Tuloksena sitten kerätystä datasta voidaan nähdä / visualisoida eri akselien suhteen mitä datassa tapahtui minkäkin liikkeen / komennon suorituksen aikana.
1. Komennon tulkitseminen perustuu datassa näkyvään 3-ulotteiseen liikkeen kiihtyvyys- ja asentomuutokseen aikasarjana. Nythän anturi antaa (kurssikirjastomme avulla) 6 mittausarvoa per mittaus, jotka ovat kiihtyvyyden x-, y- ja z-akselit sekä asentomuutos (kulmanopeus) x-, y- ja z-akseleilla.
Jokaiseen mittausarvoon on syytä liittää myös aikaleima, eli suhteellinen ajanhetki milloin arvo on mitattu. Suhteellinen tarkoittaa sitä, että ajanhetki nolla on se hetki, kun esimerkiksi taskit tai mittaus käynnistetään laitteessa.
Kun dataa kerätään taulukkoon komennon tunnistamista varten, saadaan lopputuloksena 7-ulotteinen taulukko. Taulukossa data saattaa näyttää esimerkiksi seuraavalta:
//aika, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z
0, 0.0029, -0.0063, -1.0115, 1.1215, -0.4578, 0.3204
10, 0.0133, 0.0291, -0.9753, 0.0229, -0.0458, -0.2060
20, 0.0028, 0.0964, -1.0406, 5.2948, -14.0915, 19.0735
30, -0.085, 0.2474, -1.8069, -1.833, 0.0992, 15.4953
40, -0.20, 0.3864, -2.2000, -6.180, 29.9924, 70.5643
Tuloksena saadaan siis tietoa millaista anturidata on komennon eri vaiheissa:
- Riittääkö pelkkä liike ja sen keston mittaaminen? Miten liike näkyy datassa?
- Pitääkö komennossa lähteä ja päätyä johonkin asentoon?
- Minkä verran "virhettä" (esim. liikettä muiden akselien suuntaan) komennon suorituksessa sallitaan?
- jne..
2. Nyt ohjauskomento voidaan tunnistaa datasta hyvinkin yksinkertaisesti:
- Liikkeen kesto eri akselien suhteen
- Valitun kynnysarvon ylitys/alitys jonkin akselin suuntaan
- Aikasarjalle voidaan laskea erilaisia piirteitä kuten keskiarvo, varianssi, keskihajonta, ym, joilla voidaan erottaa komentoja toisistaan (ja halutessa hienosäätää komennon tunnistusta). Tästä voi olla myös hyötyä, jos haluaa ketjuttaa komentoja tai toteuttaa monimutkaisempia komentoja. (Lisäpisteitä? kts alla)
- Koska anturidataa saadaan kolmella akselilla (x, y ja z), sitä voi myös käsitellä 2- tai 3-ulotteisena vektorina, jolla on esimerkiksi suunta ja pituus..
- ... you name it.
Valmista testidataa¶
Henkilökunta on kerännyt valmiiksi pienen testidata-aineiston erilaisista kädessä olevan laitteen liikkeistä, jota työssä voi käyttää alustavaan komennon tunnistamiseen. Tässä mainitut tavat liikuttaa laitetta eivät välttämättä ole se ainut, helpoin, saati paras tapa toteuttaa komentoja SensorTagilla.
Testidata on kerätty SensorTagin kiihtyvyysanturilla MPU9250. Tiedostoissa datan formaatti on
[aikaleima, acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z]
. Data on mitattu siten, että laite on ollut liikkumatta paikallaan mittauksen alussa ja sitten on tehty liike ylös kahdella eri tavalla. Kuvissa data visualisoitu x, y, ja z-akseleille ajan suhteen sekä kiihtyvyys- (g) että asentoanturilla (kulmanopeus). 1. Anturidata laitteen ollessa liikkumatta paikallaan:
2. Anturidata, kun laitetta nopeasti nykäistään pöydällä suuntaan ylös kaksi kertaa:
3. Anturidata, kun laite nostetaan irti pöydältä ja siirretään suuntaan ylös:
Hox! Eri ihmisten kädenliike voi olla niin erilainen, ettei valmis testidata käy suoraan teidän omaan komennon tunnistukseen. Mutta datalla päässee tunnistamisen alkuun.
Oman testidatan keräys¶
Omatoiminen testidatan keräys onnistuu helpoiten niin, että toteutatte SensorTagiin ihan aluksi erillisen datankeräystaskin tai jopa erillisen ohjelman, joka ihan vaan kerää MPU9250-anturin dataa taulukkoon valituin aikavälein. Lopuksi ohjelma tulostaa taulukon rivi riviltä CCS:n debug-ikkunaan, josta se on helppo copy & pasteta tekstieditoriin / M$ Exceliin tms. Datan voi visualisoida tarvittaessa vaikkapa jollain Python-kirjastolla (köh köh
matplotlib
) tai gnuplot:lla, M$ Excelillä tai vastaavalla ohjelmistolla. Tärkeää omaa testidataa kerätessä on tehdä keräys aina samalla tavalla, eli käyttäjä ja anturi samassa asennossa, jne. Tämä sen takia, että eri mittauksissa kerätty data olisi vertailukelpoista eri mittauksien välillä.
Hox! Kun käynnistätte SensorTag-ohjelman, MPU9250 kalibroituu itsekseen. Eli laitteen tulisi aluksi olla liikkumatta tasaisella pinnalla, lattian tms kiinteän pohjan päällä, kunnes debug-ikkunaan tulee viesti kalibrointi OK.
Viestit Tronille¶
Taustajärjestelmän kanssa kommunikoimaan langattomasti käyttäen luentomateriaalissa kuvattua kirjastoa.
Kommunikointi on kaksisuuntaista ja nämä viestit tulee SensorTag-ohjelman ottaa vastaan ja näyttää laitteen näytöllä.
- SensorTagilta lähetetään ohjauskomentoja peliin, jotka ovat CSV-muotoisia ASCII-merkkijonoja seuraavasti:
- Jokainen viesti sisältää yhden ohjauskomennon kerrallaan.
- Ohjauskomento (avain-arvo-pari) on muotoa:
event:OHJAUSKOMENTO
, jossa varattu sanaevent
kertoo ohjauskomennonUP
|DOWN
|LEFT
|RIGHT
. - Esimerkkinä viesti:
event:UP
(ei välilyöntejä tms välissä!) - Viestit pelistä SensorTagille:
- Voitto pelissä: Kun avatar päätyy samaan ruutuun pahiksen kanssa, lähettää järjestelmä broadcast-viestin CSV-muodossa
LAITE_OSOITE,WIN
(tässä osoite on SensorTagille annettu nettiosoite tiedostossa address.h). - Tappio pelissä: Jos avatar tippuu pelilaudan eli, lähettää taustajärjestelmä viestin
LAITE_OSOITE,LOST GAME
. - Esimerkkinä viesti:
423,LOST GAME
Lisäominaisuuksia¶
Harjoitustyön pistemäärää voi nostaa toteuttamalla työhön lisäominaisuuksia, joista alla esimerkkejä:
- 1 pisteen ominaisuuksia: Käyttöliittymässä lisäjuttuja
- Käyttöliittymässä menurakenne.
- Kannustetaan käyttäjää tekstillä / ledeillä / tms.
- Laitteen kaiutin tuottaa ääniefektejä.
- Peliajan mittaus ja/tai siirtojen määrä.
- ...
- 2 pisteen ominaisuuksia: Monipuolista laitteen ominaisuuksien käyttöä
- Käsitellään muiden sensorien dataa ja näytetään arvot ruudulla / lähetetään taustajärjestelmälle / tms.
- Näytöllä pikseligrafiikkaa.
- Näytöllä animaatiota.
- Kaiutin soittaa musiikkia.
- Siirto satunnaiseen viereiseen ruutuun.
- Komentosarjat: liikkeitä pitemmälle kuin yksi ruutu
- ...
- 3 pisteen ominaisuuksia: Omaa merkittävää lisätoiminnallisuutta
- Monipuolisia komentoja perustuen anturidatan analyysiin.
- Siirtojen tallennus + playback / peruutus takaisin alkuruutuun.
- Virherajojen käyttö komennon tunnistuksessa.
- ...
Jokainen toteutettu toiminnallisuus lasketaan vaan kerran.
Toiminnallisuuksien pistemäärien arvioinnissa käytämme maalaisjärkeä sekä opetushenkilökunnan työkokemusta sulautettujen järjestelmien ohjelmoinnista.
Vinkkejä työn suorittamiseen¶
Yllättäen moni asia on jo kerrottu ja kysymyksiin vastattu luentomateriaalissa. Materiaaliin kannattaa siis perehtyä kunnolla..
Harjoitustyön toteutusta kannattaa lähteä purkamaan Rakenteellinen ohjelmointi-lisämateriaalin avulla. Näin saadaan isokin ongelma palasteltua helpommin toteuttaviin osasiin.
- Hyvin suunniteltu on 90% tehty!
- Pahin virhe mitä voi tehdä, on jättää asiat viimetinkaan ..aloittelija ei varmasti saa työtä viikossa tehdyksi!
- Kannattaa vilkaista mitä kaikkea toiminnallisuutta C-kielen standardikirjastot ja RTOS:n eri kirjastot tarjoavat valmiiksi. Valmiit kirjastot kun helpottavat ohjelmointia suuresti.
- Koodatessa voi olla hyödyllistä koodata vaikeat kohdat ensin pc:llä. Myös algoritmien tms testaaminen PC:ssä voi olla helpompaa. Sitten kun koodi on toimivaa, sen voi siirtää laitteelle.
- Kannattaa käyttää toistorakenteissa, ehtolauseissa, yms, välitulostuksia, joissa tulostaa konsoli-ikkunalle (System_printf(..) + System_flush(..)) muuttujien arvoja tms oleellista tietoa ohjelman etenemisestä. Tämä nopeuttaa merkittävästi virheiden metsästystä ohjelmasta. Tyyppiesimerkki ongelmasta, joka selviää nätisti välitulostuksilla on silmukkarakenteet, joissa tulostatte konsoli-ikkunaan joka iteraatiossa eri muuttujien arvot. Näin ne ammattilaisetkin toimii..
Tärkeää on muistaa, että jos jäätte jumiin, kysykää!! Tässä jos jossain ei kannata viivytellä!! Kurssihenkilökunta on palkattu teidän avuksi.
Tehtäväkohtaisia vinkkejä¶
Päivitämme tänne vinkkejä sitä mukaan kun harjoitustyön toteutus etenee ja tiedämme lisää..
- Ohjelma kannattaa jakaa taskeihin niin, että yhdessä on viestintä, toisessa näytön päivitys, kolmannessa sensoridatan lukeminen, jne.
- Käyttöliittymään kannattaa toteuttaa Komennon tunnistus päälle/pois-toiminto.
- Esimerkki MPU9250-anturin käytöstä löytyy opiskelijoiden tiedostonjaosta.
- Sensoridataa kannattaa tietysti kerätä taulukkoon, josta sitä on helppo käsitellä aikasarjana.
- Huomioikaa tässä taulukon koko tavuina, jotta se mahtuu laitteen muistiin! Käytössä on noin 20kB muistia, jonne siis pitää kaiken muunkin tavaran mahtua.
- Anturidataa voi tarvittaessa siistiä (esimerkiksi poistaa kohinaa) vaikkapa laskemalla liukuvaa keskiarvoa. Se harjoitustehtävä..
- Testidataan mittausajanhetken saa kysyttyä RTOS:n Clock-kirjaston funktiolla
Clock_getTicks()
. - Laitteen komponenttien alustuksia ei pidä laittaa
main
-funktioon vaan taskien alkuun. Tämä siitä syystä, että osa tarvitsee BIOS:n toiminnallisuutta joka käynnistyy vasta main:n lopussa. - Luentomateriaalissa on esimerkki tilakoneesta, jota kannattaa soveltaa harjoitustyössä.. suora copy & paste SensorTagiin ei toimi.
- Se patterihan kuluu loppuun, jos laitteen jättää tunneiksi päälle. Toteuttakaa koodiin virtanappi ja ihan ensimmäiseksi ei tietenkään kannata lähteä patterin kanssa pelailemaan. Uuden patterin saa toki hakemalla harjoituksista.
Toteutusjärjestys¶
Alla ohjeellinen (henkilökunnan mielestä toimiva) toteutusjärjestys harjoitustyölle:
- Laitteessa sensoridatan keruu komentojen analysointia varten.
- Työasemassa tunnistusalgoritmin toteutus C-kielellä.
- Toimivan algoritmin siirto laitteeseen, toiminnallisuuksien testaus livenä.
- Käyttöliittymän tuunaus, viestien lähetys/vastaanotto.
- Lisäominaisuudet.
Työsuunnitelma¶
Harjoitustyöstä tulee osana kurssisuoritusta tehdä lyhyt työsuunnitelma. Suunnitelmia ei näytetä julkisesti muille, tarkoitus on että autatte itseänne lopputyön tekemisessä. Suunnitelman tekeminen voi tuntua turhalta, mutta aiemman opiskelijapalautteen perusteella se todellakin laittaa ajatukset liikkeelle, miettimään mitä työssä oikeastaan pitää tehdä! Samalla tulee mietittyä työn aikataulutusta.
Suunnitelmassa ei tarvitse mennä kovinkaan tarkasti toteutukseen, korkea abstraktiotaso riittää. Asiat voi kertoa ranskalaisilla viivoilla lyhyesti. Suunnitelman koko max yksi a4. Suunnitelma ei ole mitenkään sitova, ts. todennäköisesti se elää työn toteutuksen edetessä..
Tästä linkistä Esimerkkisuunnitelma.
Sisältö:
- Hahmotelma mitä laitteen näytöllä näkyy sekä mitä oheislaitteita käytetään (painonapit, sensorit, jne)
- Lyhyesti kuvattuna mitä toiminnallisuutta ohjelmassa on: nimet eivät riitä, oleellista on mitä missäkin toiminnallisuudessa tehdään
- Taskit, omat funktiot, ...
- Tietorakenteet, vakiot, globaalit muuttujat, ...
- Anturidatan keräys: taulukon koko, aikaväli, ym
- Tilakone, joka toteuttaa harjoitustyön
- Helpoin esittää kuvana
- Tilakone riittää ohjelman päätasolla, alemmille abstraktiotasoille ei tarvitse mennä
- Mietityt lisäominaisuudet
- Aikataulu pääpiirteissään
Suunnitelman palautus viimeistään Sunnuntaina 4.10. klo 23:59. Suunnitelma on pakollinen osa harjoitustyötä. Jos suunnitelmaa ei palauta tai palauttaa myöhässä, vähennetään harjoitustyön pisteistä
3p
. Riittää, että toinen työparista palauttaa suunnitelman Lovelaceen, mutta työparista molempien nimet on oltava suunnitelmassa. Kurssin henkilökunta käy suunnitelmat läpi ja lähettää siitä tarvittaessa palautetta. Hox! Lopputyön toteutuksen saa toki aloittaa ennen suunnitelman esittelyä!
Hox! Suunnitelmia saatetaan käyttää myöhemmin akateemisessa tutkimuksessa lähdemateriaalina, tällöin ne tehdään nimettömiksi ja tunnistamattomiksi. Voitte halutessanne kieltää oman suunnitelman käytön tutkimusmateriaalina, mainitsemalla siitä suunnitelmassa.
Työn palautus¶
Harjoitustyön deadline on Tiistaina 1. Joulukuuta klo 23:59. Työn ohjelmakoodien pitää olla siis palautettuna Lovelacessa tiistain aikana.
Harjoitustyön koodit palautetaan ao. palautusboxiin ennen deadlinea. Tämä palautettu koodi on se arvosteltava koodi. Työparista riittää että vain toinen palauttaa tiedostot. Tallennus Lovelaceen on tehtävä, koska laki vaatii säilyttämään opiskelijoiden kurssisuoritukset vähintään 6kk ajan.
- Koodista ainoastaan omat lähdekooditiedostot:
pääohjelma.c
sekä mahdollisetomakirjasto.c
jaomakirjasto.h
. - Projektitiedostoja, RTOS:n valmiita tiedostoja eikä sensors- ja wireless-hakemistoja ei tarvita.
- Kommenteissa tekijöiden nimet ja opiskelijanumerot.
- Lisäpisteitä varten mahdollinen lähdemateriaali, data-analyysitulokset, ym, joita haluatte otettavaksi arvostelussa huomioon.
- Paketoikaa useat tiedostot samaan zip-tiedostoon.
- Missään nimessä ei palauteta koko projektihakemistoa zipattuna!! Siellä on isoja debug-tiedostoja ym. arvostelussa turhaa.
Harjoitustyön arvostelu¶
Työn arvostelu tehdään ryhmittäin palautustilaisuudessa deadlinen jälkeen (toteutus vielä auki syksylle 2020).
- Tarkistus vie noin 15min per ryhmä
- Koko ryhmän on oltava paikalla
- Poissaoleva ei saa arvosanaa, ennenkuin on selvittänyt osuutensa työhön
- Ohjelman toiminnallisuus ja koodi esitellään opettajalle. Opettaja kyselee toteutuksesta.
- Lopputyöstä saatu pistemäärä kerrotaan ryhmälle
Harjoitustyön pistemäärä max 30p joka muodostaa 50% kurssin arvosanasta. Toiset 50% tulevat aiemmista C-kielen harjoitustehtävistä.
Arvosanaan 1 riittää, että harjoitustyöstä on hyväksytty toteutus ja kasassa on 50% yhteenlasketuista maksimipisteistä. Myös molemmista osa-alueista (C-kielen harjoitukset ja harjoitustyö) tulee olla suorituksia.
Pisteytys¶
Harjoitustyön arvostelun idea: Ensin toteutetaan vaadittu toiminnallisuus ja sen jälkeen voi lähteä hakemaan parempaa arvosanaa toteuttamalla lisäominaisuuksia.
Harjoitustyön pisteytys:
- Suunnitelma: 0 / -3p
- Vaadittu toiminnallisuus ohjelmassa: max 10p
- Koodissa isoja bugeja tai puuttuu toiminnallisuus: -2p per bugi/puute
- Ryhmän kertoessa kuinka bugi/puute korjattaisiin : -1p
- Koodin rakenne ja luettavuus: 0-5p
- Ohjelman toteutus perustuu selkeästi tilakoneeseen: 3p
- Koodin rakenne on järkevä ja modulaarinen (funktioita käytetty): 1p
- Koodi on sisennetty siististi ja järkevästi kommentoitu. Koodissa on käytetty kuvaavia funktioiden ja muuttujien nimiä: 1p
- Lisäominaisuuksia 0-15p
- Ylläkuvattuja tai muita vastaavia lisäominaisuuksia: n * 1-3p
FAQ¶
- Voiko työn tehdä itsekseen?
- Voi tehdä, jolloin työmäärä on hieman isompi. Joka vuosi useampi kymmenen opiskelijaa tekee työn itsekseen.
- Voiko työn tehdä isommassa ryhmässä kuin pari?
- Voi, kun ryhmän koko on max 3 opiskelijaa. Ryhmän tulee toteuttaa lopputyöhön lisäominaisuuksia 5 pisteen verran, jotta saa saman arvosanan kuin kahden hengen ryhmät. Ts. lisäpisteitä aletaan laskemaan vasta 5 pisteen jälkeen.
- Saako työstä jutella kaverin kanssa?
- Saa tietenkin keskustella harjoituksissa jne, mutta joskun kaksi ryhmää palauttaa saman koodin, saatatte syyllistyä plagiointiin. Tästä syystä yhteistyötä tehneet ryhmät tulee ilmoittaa koodin kommenteissa tms.
- Raja menee siinä, että tehtävästä saa keskustella, mutta koodi pitää kuitenkin itse tehdä!
- Voiko työn palauttaa myöhässä?
- Ei kannata, sakotamme arvostelussa pisteitä (myöhästymisen kestosta riippuen).
- Jos työ on myöhästymässä perustellusta syystä, olkaa ajoissa etukäteen yhteydessä henkilökuntaan, niin katsotaan tilanne.
- Saako jonkun muun (tai netistä löytynyttä) koodia käyttää?
- Samalle kurssille osallistuvien koodia ei saa käyttää, vaikka ilmoittaisi lähteenkin. Ts. toisten lopputyöstä koodia ei saa kopioida omaan työhön.
- Muutoin saa, kunhan ilmoittaa mistä koodi on haettu (www-sivu tms), ettette syyllistyä plagiointiin.
- Mites tuo nuin plagiointi?
- Yliopistolla on ohjeet miten plagioinnin kanssa menetellään. Noudatamme niitä.