Ohjelmointi 1/ Kysymyksiä ja vastauksia

Q/A uudet kysymykset on suljettu syksyltä 2023 ja loppu keskustelu käydään kurssin keskustelu-sivulla. Eli uudet kysymykset sinne sopivaan kohtaan.

Kysymykset ovat alun perin kotoisin demotehtävästä, missä sai esittää luennoitsijalle yhden kysymyksen. Vastaan näihin "henkilökohtaisiin" sitä mukaa kuin ehdin, mutta yleisempiin saa toki muutkin vastata.

Kysymisohjeet: Etsi huolella kategoria mihin kysymyksesi kuuluu. Paina sen jälkeen Lisää kysymys-painiketta.

Käy välillä katsomassa on kysymykseesi vastattu ja mikäli on, kommentoi viereen (klikkaa lohko ja käytä kynän kuvaa) että saitko haluamasi vastauksen. Jos et saanut, niin esitä jatkokysymys.

Vastaajat

  • VL: Vesa Lappalainen
  • AJL: Antti-Jussi Lakanen (Ohj1-kurssin luennoija keväisin)
  • MR: Mikko Röyskö, entinen tuntiopettaja ja Jypelin sekä ComTestin ylläpitäjä
  • ji: Jonne Itkonen, tausta-apu ohjelmointikursseilla

Vastausohjeet: Siirry himpun kysymyksen Q-kirjaimen vasemmalle puolella ja klikkaa syttyvässä sinivihreässä alueessa hiiren nappia ja valitse Edit. Kirjoita vastauksesi A: -kirjaimen perään ja laita vastauksen loppuun nimikirjaimesi. Jos sitä ei ole ylläolevassa listassa, niin lisää se sinne. Editorin saat tallennettua myös Ctrl-S. Jos editoit paljon, voit siinä vasemman reunan menussa pistää pallukan Editin kohdalle, jolloin editori aukeaa tuplaklikkauksella. Jos haluat täydentää jotakin vastausta, niin tee siihen uusi A: uudelle riville ja lopeta edellinen \-merkkiin. Muista laittaa vastauksen loppuun viiva (-) ja omat nimikirjaimesi. Voit myös tarvittaessa siirtää kysymyksen toiseen kategoriaan, ks. ohjeita

1. Kurssin suorittaminen

Q: Onko ohjauksiin osallistuminen pakollista? Voiko niitä tehdä itsenäisesti, omalla ajalla?

A: Eivät ole pakollisia ja saa tehdä omalla ajalla. -MR

Q: Missä vaiheessa kurssia kannattaa aloittaa harjoitustehtävän tekeminen?

A: Nyt pitää muistaa että kurssilla on kotitehtäviä (demoja) joiden tekeminen pitää aloittaa välittömästi kurssin alettua. Sitten on harjoitustyö, jonka raamien ymmärtämiseksi pitää odotella muutama viikko (jollei tutki materiaaleja jonkin verran etukäteen). Ensimmäisen HT-vaiheen palautus on viikon 39 lopussa (26.9 alkava viikko). Silloin pitää olla palautettu harjoitustyön suunnitelma. - VL

Q: Onko kurssilla käytetyt työkalut samoja kuin viime syksynä (-22)?

A: Periaatteessa voi käyttää samoja, mutta pääIDEksi on vaihdettu JetBrainsin Rider, koska se toimi samalla tavalla kaikissa käyttiksissä. - VL

Q: Millaisia arvosanoja ohj1-kurssista saa keskimäärin ilman ohjelmointitaustaa?

A: Otetaan vaikka viime syksy. Arvosanoissa: Image 80% aloittaneista (eli demo 1 tehneistä) pääsi kurssin läpi. Käytännössä lähes kaikki jotka tekivät tehtäviä kurssin loppuun asti. Heistä puolet sai 5/5. Käänteinen Gaussin käyrä on paha? Ei minusta! Jos tekee töitä, niin miksei ansaitse palkintoa? No entä "ilman taustaa"? Itse asiassa aikaisemmat tilastot jopa näyttävät, että "tausta" voi olla rasite. Alkukurssista mennään rinta rottingilla, kun asiat tuntuvat helpolta. Ja silloin ei huomata, että uuttakin pitäisi oppia ja ollaan tilanteessa, jossa muuta ajavat ohi ja laivaa ei ehdi enää kääntää. Toki on niitäkin taustan omaavia, jotka ymmärtävät haasteen ja saavat kasvatettua omaa osaamistaan kurssina aikana. Heille on omia Guru-tehtäviä. Kurssi on kuitenkin tehty ajatuksella, että taustaa ei ole, mutta valmius työntekoon ja oppimiseen pitää olla. Se mikä yllättää on, että koko ajan pitää mennä eteeenpäin ja kurssin vaatimus noin 15 h/vko ajankäyttöstä ei ole vitsi. Eli taustan puutteesta ei kannata olla huolissaan :-) - VL

Q: Jos olisit itse nyt Ohj1 kurssilla, minkälainen olisi sun viikkoaikataulu opiskelun suhteen?

A: Se on aika hyvin kotisivulla. Tuossa alla kertauksena - VL

# viikkorytmi

Q: Onko oletettavaa, että ilman aiempaa kokemusta tuo 15h/vko riittää myös arvosanan 5 tavoitteluun? Vai kannattaako varautua isompaan työpanokseen?

A: Huomattavaahan on että tuon on keskimääräinen aika. Yksilöerot tulevat sitten suurempaan merkitykseen. Mutta "keskimääräiselle" opiskelijalle on tehtävissä tuossa ajassa. Voi jopa olla niinpäin, että joku "parempi" ottaa oikein kunnianhimoisen harjoitustyön ja saa sen kimpussa käytettyä yöt ja päivät. Toki se maksaa aikanaan takaisin. 5/5 arvosanaan ei tarvita kuitenkaan mitään ihmesuorituksia. Ja tasaisella, hieman etukenossa olevalla työtahdilla ei tule edes stressiä. - VL

Q: Onko harjoitustyön tekemiseen kuluva aika otettu huomioon kurssin arvioidussa 15h/vko työmäärässä, vai lisääntyykö viikoittainen työmäärä todennäköisesti loppua kohti? Oletetaan, että työskentelee ohjeistuksen mukaisesti.

A: Jos tekee työtä tasaisesti, niin sitten pitäisi riittää. Toki jos tekee harkkatyötä vaan päivää ennen takarajaa, voi viikon tunnit paukkua. - VL

Q: Onko kurssi vaikeampi suorittaa etäopiskeluna?

A: Ensimmäinen koronavuosi meni paremmin kokonaisuutena kuin koskaan aiemmin. Viime syksy tosin vielä paremmin. Enemmän se on kiini itsekurista, että saa järjestettyä aikaa tekemiselle. - VL

Q: jos kurssi arvosana on heikompi kuin itse toivoo, miten voi asiaan vaikuttaa vai onko ainoa vaihtoehto tehdä kurssi kokonaan uudestaan.

A: Noinhan ei voi käydä jos tekee ahkerasti demoja. Jos siitä saa 6p ja vielä muutaman ajoissa palautetusta HT:ta, niin pitää lähinnä olla totaalinen muistinmenetys jos ei samoja asioita osaa tentissä. Kyllä tosi harva on saanut vähemmän kuin ansaitsee tai jos on saanut, tietää siihen itsekin syyn :-)
Onhan tenteistä olemassa vielä uusinnat, mutta toivon, ettei kenenkään tarvitse niihin tulla. - VL

Q: Minulla on pöytäkoneessa Windows ja läppärissä Mac. Voinko tehdä sekaisin itsenäistä työskentelyä Windowsilla ja tulla pääteohjaukseen Macilla, vai kannattaako valita yksi tapa?

A: Jos osaat siirtää tiedostoja noiden välillä, niin Visual Studio Code ja Rider toimivat samalla tavalla molemmissa, joten voit työskennellä aina sillä mikä on käytössä. - VL

Q: Onko kaikkia kurssilla tarvittavia työkaluja pakko lataa omalle tietokoneelle vai onko kurssin tehtäviä/demoja mahdollista tehdä koulun tietokoneilla?

A: Kyllä on helpointa että työkalut ovat omalla koneella, niin voi työskennellä silloin kun se sopii. En yhtään vieroksuisi asennushommaa, se on osa mihin on pakko tottua jatkossa. Tällä kurssilla se on vielä pientä oikeisiin hommiin verrattuna :-) - VL

Q: Jos olen jollain viikolla estynyt osallistumaan demojen palautustilaisuuteen, riittääkö demojen palautusvideon katsominen?

A: Riittää, kunhan korjaa sitten omat vastaukset. Toki et silloin voi kysellä. - VL

Q: Kurssilla voi suorittaa lisäosia harjoitustyön yhteydessä. Missä vaiheessa pitää tehdä päätös haluaako lisäosia tehdä ja pitääkö lisäosien valmistua kurssin (eli syksyn) aikana vai voiko niitä jatkaa keväällä?

A: Voi tehdä keväälläkin. Parasta aikaa tietty on joulukuu jos varsinaisen kurssin on tehnyt aikataulussa, niin on sen puolesta vapaa. - VL

Q: Missä vaiheessa tulevaa harjoitustyötä olisi hyvä lähteä suunnittelemaan?

A: Mahdollisimman pian. Suunnitteluun ei anneta sen kummempia ohjeita vaan siinä on kyse jo olemassa olevasta mielikuvituksesta. Ohjaajilta toki voi kysyä paljon ennenkin takarajaa että vaikuttaako suunnitelma sellaiselta mitä voi viedä eteenpäin. - VL

Q: Teköälyn hyödyntämisen houkutus on valtava, erityisesti noihin Guru-tehtäviin; onko vain luotettava maailman oikeudenmukaisuuteen siinä kun jättää itse tehtävän palauttamatta, vaikka osaisi tehdä sen ChatGPT:n avustuksella? Vai kannattaako silti palauttaa, ottaa pisteet ja todeta että maailmaa muuttuu. Niin koodaaminenkin. (Guru-tehtävistähän oli mahdollista saada jopa 2p)

A: Luuletko että Wilma Murto olisi voittanut pronssia MMissä jos olisi makoillut alastulopatjalla? Tarkoitushan ei ole kerätä pisteitä, vaan treenata ja kehittyä - VL

Q: Onko kurssilla jokin minimi määrä tehtäviä, joka pitää suorittaa?

A: Lue demojen pääsivu - VL

Q: Miksi tekoälyn käyttämiseen suhtaudutaan niin nihkeästi kurssilla? Jos ohjelman saa toimimaan tekoälyn avustuksella monen tunnin jumituksen jälkeen, niin miksi se olisi huono asia? Onko pakko lyödä päätä seinään?

A: Jos valmentaja käskee urheilijan juoksemaan 20 km lenkin ja ylämäki hengästyttää, niin ruvetaanko kävelemään tai jopa oikaisemaan? Jos jos ruvetaan, niin miten seuraavalla kerralla? Meillä on pääteohjaukset tuon takia että ohjaaja osaa neuvoa niin, ettei anna valmista vastausta. Tekoäly ei osaa! - VL

Q: Voiko Visual Studio Coden sijaan käyttää Visual Studio 2022? Onko näillä suurta eroa?

A: Me ei enää ylläpidetä Jypelin asetuksia ja ComTestin pluginia VisualStudiolle. Jos ne toimivat molemmat, niin VS on ok, mutta jos lakkaavat toimimasta, niin voi voi. Riderin etu on että samalla työllä saa kaikille käyttiksille. Mutten VS ja Rider ovat kyllä ok työkaluja kumpikin (Windowsille) - VL

Q: Näkeekö demoista suoritettuja pisteitä jostakin demoja tehdessä, vai näkeekö pisteet kootusti vasta kun palautusaika on mennyt umpeen?

A: Kunkin kerran kertyneet demopisteet näkee demosivun alusta ainakin sivun virkistyksen jälkeen. Ja sitten kurssin pisteet sivulta kun tuo laskennan laitan toimimaan. Ekalla kerralla siinä ei ole mitään uutta demosivun tietoihin verrattuna. - VL

Q: Käytän koneena Macia ja itselläni on käytössä Visual studio code. Yritän avata sitä macin päätteessä, joko pyynnöllä code tai vc, mutta ei silti avaa ohjelmaa. Osaatko sanoa mistä tämä johtuu ja miten saisin sen toimimaan?

A: Siellä on se ohje miten saa aukeamaan komentoriviltä. - VL

Q: Mitkä ovat Riderin ja Visual studio coden merkittävimmät erot?

A: Rider on tehty erityisesti C#-koodin kirjoittamiseen, kehittämiseen ja testaamiseen. - VL

Q: Saako demojen palautuksissa merkata paremmat pisteet, jos esimerkkivastaus on perjaatteessa oma (esimerkiksi automaattitestaaja sai väärin, koska eri operaatiojärjestelmä)

A: En ymmärtänyt kysymystä. Kyllä ohjelman pitäisi tehdä mitä pyydetään. - VL

Q: Onko mahdollista tehdä harjoitustyönä jokin ohjelma pelin sijaan?

A: Taitaa aika monessa paikassa olla sanottuna ettei tarvitse olla peli. Mutta pelikin on ohjelma. -VL

Q: Mitä tekstieditoria suosittelet Macille erityisesti? Notepadia siihen ei saa ladattua.

A: Kurssin työkaluissa on Visual StudionCode - VL

Q: Tätä on sivuttu jo aikaisemmissa kysymyksissä ja kurssin materiaaleissa, mutta onko vielä jotain tärppejä jos olosuhteiden pakosta suorittaa kurssin täysin etänä?

A: Enpä osaa antaa tärppejä, kun se tarkoittaisi sitten että joku muu asia ei muka olisi tärkeää. Eli teet vaan kurssia kuten muutkin, luennot vaan Zoomista tai videolta. Muuta eroahan siinä ei ole. - VL

Q: Voiko tentin tehdä tabletilla tai puhelimella? Vastataanko tentin kysymyksiin TIMissä vai jossain muualla?

A: Voi, mutta haastavaa kirjoittaa koodia puhelimella. En itse yrittäisi, koska näyttökin jää niin pieneksi. Eikö ole läppäriä? Muutamia tietokonepaikkoja voidaan järjestää jotta työskentely olisi fiksumpaa. Mutta itse pitää käydä treenaamassa ne luokkien koneet että ohjelmat toimivat kuten haluaa. Koe tehdään TIMIssä kuten demotkin. - VL

Q: Voiko kurssin suorittaa pelkällä harjoitustyöllä?

A: Ei voi, demojen osuus on merkittävä. Jos ei pääse tentistä läpi ja haluaa sen 1/5 demoilla, niin silloinkin HT pitää olla tehtynä. Hyvällä HT:lla toki oppii älyttömän paljon. - VL

Q: Pääseekö kurssista läpi, jos tekee kaikki demo tehtävät ja saisi tentistä 0 pistettä ?

A: Joo, mutta kukaan joka tekee kaikki tehtävät ei voi saada 0 p - VL

aluattamaan annetussa ajassa esimerkiksi sairastumisen takia niin miten menetellään?

A: Siksi kannattaa minimit tehdä ajoissa. Viikon sairauden kanssa sitten pitää neuvotella. - VL

Q: Saako harjoitustyön suunnitteluun ohjausta, jos suunnitelman mukaisessa harjoitustyössä ei jostain syystä esim. ole tarpeeksi monipuolista haastetta?

A: Saa, siksi on ohjaajat. - VL

Q: Osallistuin kurssille vasta sen toisella viikolla. Enkä kerennyt tehdä ensimmäisiä demoja määräajassa. Onko kurssi silti mahdollista suorittaa?

A: Joo, jäät ilman ekan kerran pisteitä, mutta saat sen kiinni äkkiä kun teet 8p/kerta. Eli nyt äkkiä hommaiin... - VL

Q: Jos per demoviikko voi kurssiarvosanaan saada vaikutusta demoista maks. 8p/viikko, kuitenkin läpipääsemiseksi vähintään pitää olla 5p/viikko joista 2 tähtitehtäviä, niin käykö noihin vähintään 5p tai enintään 8p pistekertymiin myös a) Ville-tehtävistä tulevat pisteet, ja b) muista kuin Tauno, Tehtävät 1-x, Bonus- ja Guru-tehtävistä saatavat pisteet? Esim. jos saa demo-pisteitä 5 siten, että tekee oikein 2 tähtitehtävää, 2 varsinaista tehtävää kuten teht. 1 ja teht. 2, sitten tekee Villen, tuleeko näistä se vähimmäisvaadittu 5 kurssin läpäisemiseksi? Entä jos tekee esim. Villen (1p), Taunon (1p), 2 tähtitehtävää (2p) ja yhden muun tehtävän (1p), kuten kurssin välipalaute-tehtävän, kelpaako nämä täyttämään oikein saatuina 5p vähimmäismäärän demoviikolta jos haluaa varmistaa kurssin läpäisyn 1/5 arvosanalla ensimmäisellä kurssiyrittämällä? Tärkein kysymys tässä on lähinnä, että mitkä tehtävät katsotaan siihen väh. 5 maks. 8 pistettä per demoviikko :

A: Alkuperäinen ajatus oli että se 5 olisi "vähintään" perustehtävistä, mutta se on lipsunut niin, että 2 tähti + 3 mitä vaan. Se 5/kertahan oli sille että taataan läpipääsy. Vähemmälläkin voi päästä (ja erityisesti jos joku kerta on jäänyt alle tuon) kun saa tentistä tarpeeksi pisteitä. Joka kerran ehdoton minimihän oli se että ne 2 tähtitehtävää on tehty. Ja koko kurssin osalta ainakin yhteensä 40%. Noin pienellä määrällä tosin tentti tulee ongelmaksi. Jos aidosti tekee 5 niistä perustehtävistä joka kerta, niin silloin tentistä kohtuullisen pistemäärän saaminen on lastenleikkiä. Lyhyesti: kun pitää ne molemmat rivit vihreänä, niin pääsee läpi vaikka tentti menisi huonosti". Kun kummassakaan rivissä ei ole punaista, saa osallistua tenttiin (jos ei ole, niin sitten pitää ottaa yhteyttä).

Siihen 8 maksimiin ei ole mitään loogista syytä asettaa rajoituksia siitä, mitä tehtävät ovat. Jokainen tekee niitä itselleen parhaiten sopivia tehtäviä ja toki saa tehdä enemmän kuin 8, pistelaskussa vaan yli 8/kerta pudotetaan 8p. Toivomushan olisi toki että jos kykenee tekemään niitä B tai G, niin tekee niitä ja silloin jos haluaa säästää, jättää "tyhmimpiä" perustehtäviä väliin. - VL

Lisää kysymys

**Q:** ⁞

**A:** -

2. Työkaluista

3. Eri kielistä

Q: Kuinka yleisesti käytetty/suosittu tällä kurssilla opittava ohjelmointikieli on?

A: Yksi yleinen lista, mistä noita seurataan on Tiobe. Tällä hetkellä C# on sijalla 5 (edellä Python, C, C++ ja Java). Yksi syy kielen valintaan on se, että siitä on helppoa siirtyä molempiin suuntiin, eli Pythonin suuntaan tai Javan suuntaan. Ihanne olisi C++, mutta se on valitettavasti aloittelijalle aika vaikeaksi koettu kieli C:tä puhumattakaan. Monessa yliopistossa nykyisin aloitetaan Pythonilla, mutta kurssin pitäjien mielestä (erityisesti minun) siitä on vaikeampi siirtyä sitten muihin kieliin. Kursseillahan ei opetella ohjelmointikieliä, vaan ohjelmointia. Sen kaveriksi tarvitaan joku kieli, millä ajatuksia esitetään. Yleensäkin annetaan liian paljon painoa sille, että "mikä ohjelmointikieli". Nyt aloittavien pitää uransa aika käyttää kymmeniä kieliä ja vielä enemmän erilaisia syntakseja. Sen takia meillä sitten seuraava kurssi, eli Ohj1 onkin Javalla, että nähdään kielen minimaalinen osuus ajattelussa. - VL

Q: Käytämmekö vain yhtä kieltä kurssin aikana?

A: C#-kieli on kurssin pääkieli, mutta joitakin esimerkkejä annetaan muistakin. Jo demossa 0 on se leikkirobotin kieli :-) - VL

Q: Jos ammattikoulussa lähdetään opettamaan nuorille noviiseille mikroprosessorin ohjelmointia C++-pohjaisella kielellä, eikö korkeakouluopiskelija voisi saman tien hypätä ihanteellisen ohjelmointikielen pariin?

A: Jos tarkoitat Arduinon käyttämää kieltä, niin noissa jutuissa käytetään murto-osaa C++:n ominaisuuksista ja se on melkoisen sama mikä se kieli silloin on. Silmukat ja ehtolauseet tuolla tasolla ovat aika samanlaisia kielestä riippumatta. Jos ihmiset olisivat innostuneempia tekemään pieniä sulautettuja juttuja, niin tuokin olisi ihan OK. Mutta C/C++ on kokeiltu aikanaan ja osin sekin toimii kun käyttää osajoukkoa jolla asiat saa turvallisesti tehtyä. Mutta jos suurin osa kurssin ajasta menee siihen että kerrotaan että älä vaan tee näin tai näin, niin kyseessä on enemmän kielikurssi kuin ohjelmointikurssi. En sanoisi C++:aa ihanteelliseksi, se mitä edellä sanoin viittaisi siihen, että jos oppii C++:lla kunnolla, niin sitten kaikkiin muihin kieliin siirtyminen on lasten leikkiä. Tuonne jää vain yksi mutta... - VL

Q: Mihin tarkoitukseen kurssilla käytetty kieli soveltuu parhaiten?

A: C# on kieli, mikä sopii kaikkeen mihin muutkin yleiskäyttöiset kielet. Toki tekoälyporukka ja fyysikot käyttävät nykyisin aika paljon Pythonia, eli siellä ehkä häviää Pythonille. Toisaalta C# on yksi kieli, jota käytetään Unityn (paljon käytetty peliframework) skriptikielenä. Enempi on kyse siitä, mitä kieltä käyttää organisaatio, jossa olet töissä. Jos on M$-talo, niin C# on aika todennäköinen kieli. Meidän kurssille C# sopii hyvin :-) - VL

Q: Minulla on sekä Windows-, että PC-kone. Kummalla kannattaa aloittaa kurssi, onko esim. näppäinkomennot helpompi jommalla kummalla?

A: Nyt en tiedä mitä PC-kone tarkoittaa :-) Perinteisesti PC on Personal Computer ja se käyttöjärjestelmä voi olla mikä vaan (jokin muukin kuin kolme tunnetuinta). Riderissa voi näppäinkomennot personoida niin, että ne ovat samat kaikissa käyttämissään koneissa. Komentorivinä kun käyttää Windowsissa Git Bash, niin silloin komennot ovat samoja macOS ja Linux Bash-shellien kanssa. Käyttäisin tehokkaampaa konetta. - VL

Q: Kummalla on parempi muokata koodia vai onko eroa kummalla muokkaa, tekstieditorilla (esim. sublime) vai rider?

A: Kun perusteet ja prosessin ymmärtää, niin Rider - VL

Ok! Kiitos vastauksesta!

11 Sep 23

Lisää kysymys

**Q:** ⁞

**A:** -

4. Kurssin sisällöstä

Q: Mikä on oikea vastaus tehtävään B2.?

A: Demojen vastaukset saa, kun deadline menee umpeen. - VL

Q: saako tehtävistä lisäpisteitä tenttiin?

A: Ei tenttiin, mutta kurssin kokonaispisteisiin, ks kotisivu. - VL

Q: Voiko kurssin aikana ilmestyä yllättäen isoja muutoksia materiaaliin, esimerkiksi uusia asioita?

A: Ilman muuta jos tarvetta tulee. Siksi TIMissä on ne lukumerkinnät, punaiset ja keltaiset, niin näkee jos jotakin uutta on tullut. - VL

Q: Kun kurssi aikanaan loppuu kunkin kohdalla omalla tavallaan, pääseekö kurssin materiaaleihin ja omiin vastauksiin käsiksi vielä kurssin jälkeenkin (sähköisesti, jos ei ole tilanne tulosteita)? Niin paljon hyvää tietoa, jota olisi mahtava saada tukimateriaaliksi itselle säilöön esim. kun joskus tarkoituksena jatkaa Ohj2-kurssille ja muutenkin työelämässä aiheeseen syventyen

A: Ilman muuta! Ei ole TIMin ideologian mukaista sulkea materiaaleja. Demojen palautusvideot saatetaan piilottaa. - VL

Mahtava juttu! :)

01 Oct 23

Lisää kysymys

**Q:** ⁞

**A:** -

5. Jypeli

Q: Jypeli vaikuttaa hienolta tavalta oppia tekemään pelejä helposti. Mutta minkä vuoksi Jypeli päätettiin tehdä C#:lla, eikä esimerkiksi Javalla?

A: C#:ille oli tuolloin n. 2010 kieppeillä ainoa järkevä pohjakirjasto, jonka päälle tuota ruvettiin tekemään. Javan grafiikka on ollut aina vähän niin ja näin. Lisäksi C# antaa mahdollisuuden kirjoittaa esimerkiksi

p1.X = 20;

kun sen sijaan Javalla joutuisi tekemään

p1.setX(20);

Ero on toki marginaalinen, mutta jos puhutaan 12v ikäisille suunnatusta kurssista, niin tuo ensimmäinen on likempänä sitä mitä koulun matematiikassa on käsitelty. Java ei koskaan ollut vaihtoehtona C++ pikemminkin.

Lisää kysymys

**Q:** ⁞

**A:** -

6. Yleistä ohjelmoinnista

Q: Mikä olisi kaikkein olennaisin oppi, joka tältä kurssilta olisi hyvä ottaa mukaan?

A: Ohjelmoinnin opiskelusta se, että vain tekemällä oppii. Mutta jos saa kohtuullisen käsityksen tällä kurssilla, niin ajatuksia voi laajentaa tulevaan käyttöön eri asiayhteyteen. Eli pitäisi oppia näkemään käytetyn kielen yli ja oppia periaatteita (ei mitään ulkoa) - VL

Q: Millaiset työkalut tämä kurssi tarjoaa muiden kielten oppimiseen?

A: Juuri tätä yriteään hakea käytetyllä kielivalinnalla. Javaan siirtyminen tosi helppoa, C++ mahdollista ja Python aika helppoa. Karkea kielten vaikeusasteikko voisi olla vaikeimmasta helpompaan: C++ - Java - Python. Eli pyritään olemaan tuolla asteikon keskellä kuitenkin kielellä, jota käytetään. Ohj2:ssa vaihdetaan Javaan ja sen perään tulee mm. C++ -lisäkurssi. Sitten Pythonia tulee erilaisilla tekoälykursseilla ja Web-palvelinohjelmoinnissa mm. Tavoite on että erillisiä kielikursseja ei sitten enää tarvittaisi, vaan kun ymmärtää periaatteet, niin ymmärtää että samat asiat sanotaa toisilla kielillä hieman eri syntaksilla, mutta pitkälle samalla idealla. Erikseen on funktionaaliset kielet, niiden ajatusmaailmaan tarvitaan omaa kurssia näiden kurssien jälkeenkin (tai jopa niiden takia :-). Ohjelmointi ei ole kieltä vaan ajatusmaailma. Kieliä tulee ja menee... - VL

Q: Mistä muista oppiaineista on hyötyä ohjelmoinnissa ja myös laajemmin tietotekniikassa (matematiikan lisäksi)?

A: Kaikesta missä joutuu ajattelemaan ja ratkomaan kohtuullisen monimutkaisia ongelmia ja johtamaan yksittäisistä tapauksista yleistyksiä. Toki jos aikaa käyttöliittymäpuolen juttuja tekemään, niin varmaan erilaisista ihmistieteistä. Mutta aina olisi hyvä olla osaamista jostakin muusta alasta, erityisesti sellaisesta johon joskus olisi mahdollisesti koodaamassa. Tällä hetkellähän erilaiset terveys- ja hyvinvointijutut ovat kovasti esillä. Ohjelmoinnissahan tärkeää on että ymmärtää sen alan mihin sovelluksia ollaan tekemässä. Muuten tulee sutta... - VL

Q: Millaista hyötyä on kurssilla, jos on aiemmin suorittanut esimerkiski java-ohjelmoinnin perusteet? Mihin kannattaa tällöin kiinnittää erityisesti kurssilla huomiota?

A: Onhan siitä iso hyöty ja on vähän kyseenalaista, että kannattaako tätä kurssia edes tehdä. Suurin ero on ehkä lähestyminen ohjelmointiin, joka meidän kurssilla on hyvin TDD-henkinen (Test Driven Development). Ja sitä kautta funktioiden korostaminen. Muissa oppilaitoksissa TDD nostetaan vasta myöhemmillä kursseilla. Vaikka suoraa korvaavuutta ei tästä kurssista myönnettäisikään, voi saada rekisteriin merkinnän x-opintopistettä ohjelmointia muussa yliopistossa. Ja sitten HOPS-ohjaaja voi laittaa, ettei Ohj1 tarvitse suorittaa. - VL

Q: Ohjelmointi (ja laajemmin koko IT-ala) on hyvin pitkälti ongelmanratkaisua. Tuleeko usein vastaan tilanteita, joissa ongelmaan vaan ei kertakaikkiaan löydy mitään validia ratkaisua? Lähinnä esimerkiksi työelämää ajatellen, joutuuko koskaan ns. "luovuttamaan"? Vai keksiikö joku aina jotain :)

A: Alallahan on olemassa esim ratkaisemattomia ongelmia, ks. Wikipediasta NP-ongelmat. Sitten on vain yksikertaisesti niin isoja juttuja että niiden kanssa on vaikea pärjätä, vrt. esim Sote-järjestelmät. Yleensä kuitenkin lopulta isoimmaksi ongelmaksi tulee resurssipula. Jonkin asian voisi hoidella, mutta kukaan ei anna siihen riittäviä resursseja. Ja joskus pienetkin asiat voivat viedä pitkän aikaa, esim tänään istuttiin Deniksen kanssa pari tuntia pohtimassa mikä meni pieleen luennolla 02 kun ihmiset eivät saaneet Luento 02-sivua auki. Ongelma saatiin jo päivällä pois, mutta itse vian pohjasyy jäi avoimeksi ja tunteja pitää laittaa lisää. Sivuaa kai hieman sitä rinnakkaisuutta mistä luennolla varoitin. Mutta kyllä tuokin vielä selviää. Jos ei selviä, niin sitten pitää rakentaa mekanismeja jotka estävät saman toistumisen. Ja varmaan välillä joutuu luovuttamaan ja keksimään muuta tilalle. Itselleni suurimpia epäonnistumisia on, kun asiasta ymmärtämättömät tekevät päätöksiä. Silloin voi olla, ettei heti tule unta... - VL

Q: Miten tarkemmin perustellen Git-versiohallinna liittyy käytännön ohjelmointiin? Luentomonisteen kohta 10 tai aiemmissa osioissa esille tuotu, sekä demoissa ja tehtävissä mainittu Git-versionallinta ei oikein ole vielä avautunut itselle. Tämä yksi monista mietteistä kurssiviikon 1 päätteeksi

A: Versionhallinta on tärkeä osa ohjelmistojen kehitystä. Sen avulla jokaisella kehittäjällä on lähdekoodin uusin versio saatavilla. Sen avulla voidaan myös palata ajassa taaksepäin vanhoihin lähdekoodiversioihin. Ajattele tätä kuin sinulla olisi peruuta-toiminto (undo), joka toimii vuosia tai vuosikymmeniä sitten tehtyihin muutoksiin asti. Lisäksi sen avulla voi kehittää hallitusti useita rinnakkaisia versioita ohjelmasta.

Yksin kehittäessä sen auttaa eniten lähdekoodin hallitussa varastoimisessa.
Myös se, että voi palauttaa käyttöön vanhan, tallennetun version lähdekoodista, on erittäin hyödyllistä, sillä se mahdollistaa isojenkin muutosten kokeilemisen. Versionhallinnan työkalut myös toimivat mille tahansa lähdeaineistolle, vaikkapa opinnäytetyön tekstille ja kuville.

Jokainen ammattimaisesti ohjelmistoja kehittävä taho, kaupallinen tai ei-kaupallinen, käyttää versionhallintaa. Monessa yrityksessä myös mielellään vilkaistaan työhön hakevan ohjelmistokehittäjän julkaisemat julkiset lähdekoodit versionhallintapalvelusta.

Tällä hetkellä versionhallinan työkalujen käytännön standardi on Git. -ji

Kiitos! Tuotakaan ei tullut miettineeksi, miten versionhallintapalvelut voivat näkyä ihan jo rekrytoinneissakin sillä, että tutkaillaan ohjelmistokehittäjän tekemisä julkisia koodeja. Kiinnostavaa!

Tämä vastaus selvensi versionhallinnan tärkeyttä useammalta aspektilta kuin osasin odottaa vastauksessa :)

11 Sep 23 (edited 11 Sep 23)

Q: Mihin aisoihin Ohj1-kurssilla kannattaa erityisesti panostaa, jos on kiinnostunut Front end -ohjelmoinnista?

A: Ei kannata erikoistua, vaan molemmat on osattava. Ja ensin opetella ohjelmoimaan, eli en osaa sanoa mikä olisi tarpeetonta. - VL

Q: Millainen on erinomainen ohjelmoija?

A: Empä tuota tiedä kun on niin monenlaisia erilaisia tehtäviä. Joku voi olla hyvä koodaamaan ja joku hyvä keskustelemaan asiakkaan/muiden kanssa, joku voi olla hitaampi, mutta tekee selkeää dokumentoitua koodia jne.. - VL

Q: Kuinka hyvän pohjan Ohjelmointi 1 ja 2 antavat ohjelmointiin. Pystyykö näiden jälkeen esimerkiksi kehittelemään itse sovelluksia ja pelejä puhelimelle?

A: Kyllä jos oma motivaatio on kohdalla. Puheintahan joutuu erikseen opettelemaan vielä. -VL

Q: Top 3 kielet mihin kannattaa perehtyä C# jälkeen?

A: Niihin mitkä tulevat vastaan jossakin tarpeessa :-) Java ja Python tulevat varmasti vastaan. Todennäköisesti myös C/C++. Jos Web-kodausta tekee, niin JavaScript/TypeScript tulevat eteen. Niin tai näin, kyse on ohjelmoinnista, ei kielistä. - VL

Q: Jos tämän kurssin pohjalta innostuu ohjelmoinnista (sivuaineopiskelijana), miten tämän kurssin jälkeen kannattaisi jatkaa?

A: Tietty Ohj2, web-ohjelmointikurssit, funktio-ohjelmointi, tekoäly, mahdollisesti algoritmikursseja. Ja erityisen kannattavaa on tehdä itselleen jotakin mielenkiintoista projektia - VL

Q: Pystyykö kurssin arvosanaa korottamaan jos esim saa 4/5? entäs jos saa 1/5?

A: uusintatentti! Kannattaa panostaa siihen ekaan tenttiin kunnolla niin ei tarvitse moisia miettiä. - VL

Lisää kysymys

**Q:** ⁞

**A:** -

7. Henkilökohtaista opettajalle

Q: Mikä on lempi väri?

A: Ei ole erityistä. - VL

Q: Mikä sai sinut aikanaan innostumaan ohjelmoinnista?

A: Se tuli vähän itsekseen kun halusi automatisoida asioita. Aluksi autosuunnistuksessa matkan laskentaa, tähtitornissa putken suuntausta. Sitten vähän teollisuusautomaatiota. Töissä tarvittavaa opiskelijoiden kirjanpitoa jne... Eli ohjelmointi on ollut työkalu, ei sinällään itse päällimmäinen kiinnostuksen kohde. - VL

Q: Mitä kaikkea olet automatisoinut arkielämääsi koskien?

A: Eiköhän Korppi ja TIM ole jo melkoisia automaatioita :-) Nyt on menossa aurinkopaneelien ja sähkön kulutuksen (siis säästön) tehostaminen. Erilaisia tuloslaskentoja lentämiseen ja voimisteluun mm on kyhätty. Ja sitten tietty kaikkea pientä mitä päivittäisessä työssä joutuu asioita toistamaan (jos ei voi tehdä TIMillä). Voisin luennoilal aina välllä näyttää joitakin esimerkkejä jos ehtii/muistaa. - VL

Lisää kysymys

**Q:** ⁞

**A:** -

8. Lajittelemattomat

Q: Nämä kysymys napit ei vieläkään toimi. Miksi?

A: Ei oltu ehditty antaa oikeuksia, nyt pitäisi toimia!

Q: Milloin lunttilappu aukeaa? Nyt antaa vain tekstin :This page does not yet exist.

You cannot create documents or folders here. To the first existing item (lunttilaput) in your search.

A: Oikeus oli unohtunut antaa, nyt on. - VL

Lisää kysymys

**Q:** ⁞

**A:** -

9. Vastauksia joihin ei ole kysymystä

Älä tähän lisää jos sinulla oikeasti ei ole vastausta!

Lisää vastaus

**Q:** ⁞

**A:** -

10. Ohjeita

Jos haluat siirtää kysymyksen toiseen kategoriaan:

  1. Mene kysymyksen kohdalle jonka haluat siirtää.
  2. Aukaise edit-menu (kynä tai kpl vasemmalla puolella klikkaa sinivihreää aluetta)
  3. Paina alhaalla olevaa kynän kuvaa.
  4. Valitse Cut paragraph.
  5. Mene kohtaa johon haluat siirtää kysymyksen.
  6. Ota taas edit menu ja sieltä Paste (jos se ei näy, paina taas kynän kuvaa)
  7. Avaa edit menu ja ota edit ja vastaile kysymykseen.

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.