System update on April 6th from 00.00 to 02.00 UTC+3. Expect possible downtime during the maintenance.

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.
  • 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 int on 64-bittinen, joten se käy maksimissaan 64-alkioisen bittivektorin esitystavaksi ja sellaisenaan Map-tietotyypin avaimeksi eli Map<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.