Huomioita Koodaamosta. Merkitään havaintoja ylös ja käytetään mahdollisuuksien mukaan tutkimusaineistona.
Tässä dokumentissa ensimmäisen kevään ja kesän (2018) toteuma.
Ensimmäinen kerta 19.1.2018 klo 12:15-16:00
Lokia kirjoittivat Paavo, Jonne ja Ari.
Kysymyksiä ja vastauksia:
- Kannattaako mun tulostaa koodia paperille ja kommentoida sitä itselleni?
- Vastaus: Jos koet, että tästä on itsellesi hyötyä niin ilman muuta. Yleisemminkin ottaen paperi on oikein hyvä apuväline.
- Onko tarjolla tavallisia laskimia? Pitäisi näitä binäärilukuja laskea.
- Vastaus 1: Sulla on läppäri, johon lienee asennettu mm. laskukonetyyppinen ohjelma. Vastaus 2 (ehkä tärkeämpi): Kannattaa laskea käsipelillä.. voip oppia asian paremmin.
- Yksityiskohtia C++ -kieleen liittyen (grafiikkakurssilta).
- Vastausten yleiskuva: Tehtäväohjeen esimerkeistä, mallikoodista ja netin kautta löytyvistä spekseistä (esim. cppreference.com ) muodostuu pala kerrallaan kokonaiskuva. Koodia kannattaa tehdä pieni askel kerrallaan siten, että koko ajan ymmärtää, miten siihen asti tehty pätkä toimii (ja miksi!)
- Yleisiä kysymyksiä Pythonista ja sen syntaksista.
- Vastaukset sattuivat löytymään läsnäolleelta ohjaajalta. Kiteytetään niin, että kieltä oppii käyttämällä kieltä :). Tsekkaa myös Python-kurssin matskut
- Voisiko Koodaamossa olla tarjolla kahvia?
- Vastaus: Erittäin hyvä idea. Viedään eteenpäin!
- Mitä tarkoittaa pseudokoodi? (Ilmeisesti kurssimateriaalissa ei tätä avata?)
- Vastaus: se tarkoittaa koodin kaltaista esitystapaa. Esimerkiksi Pythonia päivittäin koodaava henkilö voi kirjoittaa "pythonin kaltaisen" algoritmin, jonka C#:ia päivittäin koodaava kaveri pystyy ymmärtämään.
- Mihinkähän "ansaan" olen astunut tässä Python-koodissa?
- Vastaus selvisi tyypillisellä menettelyllä eli varmistutaan rivi riviltä, että juuri siinä kohtaa ei ole ongelmaa. Lopulta havaittiin, että kirjastoaliohjelman kutsussa on oltava tarkkana, että kirjaston nimi mainitaan, ts. esim. "math.radians(kulma)"
- Huom: tämä oli ilmeisesti ihan itse viritetty ansa (jota ei kannattaisi virittää koskaan:)). Eli oli try-catch -rakenne, joka mitä luultavimmin ohitti hiljaa poikkeuksen, joka tulisi siitä, ettei tulkki löydä kirjaston aliohjelmaa. Haluat, että ohjelmasi kaatuu poikkeukseen, jolloin havaitset oikean ansan heti:)
- Ohjelma kaatuu, voitko auttaa?
- Vastaus: Ehkä.. mihin se kaatuu, ts. näytä virheilmoitus... Okei.. kirjasto-ohjelmisto heittää poikkeuksen ilmoittaen, että tiedostosta tulee UTF-8 -merkistöön kuulumaton merkki. Näytäpäs tiedosto, jota olet lukemassa? Onko sen koodaus UTF-8? Ai ei. Vastasiko tämä kysymykseen? Okei. :) [Huomautus jälkikäteen: Tämä tai muutkaan ylös kirjatut havainnot eivät ole missään nimessä v*uilua, vaan aivan objektiivista kertausta ongelmanratkaisumenettelyihin, joita koodarin toimintaan on syytä juurruttaa!]
- Pythonilla ohjelmoidessa pidä aina yhdessä ikkunassa auki python-tulkkia, jolloin voit testata siinä yksittäisiä lauseita, tai vaikka koodipätkiä tai funktioita, miten ne toimii. Niitä voi myös muokata, ja sitten kun koodipätkä toimii oikein, se on kiva kopioida takaisin sorsakoodiin.
- Miksei tää Pythonin JSON-lataus ja tallennus toimi niinkuin olettaisi?
- Vastauksen etsimisen prosessi: yksinkertaistettiin koodia niin, että siinä on vain ongelmakohta eikä muuta. Kokeiltiin kaikenlaista, luettiin speksiä ja lopulta löydettiin StackOverflowsta vastaus, jossa ounasteltiin, että Pythonin json-kirjastossa on tietyissä olosuhteissa ilmenevä bugi. Kierrettiin ongelma koodilla, jossa luodaan erilaiset olosuhteet json-kirjastolle. Tämä on elämää.
Toinen kerta, 26.1.2018
Ohjaajina vähintään pyörähtivät Vesa, Ari, Antti-Juhani, Ville T., Paavo, Jonne
Läsnä 1. tunnin aikana 8 opiskelijaa, 2. tunnin aikana 7 (osin eri henkilöitä), 3. tunnin aikana 4, 4. tunnin aikana 3. Yhteensä vähintään 10.
- Mikä on ongelma, kun Java heittää tällaisen poikkeuksen?
- Vastaus: Tutkitaan poikkeusilmoitusta tarkemmin ja haetaan lisätietoa netistä, toivoen että "juurisyy" löytyy, esimerkiksi ristiriita asennetussa versiossa ja siinä, jolle softa on tehty.
- Havainto Java-versioista: On esimerkiksi java 9 koneessa, jota normaalisti käyttää, eli se on asetettu path-muuttujaan, ja täytyy ajaa jar-ohjelma, joka toimii vain java 8:lla.
- Jos ei halua muuttaa path-asetuksia, niin komentokehotteella suunnistaa java 8 hakemistoon esim.
c:\Program Files\Java\jre1.8.1_121\bin, josta löytyy java.exe. Sitten ajaa komennon tarpeen mukaan, esim.java -jar [polku ajettavaan java8 jar-tiedostoon] - Varsin todennäköisesti netistä löytyy ohjeet, joilla saa asennettua rinnakkain useita Java-versioita; se olisi kestävämpi ratkaisu.
- Jos ei halua muuttaa path-asetuksia, niin komentokehotteella suunnistaa java 8 hakemistoon esim.
- Yksityiskohtia C++:sta grafiikkakurssiin liittyen.
- Vastaus (yleinen): Kyseisen kurssin päämääriin ja ohjeistukseen kuuluu, että opetellaan vieraamman työkaluston käyttöä. Tässä apuna mallikoodi, tehtäväohje, C++:n spesifikaatio, nettilähteet, kynä ja paperi sekä täsmäkysymysten esittäminen kollegalle. Viimeksi mainittuun Koodaamo on erinomainen lisämahdollisuus :).
- Algoritmit 1: Mitä tarkoittavat \(O(n)\) ja asymptoottinen luokka?
- Luettiin yhdessä luentokalvoa ja katsottiin myös kyseinen pätkä luentovideosta. Pohditaan lisäksi sanojen merkitystä raja-arvon ja ongelman koon kasvamisen kautta.
- Tutkielmiin liittyvää: Olisiko tämä sopiva lähdeartikkeli? (Ohjaajan näkemys oli, että hyvin potentiaaliselta vaikutti). Yksityiskohtia LaTeXin ja gradu3:n käyttöönottoon liittyen.
- Yleisiä vinkkejä LaTeXiin: gradu3 -tyylipohja tarvitsee joitain paketteja, joita ei välttämättä perusasennuksessa ole mukana. Niitä voi asentaa yksitellenkin, mutta LaTeX-järjestelmissä voi olla tarjolla myös joku "kaikenkattava" lisäpaketti. Esim. Ubuntussa
texlive-latex-extra-kaikenkattavan voi asentaa, jos on kovalevytilaa käytössä.
- Kahvin lisäksi toiveissa yleiskäyttöinen Koodaamo-käyttäjätunnus, jolla voisi logata tietoturvallisesti koneelle TIM-lokin tekemistä varten.
- Havainto Map/Dictionary -tietotyypin avaimesta silloin, kun avaimella kuvataan kohtalaisen lyhyttä bittivektoria: Kokonaislukutyyppi toimii, esimerkiksi Javan
long inton 64-bittinen, joten se käy maksimissaan 64-alkioisen bittivektorin esitystavaksi ja sellaisenaan Map-tietotyypin avaimeksi eliMap<long int, Jotakin>.
Kolmas kerta, 2.2.2018
Ohjaajina Ville T, Paavo, Jonne, Antti-Jussi.
"Asiakasmääriä": klo 12:49 5 koodaajaa. Klo 13:11 7 koodaajaa. Klo 14:13 6 koodaajaa. Klo 14:33 3 koodaajaa. Klo 14:49 5 koodaajaa (HUOM: vaihtuneita henkilöitä). 15:20 6 koodaajaa. 16:00 3 viimeistä koodaajaa.
Yksityiskohtia C++:sta liittyen grafiikkakurssiin. Syntaksijuttuja, mm. konstruktorin käyttö malliin "Tyyppi jutska(parametri, jos, toinenkin);". Kuormitetun operaattorin käyttö, esim. mallia "tulos = matA * matB * vec;"
Mitenkähän tämä tehtävä kannattaisi tulkita? (tehtävä, jossa lähetetään satelliittiin dataa Etelänavalta tjsp.)
- Ohjaaja teki oman analyysinsä eri opettajan tehtävänannosta - oli hyvin vastaava tulkinta kuin kysyjällä.
- Havaittiin porukalla yksi virhe yhdessä tehtävänannossa. Opiskelija laittoi havainnosta kommentin tehtävän yhteyteen (TIMissä kun voi).
- Pohdittiin, mitä eräs tehtävänanto tarkoittaa.
- Havaittiin, että luentomateriaalissa on kattava esimerkki.
Neljäs kerta 9.2.2018
Ohjaajina Ville T., Paavo
Käyttöaste:
- Klo 12:23 koodaajia 3 kpl
- Klo 12:42 koodaajia 8 kpl
- Klo 13:12 koodaajia 6 kpl
- Klo 13:14 koodaajia 9 kpl
- Klo 14:13 koodaajia 9 kpl
- Klo 15:36 koodaajia 7 kpl
- Klo 16:00 koodaajia 7 kpl
Kysymyksiä ja havaintoja:
- Pieniä yksityiskohtia grafiikkakurssiin liittyen: Etsittiin mallikoodista ristitulon, pistetulon ja koordinaiteittaisen kertolaskun toteutukset ja C++ -syntaksit. Kaava \(a\times b\) olisi ilmeisesti koodina Vector3f::cross(a,b)
- Miten liitetään yhdeksän PhysicsObjectia toisiinsa kokonaisuudeksi? Katseltiin JyPelin dokumentaatiota, josta toiveikkaasti löydettiin GameObjectin metodi Add() ...
- Algoritmit 1 -kurssin kakkosdemon O2-ohjelmointitehtävä on vaikea saattaa raiteille, jos perusohjelmointitaitoa ollaan vielä opiskelemassa alkuvaiheessa. Rohkeille ja sisukkaille teimme pienen mallikoodin, jonka ottamista oman vastauksen lähtökohdaksi suosittelemme lämpimästi: koodi
- Yksityiskohtia C#:sta ja ohjelmoinnista: muuttujan esittely vs. muuttujan käyttö, tarvittavien lisämuuttujien löytäminen kokeilemalla tehtävän ratkaisua käsipelillä. Virheilmoituksen tutkiminen IDE:ssä.
Viides koodaamo 16.2.2018
12-14
Ohjaajat: Tirronen
Ohjaajat: Lahtonen
13-15
Ohjaajat: Viinikainen
14-16
Ohjaajat: Nieminen
Ohjaajat: Lakanen
Käyttöaste
- Kello 12.24: 2 Koodaajaa
- Kello 12.38: 4 Koodaajaa
- Kello 12:47: 8 Koodaajaa
- Kello 13:03: 11 Koodaajaa
- Kello 14:42: 17 Koodaajaa
- Kello 16:03: 9 Soodaajaa
Kuudes koodaamo 23.2.2018
12-13
Ohjaajat: Nieminen, Viinikainen
13-14
Ohjaajat: Viinikainen, Lahtonen
14-16
Ohjaajat: Lakanen, ...
Käyttöaste
- Kello 12.18: 5 Koodaajaa
- Kello 12:23: 6 Koodaajaa
- Kello 12:32: 12 Koodaajaa
- Kello 13:55: 16 Koodaajaa
- Kello 14:45: 12 Koodaajaa
- Kello 15:35: 8 koodaajaa
Kysymyksiä ja havaintoja:
- Koodaajilla työn alla ainakin Ohjelmointi 1, Algoritmit 1, Web-palvelinohjelmointi, Tietokonegrafiikan perusteet
- Ohjelmointi 1:een liittyen "jumpattiin" yleisiä toimintatapoja: alustakirjaston (tässä JyPeli) dokumentaation lukemista ja oman koodin tarkkaavaista vertaamista annettuun esimerkkiin. Sieltä löytyy syyt ja korjauskeinot moneen ongelmaan :).
- Ohjelmointi 1:
- Miten fysiikkaobjektista tehdään läpikuljettava - makeoneway ei toimi
- ASCII Puun for-silmukassa piirtoon liittyviä haasteita, kuinka puu saadaan oikean muotoiseksi ja korkuiseksi
- comtest ei toimi visualstudion kanssa - asennuksessa mennyt jotain pieleen?
- luokan metodin käyttäminen - ensin pitää luoda olio, jotta metodia voi kutsua
- Tietokonegrafiikan perusteet:
- Miksi pallot eivät piirry? (Monia syitä, esim. ykkösmatriisin ones() luonti kohdassa, jossa oli tarkoitus tehdä identiteettimatriisi identity(); Pakko vaan epäillä omaa koodia kohta kohdalta, kunnes kummallisuus löytyy.
- Miksi ei voi käyttää valmiiksi annettua aliohjelmaa rekursioon? (Voisi, jos tekisi rekursion ilman aliohjelmakutsua, mutta...) Esimerkkikoodin piirtometodi on osa rajapintaa, ja kutsuvalla puolella ei saa olla tietoa rekursion aloituspisteestä eli juurisolmusta. Se on privaatti attribuutti.
Seitsemäs koodaamo 2.3.2018
12-14
Ohjaajat: Nieminen, Viinikainen, Itkonen,
14-16
Ohjaajat: Nieminen, Viinikainen, Itkonen, Lappalainen
Käyttöaste
- Kello 12.22: 7 Koodaajaa
- Kello 12.39: 9 Koodaajaa
- Kello 13.28: 7 Koodaajaa
- Kello 14.24: 7 Koodaajaa
- Yhteensä koko aikana n. 15 Koodaajaa.
Kysymyksiä ja havaintoja:
- Koodaajilla työn alla ainakin Ohjelmointi 1, Ekonojan kurssi x, Web-palvelinohjelmointi, oma assembler projekti, oma projekti json datan hakemiseen
Kahdeksas koodaamo 9.3.2018
Ohjaajat:
- 12-14: Ari Viinikainen & Ville Tirronen
- 14-16: Jonne Itkonen, Ari Viinikainen, Vesa Lappalainen, Antti-Jussi Lakanen
Käyttöaste
- 12:10: 3 Koodaajaa
- 12:30: 6 Koodaajaa.
- 14:27: 5 Koodaajaa.
- 15:05: 7 Koodaajaa.
- Yhteensä n. 9 Koodaajaa.
Kysymyksiä ja havaintoja:
- Visual Studio ja Intel Assembler: sijoitus menee oikealta vasemmalle.
- Koodaajilla työn alla aika lailla samoja projekteja kuin edellisellä kerralla.
- Timin ylläpidon tekemä päivitys esti demojen tekemisen (nimipalvelu ei päivittynyt, vaikka päivitys toimi).
Yhdeksäs koodaamo 16.3.2018
Ohjaajat:
- 12-14: Jonne Itkonen, Ville Tirronen
- 14-16: Jonne Itkonen, Paavo Nieminen, Ari Viinikainen
- Täsmäohjausvierailua tarjosi Tommi Lahtonen
Käyttöaste
- 12:15: 12 Koodaajaa.
- 13:48: 8 Koodaajaa.
- 14:27: 4 Koodaajaa.
- Yhteensä 13 Koodaajaa.
Kysymyksiä ja havaintoja:
- Työn alla Ohj1 ja assemblyä ja webiä & hötömölöä.
🐂A's koodaamo 23.3.2018
Ohjaajat:
- 12-13: Paavo Nieminen, Jonne Itkonen, Ville Tirronen
- 13-14: Jonne Itkonen, Ari Viinikainen
- 14-15: Ari Viinikainen
Käyttöaste
- 12:15: 3 Koodaajaa.
- 13:00: 5 Koodaajaa.
- 14:48: 4 Koodaajaa.
- 15:46: 2 Koodaajaa.
Kysymyksiä ja havaintoja:
- Työn alla Ohj1, konekieliohjelmointi & web.
- Mm. SVN:n käyttöä, tietokantahakuja, JyPelin tapahtumankäsittelijöitä
013's koodaamo 13.4.2018
Ohjaajat:
- Antti-Jussi Lakanen, Jonne Itkonen, Ville Tirronen
Käyttöaste
- 12:15: 2 Koodaajaa.
- 12:50: 4 Koodaajaa.
- 14:30: 6 Koodaajaa.
- 15:32: 2 Koodaajaa.
Kysymyksiä ja havaintoja:
- Työn alla Algoritmit 2. käyttöjärjestelmät & web.
12. koodaamo 20.4.2018
Ohjaajat:
- 12-: Paavo
- 13-: AJL, AJK
- 14-: AJL
- 14:30: AJL, Paavo
Käyttöaste
- 12:15 1 Koodaaja (Taitaa olla tenttipäivä...)
- 13:00 2 Koodaajaa
- 14:00 2 koodaajaa
- 14:20 6 koodaajaa
- 14:24 7 koodaajaa
- 14:40 8 koodaajaa
- 15:30 2 koodaajaa
- 15:45 0 koodaajaa
Havaintoja
Työn alla Käyttöjärjestelmien C-kieliharjoitus ja algoritmien ohjelmointitehtävä (union-find). Ohjelmointi 1:n harjoitustyö.
13. koodaamo 27.4.2018
Ohjaajat:
- 12-: Paavo
- 14-: AJL, Paavo
- 15-: AJL, Jonne
Käyttöaste
- 12:15 2 koodaajaa
- 12:30 3 koodaajaa
- 14:20 2 koodaajaa
- 15:30 3 koodaajaa
Havaintoja
- Työn alla ainakin Käyttöjärjestelmät (demo 3, demo 5) ja Algoritmit 2 ohjelmointitehtävä.
14. koodaamo 4.5.2018
Ohjaajat:
- 12-: Jonne, Paavo
- 13-: AJK, Jonne, AJL
- 14-: AJL, Sisko
- 15-: AJL
Käyttöaste
- 12:15 2 koodaajaa
- 13:15 2 koodaajaa
- 13:40 3 koodaajaa
- 14:15 _ koodaajaa
- 15:15 _ koodaajaa
Havaintoja
- Työn alla ainakin Assembler-ohjelmointi, alogritmit, käyttöjärjestelmät, koulutusteknologiat.
15. koodaamo 11.5.2018
Ohjaajat:
- 12-: Paavo
- 14-: Jonne,Ari
- 15-: Jonne, Paavo
Käyttöaste
- 12:15 0 koodaajaa (helatorstain jälkeinen välipäivä?)
- 13:33 2 koodaajaa (jee!)
- 14:10 3 koodaajaa (jee, jee!)
- 15:55 3 koodaajaa
Havaintoja
- Työn alla Käyttöjärjestelmät ja assembler-koodausta.
16. koodaamo 18.5.2018
Ohjaajat:
- 12-: Tommi, Paavo, Ville, Jonne
Käyttöaste
- 12:15 1 koodaaja
- 12:40 4 koodaajaa (osa HOPS-asioissa)
- 13:08 2 koodaajaa
- 14:30 1 koodaaja
- 15:55 1 koodaaja
Havaintoja
- Työn alla ainakin Web-ohjelmointia, HOPS-tarkisteita.
17. koodaamo 25.5.2018
Ohjaajat:
- 12-: Paavo
- 13-: Jonne, Paavo
Käyttöaste
- 12:15 1 koodaaja
- 13:00 3 koodaajaa
- 13:15 4 koodaajaa
- 13:27 5 koodaajaa
- 15:00 5 koodaajaa
- 15:15 4 koodaajaa
- 16:26 4 koodaajaa (hups.. kaikilla oli niin mukavaa)
Havaintoja
- Työn alla ainakin Käyttöjärjestelmät (demo 6, assembler), Tietokoneen rakenne ja arkkitehtuuri (Nand2Tetris). Assembleria muuten vaankin.
Kesäkoodaamot 2018
Kahden tunnin sessiot keskiviikkoisin, integroituna ITKST53:n ohjaukseen.
Ohjaajat:
- 12-14: Paavo
Käyttöaste:
- 6.6.2018 0 koodaajaa + 5 Ohjelmistoturvallisuuden tekijää
- 13.6.2018 2 koodaajaa + 2 Ohjelmistoturvallisuuden tekijää
- 20.6.2018 2 koodaajaa + 0 Ohjelmistoturvallisuuden tekijää
- 27.6.2018 2 koodaajaa + 3 Ohjelmistoturvallisuuden tekijää
- 4.7.2018 2 koodaajaa + 4 Ohjelmistoturvallisuuden tekijää
Keskimäärin siis 2 koodaajaa. Työn alla Ohjelmistoturvallisuus, Käyttöjärjestelmät, Web-käyttöliittymien ohjelmointi, oma harrastusprojekti assemblerin parissa.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.