-*- coding:utf-8 ; mode:org -*-

Käyttöjärjestelmät, kevät 2023.

Aloitettiin maaliskuussa jälleen copy-pastella vuoden 2022
toteumasta, paitsi että ajan hengen mukaisesti liitin tähän alkuun mun
(==Paavo) ensimmäisen keskusteluni ChatGPT:n kanssa.

Tämä on suunnitelma, joka muuttuu ajankäytön ja muun
perusteella. Pohjana on luentojen eteneminen edellisenä
vuonna. Ei mene pahasti vikaan, jos menee samalla lailla. Tosin
keväällä 2023 haluamme rikkoa kaavaa ja uudistua.

* Paavon ensimmäinen juttutuokio ChatGPT:n kanssa

Tuli ajankohtaiseksi ryhtyä osaksi vuoden 2023 sukupolvikokemusta, eli
tutustua ChatGPT:hen omakohtaisesti. Koska kurssin alkaminen oli
heräte, niin aihepiiri ensimmäiseen kysymykseenkin oli selviö.

** Juttutuokio ChatGPT:n kanssa

Näin meni juttutuokio:

Paavo: What is an operating system?

ChatGPT: An operating system (OS) is a software program that manages
the hardware and software resources of a computer system. It acts as
an interface between computer hardware and application software,
providing a set of common services for computer programs to use.

The primary functions of an operating system include managing the
computer's memory, processing tasks and scheduling, controlling input
and output operations, managing file systems, and providing a user
interface. An operating system also provides security measures, such
as user authentication and access control, to protect the system and
its data.

Common examples of operating systems include Microsoft Windows, Apple
macOS, and various versions of Linux. Each operating system has its
own unique features and characteristics, but they all serve the same
essential purpose of enabling users to interact with their computer
systems in a convenient and efficient manner.

Paavo: Repeat previous answer in Finnish.

ChatGPT: Käyttöjärjestelmä (Operating System, OS) on ohjelmisto, joka
hallinnoi tietokonejärjestelmän laite- ja ohjelmistoresursseja. Se
toimii rajapintana tietokoneen laitteiston ja sovellusohjelmiston
välillä, tarjoten yhteisen joukon palveluita ohjelmiin käytettäväksi.

Käyttöjärjestelmän tärkeimpiin toimintoihin kuuluu tietokoneen muistin
hallinta, tehtävien käsittely ja ajoitus, syöttö- ja
tulostusoperaatioiden hallinta, tiedostojärjestelmien hallinta ja
käyttöliittymän tarjoaminen. Käyttöjärjestelmä tarjoaa myös
turvallisuustoimintoja, kuten käyttäjän tunnistautumisen ja
pääsynhallinnan, joiden avulla järjestelmä ja sen tiedot ovat
suojattuja.

Yleisiä käyttöjärjestelmien esimerkkejä ovat Microsoft Windows, Apple
macOS ja erilaiset Linux-versiot. Jokaisella käyttöjärjestelmällä on
omat ainutlaatuiset ominaisuutensa ja piirteensä, mutta niillä
kaikilla on sama keskeinen tarkoitus mahdollistaa käyttäjien
vuorovaikutus tietokonejärjestelmiensä kanssa kätevällä ja tehokkaalla
tavalla.

** Analyysi

Tuokio oli lyhyt, enkä lähde kiistämään sitä, mitä ChatGPT tällä
kertaa rupatteli. En kuitenkaan tämän pidemmälle lähde tuottamaan
sillä kurssimateriaalia, koska (1) se olisi ensinnäkin plagiointia
siinä missä kenen tahansa tekeleen esittäminen omanaan ja (2) ChatGPT
on kielimalli, jonka tuottama sanajono ei välttämättä vastaa
todellisuutta lainkaan.

Uusi jännittävä työkalu meillä kuitenkin kielimalleissa näyttää
olevan, joten muistetaan ottaa niihin tuntumaa.

Jokainen meistä muistakoon nuo pointit plagioinnista ja faktojen
epävarmuudesta. Akateemisessa maailmassa nämä ovat synneistä pahimpia.

* Pelisäännöt videonauhoituksista

- Soveltuvin osin yritetään saada yhteisiä oppimistilaisuuksia
  nauhalle.

- Oletamme, että tallenteet katsotaan ja sisäistetään etenkin, jos ei
  päässyt paikalle.

- Poikkeus edelliseen voi olla, jos et näe tai kuule: etsimme silloin
  yksilölliset menettelyt, joilla voit seurata kurssia! (Sama poikkeus
  pätee muihinkin asioihin, joissa tyypilliselle opiskelijalle
  suunnattu tehtävä ei tosiasiallisesti ole mahdollinen.)

- Keväällä 2023 kokeillaan rohkeasti tällaista:

  "Luennot" ovatkin videotuotantotilaisuuksia, joissa on studioyleisö.

  Studioyleisö on siis opiskelijat, jotka pääsevät kulloinkin paikalle
  osallistumaan.

  Koetetaan rakentaa yhdessä studioyleisön kanssa aihepiirivideoita,
  joissa hyödynnetään live-interaktiota asian selkeyttämiseksi.

  Aihepiirit ja käsittely tapahtuvat tietysti linjassa kurssin
  osaamistavoitteiden, harjoitusten ja materiaalien kanssa. Kuitenkin
  niin, että studioyleisön osallistuminen, keskinäinen keskustelu ja
  kontribuutio tuotantoon mahdollistuu.

  Kertyvät aihepiirivideot ovat sen jälkeen käytettävissä kunkin
  aiheen opiskeluun.

- Videoiden julkaisussa on viivettä, joka johtuu muista
  työtehtävistä. Parhaimmillaan viive voi olla 1-2 arkipäivää, mutta
  esimerkiksi loppuviikon videot saattavat tulla saataville vasta
  seuraavalla viikolla.

- Emme jälkikäteen sensuroi, joten huomaa: Kun puhut, äänesi tulee
  julkaistavaan videoon - mahdollisesti hiljaisena, koska mikrofoni on
  kiinni luennoitsijan kauluksessa. Kysymykset ja kommentit yritämme
  muistaa toistaa mikrofoniin kotikatsojia varten ja kirjata pääkohdat
  muistioon tekstinä.

- Joskus vielä tekniikka pettää, jolloin itketään hetki ja eletään
  ilman kyseistä nauhoitetta. Aihepiirivideot voidaan aina tehdä
  seuraavalla kerralla uudelleen kertauksena ja oppimisen testaamisena
  :).

- Kun katsot jälkikäteen, kokeile katsoa nopeuttuna! (Mutta jos siitä
  aiheutuu pidemmän päälle huonovointisuutta tai muita oireita, lopeta
  kokeilu tai aloita siedätysharjoittelu 110% nopeudesta, sitten 120%
  jne.)

* Vuoden 2023 kulku tähän saakka:

** Luento 1:  (ke 22.3.2023) Aloitus, yleisinfo ja suoritusvaatimukset

Tästä voidaan lukea, mitä ensimmäisellä luennolla oikein tapahtui,
kunhan se on tapahtunut klo 14:15-16:00 keskiviikkona 22.3.2023.

Runkona on copy-paste viime vuodelta.

Luennon pitävät yhdessä vastuuopettaja Paavo Nieminen ja kurssin
toinen opettaja Jonne Itkonen.

*** Tämän päivän tavoite
    
Luennon päätavoite on kuvailla kurssin pakolliset suoritusvaatimukset
ja muu perusinfo.

*** Pakolliset suoritusvaatimukset, arviointi ja päivämäärät

Käydään läpi byrokratia ennen kuin mitään muuta:

- Käydään läpi määrälliset vaatimukset, jotka ovat jo näkyvillä myös
  nettisivulla: Pakolliset demot ja tentti.

  Demojen deadlinet: noin yksi viikossa, dedikset tulevat näkyviin
  Moodlessa.

- Vuonna 2023 *varaamme oikeuden* antaa kurssin aikana muutamia
  lisätehtäviä, joista saa tenttiin lisäpisteen, jos
  tekee. Tarkennetaan speksiä jos/kun, näitä mahdollisesti
  tulee. Kiinnitetään jo raamit: mahdollisuuksia tulee 0-3
  tenttipisteen arvosta, jos ollenkaan.

Tarkentavia kysymyksiä aloitusluennolla 2023:

- Ovatko viikottaiset deadlinet miten velvoittavia?

  Videotallenteella tarkemmin. Pääkohdat: Viivästymisestä ei
  sakoteta. Ohjeellisia dediksiä ahkerasti noudattamalla kurssin voi
  saada pakettiin 4. opetusperiodin aikana. Ohjausta ei ole
  mahdollista tarjota toukokuun 2023 jälkeen ja tehtävätarkastusten
  aikataulu harvenee merkittävästi.

- Onko viimeisessä demossa sama viikon aikataulutus kuin aiemmissa?

  Viimeinen tehtävä on työläin, myös riippuen siitä, kuinka paljon on
  ehtinyt hahmottaa asioista siihen mennessä. Sen kohdalla voi
  tarvittaessa priorisoida tenttiin valmistautumista ja viimeistellä
  viimeisen demon vaikka heti tentin jälkeen.



*** Vapaaehtoinen tarjonta: Sisussa olevat ryhmät ja ajankohdat

Käydään läpi, mitä tarkoittaa:

- Luento

- Open labrapäivä

- Laboratoriotyöt huhtikuussa

- (International students -ryhmä perutaan, mikäli tarvitsijoita ei ole)

Luentotallenteella tarkemmat selostukset näiden tilaisuuksien
roolista. Jos et kuule, pyydä toimittamaan tarkempi transkriptio. Itse
asiassa sellainen löytyi edelliseltä vuodelta. Tässä pääkohdat
tekstimuodossa:

- Selitys "Open labrapäivälle" noin viikottain: Ajankohta, jolloin
  kurssin opettaja hengaa ilmoitetussa luentosalissa. Voidaan
  käsitellä kurssin asioita tai muuta, tai tehdä vaan hiljaa omia
  hommia. Alkuperäinen nimi oli "Opettajan labrapäivä"
  hellittelymuodossa, mutta myös tulkinta "Avoin labrapäivä" vastaa
  toiminnon tavoitetta.

- Selitys "Laboratoriotyölle" huhtikuussa: Mahdollisuus tehdä demo 4
  ryhmätyönä paikan päällä. TODO: Varmistettava myös keväällä 2023,
  että Sisu-ryhmät toimivat niin, että ryhmävalintaa voisi niissä
  vielä vaihtaa... ehkä onnistuu vaikka kurssi on jo
  käynnissä.. ilmoittelemme, miten tässä käy. Itsenäisesti voi tehdä
  samansisältöisen harjoituksen, jos ei ole helppoa päästä paikalle.
  Itsenäisesti tehden menee todennäköisesti useampi tunti.

  Myös paikan päällä tehtävä muoto edellyttää materiaalin omatoimista
  opiskelua ennen ja jälkeen live-kohtaamisen. Suoritusmerkintä
  demosta siis kuitenkin mahdollinen lyhyen läsnäolotuokion
  perusteella.

Siinäpä yleisökysymyksineen tärkeimmät byrokratiasta, vaatimuksista ja
aikatauluista. Päästäänkö sitten jo byrokratiapullasta kivempiin
asioihin? Kyllä päästään.

*** Ryhmäkuva

Otetaan halukkaista opiskelijoista ryhmäkuva kurssin nettisivulle. Ei
huolta: Kuvan ottamisesta ilmoitetaan etukäteen, joten ehtii hyvin
piiloutua pöydän alle, jos haluaa.

Otettiin ryhmäkuva.

*** Tauko
Sitten tauko 12 minuuttia, klo 15:30 asti.

*** Kurssin kustomointi ja käynnistäminen

Kustomoidaan kurssin nettisivu, että päästään katsomaan sitä ja
sisältöjä tänään ja huomenna... koreografia on suoraan
osaamistavoitteiden äärellä: laitteet, tietokoneet, sovellukset,
pääteyhteys, kuori, komentojono eli skripti.

*** Tutustumista

- Esittelyt: opettajat (ehtivät tulla tutummiksi kurssin mittaan),
  opiskelijat, opiskelijoiden pääaineet

- Kartoitetaan kädennosto-otannalla seuraavat ensimmäisen luennon
  osanottajista:

  + Opiskelijoiden pääaineet:

    Tietotekniikka: valtaosa

    Tietojärjestelmätiede: muutamia

    Ketä muita on: fysiikalta, koulutusteknologialta, erillisinä
    opintoina suorittavia ...

  + Otannan perusteella tietotekniikkapainotteinen populaatio, mutta
    pyritään pitämään touhu hyödyllisenä kaikille.
  
Pidemmän kaaren tähtäyspisteet:

  + Esimerkiksi millaisiin käytännön asioihin tämä kurssi on
    ensimmäinen askel?

  Koreografia ryhmäkuvatiedoston kanssa näytti
  muutamia. Videotallenteesta puuttui Paavon mikrofonimokan takia
  ääni, joten sitä ei ole hyötyä julkaista. Lisää tulee heti huomenna.

** Luento 2:  (to 23.3.2023) Luentomuoto, demo-ohjeistus, varoitukset(!)
*** Päivän päätavoitteet:

- Jokainen pystyy aloittamaan demo 1:n tekemisen heti tämän luennon
  sisäistettyään.

- Sitä varten: käydään läpi varoitukset, joita demojen tekemiseen
  liittyy. Näytetään vähän, miltä homman pitäisi näyttää käytännössä,
  kun itse tekee.

- Jokainen tietää, mitä teoriapuolelta pitäisi lukea ennen kuin
  seuraavan kerran nähdään yhdessä.

- Eli toisin sanoen: Tämän kurssin opiskelu on kaikilla 100%
  käynnissä!

Jatkossa koetetaan studioyleisön kanssa tuotettavien
aihepiirikäsittelyjen avulla mennä asioita läpi juurta jaksaen,
käytännön esimerkkejä näyttäen ja auki selittäen. Tavoite on, että
viimeistään demojen 1 ja 2 jälkeen opiskelijat uskaltautuvat myös itse
kokeilemaan samoja juttuja omatoimisesti. *Turvallisuus- ja
mukavuussyistä* tällä luennolla käsiteltävät varoitukset on syytä
ensin sisäistää!

*** Infoa keväälle 2023

Eduskuntavaalien ennakkoäänestys on alkanut ja 2.4.2023 on pääpäivä!!

Muista äänestää omien arvojesi mukaan!!

Lisätietoa tämän viikon ehkä tärkeimmästä aiheesta, ainakin
tärkeämmästä kuin mikään yksittäinen opintojakso:

- https://vaalit.fi/etusivu

- https://www.jyu.fi/fi/ajankohtaista/arkisto/2023/02/jyvaskylan-yliopiston-toimintamalli-vuoden-2023-eduskuntavaaleissa

Poliittisesti neutraali, yliopiston ohjeistuksen mukainen tiedotus
päättyy. Siirrytään toissijaisempaan asiaan, eli tämän opintojakson
sisältöihin.

*** Mistä kurssiin liittyvät asiat löytyvät

- Käydään läpi, mistä kaikki kurssiin liittyvä löytyy (kaikkiin löytyy
  vähintäänkin aloituslinkki kurssin nettisivulta):

  + Kolme videokansiota: Yksi tämän vuoden luentotaltioinneille.
    Toinen erillisille, suoritusvuodesta riippumattomille
    opastusvideoille. Kolmas on viime vuoden lineaarinen luentosarja.

  + Näkymä tämän muistion HTML-tulosteeseen yliopiston
    gitlab-palvelussa. Aina viimeisin versio, jonka opettaja on
    muistanut työntää gitlabiin.

  + Luentomoniste

  + Demot ja niiden palautus Moodlen kautta:

    Demot on julkaistu toistaiseksi HTML-muodossa (linkki kurssin
    etusivulta). Toissa vuonna opiskelija teki CSS-tyylin; tällaista
    aktiivisuutta arvostamme!

    Ensimmäisen demon saa aloittaa sitten, kun luennolla on käyty läpi
    siihen liittyvät varoitukset.

    Palautuslaatikko avataan aikanaan, kun olemme testanneet sen
    toimivuuden. Asiat tiedotetaan joko yhteisissä tilaisuuksissa tai
    Moodlen Uutiset-viestissä. Ei tarvitse eikä kannata "pollata"
    muutosten syntymistä ennen tiedotuksia. Hoputtaminen ei nopeuta;
    asiat tapahtuvat maksimivauhdilla rajoitteiden puitteissa.

  + Moodle-ympäristössä on demopalautukset, vertaistukifoorumi ja
    pelkästään kurssilaisten tietoon tarkoitetut salaisuudet, kuten
    tallenteiden polkuavaimet, Zoom-huone ja vastaavat. **Älä vuoda
    näitä ulkopuolisille**.

  + Materiaalin reaaliaikainen tilanne löytyy Gitlabista. Päivitysten
    julkaisu useimmiten 1-2 tunnin kuluttua luennon
    päättymisestä. Gitlabista ei tarvitse välittää muiden kuin niiden,
    jotka haluavat kehittää materiaalia. Vedokset riittävät
    opiskeluun.

  + Aikataulut Sisussa - opetus pyörii niiden mukaisesti. Muutokset
    ovat mahdollisia, mutta Sisu-kalenterin pitäisi teoriassa pysyä
    ajan tasalla niistä.

  + Tenttikokoelma takavuosilta; sitä saa hyödyntää, ja tullaan
    käymään yhdessäkin läpi opintojakson mittaan.

  + Joitakin aiempien vuosien palautteita lähinnä tiedoksi ja merkiksi
    siitä, että palautteet luetaan ja niitä hyödynnetään erityisesti
    silloin, jos on kokeiltu jotakin aiemmasta merkittävästi poikkeavaa.

*** Muuta huomioitavaa ja tarkentavia kysymyksiä

Elikkäs perinteinen kysymys-/vastausosio tähän. Muistetaan katsoa,
että äänet on päällä mikrofoneissa ja silti varuilta muistot myös
tekstiksi.

Kysymyksiä keväällä 2023:

- Käydäänkö läpi erityisesti reaaliaikajärjestelmiä?

- Tuleeko yhtään Open labrapäivää ennen demo 1:n palautusta?
  Yritetään, ilmoitetaan jos tulee.


*** Ensimmäisellä luennolla käsittelemättä jäänyttä

Muistetaanpa vielä, mitä viime kerralla ei ehditty käsitellä, kun
luennon alku vähän viivästyi. Ainakin sisältö- ja
osaamistavoitekuvaukset. Kollataan livenä netistä:

- kurssin kuvaus opinto-oppaasta; myös suhde tulevaisuuden versioon
  "ITKA2030".

- HTML-vedos osaamistavoitteista ja niiden tausta-aineistoista.

[ Tauko tässä kohtaa. Aloitetaan teholla taas 13:25 ]

*** Demo 1 käyntiin siis

Pääteyhteys ja siihen liittyviä asioita:

- Luentomuoto ja kurssin työkalut alusta alkaen ja esimerkit näyttäen:
  pääteyhteys, bash-shell ja tekstipohjaiset työkaluohjelmat.

- Nykyinen suositus voisi olla oman käyttöjärjestelmän mukana tulevan
  pääteyhteysohjelman käyttely. Demotaan vaikka luentosalin
  Powershellistä.. Teknisiä ongelmia ja järjestelmäeroja
  todennäköisesti havaitaan, ja päämääränä on yhdessä setviä ne
  kuntoon vertaistukikanavan kautta mahdollisimman pian!

- Miten lähdetään tekemään demoa 1: Alkuvaroitukset ja toisaalta
  rohkaisu.

- Demojen tekemisen saa aloittaa vasta, kun on sisäistänyt varoitukset!!

- UNIX-käyttäjätunnuksen aktivointi https://sso.jyu.fi/ -palvelussa
  (ope vois varovasti näyttää, muistaen, että etusivu näyttää oman
  henkilöturvatunnuksen... eli note-to-self: tee toisella näytöllä
  tuo eka vaihe ja sitten vasta vedä videoituvaan näyttöön!)

- HUOM: Windows-pääteyhteysohjelman (esim. KiTTY) todennäköinen
  ääkkösongelma ja sen korjaaminen: Omissa asetuksissa todettava
  etäkoneen merkistö; meidän tapauksessa UTF-8 (tätä ei pystytty
  näyttämään 2020, kun opettajilla ei ole KiTTYä tai PuTTYä
  käytössä. Suositus toki olisi ettei opiskelijoillakaan olisi!!

  Voi olla asia, jota on syytä puida vertaistukikanavalla sitä mukaa
  kuin havaitaan ongelmia ääkkösissä tai missään muussakaan!

- HUOM: Älä ryntäile tehtäviä läpi nopean suorituksen perässä, vaan
  pyri sisäistämään - tee omia muistiinpanoja tärkeimmäksi kokemistasi
  asioista!


*** Sukelletaan luentomonisteeseen sivulta 1 alkaen (jos on aikaa)

Mikä dokkari? Kenen kaikkien tekemä? Miten tätä luetaan ja käytetään
luennoilla tai kotioloissa?

Aloita jo itsenäisesti, kuten ennakkotehtäväksi annetaan. Ensi
viikolla käydään siltä pohjalta yhdessä.

*** Ennakkotehtävät ennen seuraavaa luentoa:

Luettavaa:

- Luentomonisteen alkuosa eli esipuhe ja luvut 1-2. Jos tarvitset tai
  haluat niin myös pullantuoksuinen pehmojohdanto.

- Demo 1:n varoitukset ja ohjetekstit.

Tekemistä:

- Demo 1 työn alle.

Kun tapaamme seuraavan kerran, voidaan kenties jo ryhtyä kokeilemaan
aihepiirivideoita. Tai sitten jotakin muuta tilanteeseen ja kevään
kulkuun sopivaa sen pohjalta, mitä lukupaketti ja demon tekeminen ovat
siihen mennessä herättäneet ja tuottaneet itse kunkin muistiinpanoihin!

Ahkerasti käyttämään loput viikottaisesta 16 tunnin panoksesta tähän 5
opintopisteen kurssiin!

Muista kuitenkin myös lepo ja tyhjäkäynti! Se auttaa jaksamaan taas
toiminnan hetkinä.

** Luento 3:  (ke 29.3.2023) Luentomonistetta ja muuta materiaalia päin

*** Päivän päätavoitteet:

Rohkea yritys tuottaa joitakin "aihepiirivideoita", joilla vielä
käynnistellään kurssia ja tartutaan siihen kiinni. Ajankohtaisia
ja perinteisiä aiheita toisen viikon alkaessa:

- Tavoitepisteitä, motivointia ja "mindsettiä" 

- Sukelletaan järjestelmällisesti myös luentomonisteeseen

- Reaalimaailman dokumentaatio, jollaisen lukemistaitoon tämäkin
  kurssi koettaa valmentaa. (Viime vuonna ei ollut vielä 3. luennolla
  aikaa tähän; katsotaan miten 2023 näyttäytyy).

*** Infoa keväälle 2023

Aikataulutarkennuksia; mahdollisesti myös tiettyihin luentoihin:

- "Open labrapäivä" siirtyi nyt pääsääntönä perjantaille, joihinkin
  aamuihin ja joihinkin iltapäiviin, ja lisäksi joskus myös muulle
  päivälle.

  Syy: Koetin hajauttaa ajankohtia, jotta tietty viikoittainen
  päällekkäisyys ei kuitenkaan joka kerta estäisi osallistumasta. Oma
  mausteensa on muiden tapahtumien tilkkutäkki, joka on päässyt
  muodostumaan vuoden aikana omaan työkalenteriin ja joka oli myös syy
  lähteä raivaamaan nämä pois torstaiaamusta, johon on tullut juuri
  viikoittainen päällekkäisyys...

- Luento 4.5.2023 klo 10-12 saattaa vaihtua eri päivälle.

  Syy: Kurssisuunnittelun jälkeen on ilmaantunut aamusta iltaan
  kestävä kehityspäivä.

- Luennot 10.5. ja 17.5. saattavat vaihtua eri päivälle tai
  aikaisempaan kellonaikaan (suunniteltu alunperin klo 14-16).

  Syy: Kurssisuunnittelun jälkeen on ilmaantunut projekti, joka
  saattaa tarvita Paavoa Tampereella fyysisesti klo 16:30 alkaen
  yhteiskunnallisen vuorovaikutuksen tehtävissä. Ei vielä varmaa,
  kuinka paljon ja riittäisikö istua etänä Jykylästä käsin...

Paikkatarkennuksia:

- Yritin samalla istunnolla siirtää tulevia luentoja lähemmäs
  Agoraa. Auditorioita ei ollut edelleenkään vapaana, eikä uskallus
  vielä riittänyt irtautua auditoriomaisista tiloista.

- Kokeiltaneen uskallusta uudelleen, ja haetaan määrätietoisesti
  ajatusta tasalattiatilasta, jossa päästäisiin olemaan noin 50 hengen
  studioyleisön kanssa idyllisemmin kuin auditoriossa konsanaan.

  Toisaalta kiehtoisi käydä kerran elämässä vetämässä yksi Kunnon
  Luento yliopiston päärakennuksen isossa salissa... vaikka sitten
  huvin vuoksi.

Tilannekatsausta kevään kurssin kulkuun:

- Ilmeisesti ollaan oltu yksi viikko 100% käynnissä. Hienoa!

- Demo 1:n palautuslaatikkoon on tullut jo 56 palautusta. Ilmeisesti
  toimii.

- Perjantaina on ensimmäinen "Open labrapäivä". Siis mahdollisuus
  tulla kyseisen aikavälin sisällä joko Sisussa ilmoitettuun
  mikroluokkaan tai Moodlessa tiedotettuun Zoom-huoneeseen hengaamaan
  ja tarvittaessa kysymään.

- Kiitos hyödyllisen keskustelun käynnistymisestä Moodlen
  vertaistukiryhmässä. Antaa tulla lisää vaan!

*** Kohti aihepiirivideoita?

- Yksi olennainen tarve on saada aihepiirivideot järkevästi
  järjestykseen.. Opettajien TODO-listalle varsin pian: Rakennetaan
  listaus, jossa on linkit Moniviestimeen sekä suositukset siitä,
  missä vaiheessa, missä järjestyksessä ja mihin asiaan liittyen
  mikäkin video olisi hyvä kurkistaa.

- Dialogisuutta ja "näätäilyä" vuosimallia 2023 voi olla tulossa:

  Mikä "näätäily"? Tsekataan vuoden 2020 opiskelijapalautteesta; katso
  luentovideolta...

  Ennakkotiedotuksena, että jotakin vastaavaa saatetaan tehdä tänäkin
  vuonna osana aihepiirivideoiden tuottamista. Silloin siis
  aihepiirinä jonkin seikan tai tenttitärpin ympärillä tapahtuvaa
  näätäilyä tositarkoituksella.

- Näätäily tarkoittaisi jotakin tällaista:

  + Tullaan kokeilemaan minikeskusteluja ja tenttitärppien pohtimista
    vieressä istuvien kanssa. Emme tee sitä vielä tänään, jotta tämä
    ennakkotieto ehtii käydä mielessä eikä touhu tule yllätyksenä
    sitten, kun se tulee.

    Toimintaa mahdollisesti tukisi tilaisuuden siirtäminen
    auditoriosta tilaan, jossa on tasalattia ja käänneltävät pöydät.

    Ei huolta: Ei koskaan turhan päiten; ei koskaan aiheen vierestä;
    ei koskaan sellaista, mitä luentotallenteen katsojan ei tulisi
    miettiä kotona yksikseen samassa kohtaa luentosarjaa.

    Miksi: Koetetaan hyödyntää maksimaalisesti kaikki käytössä olevat
    puitteet, joista fyysinen luentosali (tai muu huone) on nyt yksi.

Kysymys- vastausosio:

- Herätti ajatuksen, mitä 2020 palautteen antaja on tarkoittanut
  "kanssaopiskelijoiden yksityiskohtaisilla kysymyksillä, joihin
  vastaukset löytyvät materiaalista". Onkohan kysyjä ollut joku
  "kympin oppilas", joka on jo lukenut kaiken valmiiksi.. eli
  tällainen [suodatettu tästä kohtaa eräs termi pois..] ... 

  Johtaa miettimään, mitä uskaltaa kysyä, ettei "kympin oppilaat"
  turhaudu! Miten näitä pitäisi käsitellä?

  "Itse ainakin tulen tilaisuuksiin enemmän tai vähemmän lukematta
  ennakkoon ainakaan kovin tarkoin"

  Voisiko joskus vastata "Tämä asia käsitellään materiaalissa, ei
  mennä siihen nyt..." Onko tämä vähän töykeätä tai lannistavaa?
  Olisin siitä itse vähän silleen, että "aha, soronoo sitten, pitäkää
  tunkkinne ja kurssinne kympin oppilaille.."

  Huom: On myös mahdollista, että kysyjä on nimenomaan jo lukenut sitä
  materiaalia ja koettanut ymmärtää!!

Sitten... Syteen tai saveen: Ensimmäinen videotallenne Stop-napista
poikki, ja seuraava toivottavasti alkamaan!

*** Tauko 15 minuuttia. Jatketaan tasan 15:10!

*** Aihepiiri 1: Aasinsiltoja aineettomasta kulttuuriperinnöstä heksavedoksiin

"Aasinsiltoja aineettomasta kulttuuriperinnöstä heksavedoksiin,
tutkivaan oppimiseen ja hauskanpidon kautta kynän ja paperin
arvostuksen palauttamiseen"

Pohjavireitä: Toivottu "mindset" eli suomeksi "mielenlaatu",
"asenne". Se olisi tutkiminen, omatoiminen selvittely, mahdollisesti
joistain aiheista innostuminen, hauskanpito. Käytännön keinojen
hyödyntämistä.

Tämäkin alkuluennolla mainitsematta jäänyt saattaa niveltyä tarinaan
jollain tavoin:

Yksityiskohta Paavon opetusfilosofiaan liittyen: Kynä ja paperi
2020-luvulla ja kenties jotain muutakin, millä saattaa olla kaikuja
myös kevään 2023 tapahtumiin luennoilla.

- Opiskelutapoihin kokeiltavaksi.. Kynä ja paperi, meibi ehkä?
  Tuostakin vielä neuvoa muistiinpanojen tekemiseen:
  http://lsc.cornell.edu/how-to-study/taking-notes/cornell-note-taking-system/


Aasinsillan alkupää eli se aineeton kulttuuriperintö oli siis
demoskene, joka on nyt luetteloitu virallisesti aivan jouhikanteleen
soiton ja rakentamisen sekä sahansoiton rinnalle:

https://www.aineetonkulttuuriperinto.fi/assets/kansallinen-2020-fi2.pdf

https://wiki.aineetonkulttuuriperinto.fi/wiki/Demoskene

Videolla aasinsilta johtaa takaisinmallinnuksen taitoihin ja
tietoturvasovelluksiin. Matka taitetaan biteistä ja heksaluvuista sekä
komentorivityökaluista puhuen.

*** Tältä päivää oli tässä

Huomenna jatketaan jo alle 24 tunnin kuluttua siitä, mihin tänään
jäätiin.

Kalibroidaan tämän päivän kokemusten pohjalta.

Nähdään siis jo aika pian!

** Luento 4:  (to 30.3.2023) Asiassa eteenpäin 
*** Tämän luennon tavoite

- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Demo 2 ohjeteksteineen ja monisteen
  luvut 1-4. Ja aina aiemman kertaamista "uusin silmin"!

- Koetetaan tehdä mahdollisesti aikaakin kestäviä aihepiirivideoita,
  studioyleisön tarkkaavaisten huomioiden ryydittämänä.

*** Tilannekatsaus kevääseen 2023

- Demoja on palautettu jo tosi hyvin: Tänään klo 10:31 oli 80
  opiskelijalla Demo 1 tilassa Palautettu. 4 enemmän kuin viime vuonna
  tässä vaiheessa. Voititte siis alkukiihdytyksen viime vuoteen
  verrattuna. Mahtavaa!! Keep it comin'!

  Ryhdymme tarkastamaan näitä sitä tahtia kuin vaan
  ehditään. Uutiset-viestikanavalle tulee viestiä siinä vaiheessa, kun
  jokin merkittävä etappi on saavutettu.

- Tänä lukuvuonna opetuksessa on ensi viikolla pääsiäistauko, jolloin
  opettajat yrittävät pitää näpit erossa opetusasioista. Se on meille
  hieno mahdollisuus tehdä tutkimusta, kehitystä ja
  rästitöitä.

  Jokainen opiskelija saa hyödyntää viikon haluamallaan tavalla, eikä
  esimerkiksi vertaistukikanavalla keskustelu ole
  kiellettyä. Ilmoitettuun viikoittaiseen työmääräarvioon (16 tuntia
  viikossa tehokasta opiskelua) ei ole laskettu pääsiäisviikkoa.

- Huomenna on ensimmäinen Open labrapäivä.

Kysymys-vastaus-osio:

- Voiko demoja palauttaa uudelleen, jos esimerkiksi labrapäivässä
  huomaa, että osaisikin tehdä sen nyt paremmin?

  Opettajien TODO: Yritämme laittaa Moodle-asetukset kuntoon siten,
  että olisi mahdollista päivittää aiempaa vastausta siihen asti, kun
  tarkastus tapahtuu...

  Aiemmin hyväksyttyä ei sitten tarvitse palauttaa uudelleen.

- Jos olen aiempana vuonna tehnyt jo vaikka demot 1 ja 2, mutta sitten
  jäänytkin kesken, niin kuinka toimin?

  Palauta uudelleen joko aiemmin tehty tai nyt uusin tiedoin
  paranneltu vastaus. Meitä ei haittaa, jos vastaustiedoston nimi on
  esimerkiksi vastaus22.txt eikä vastaus23.txt.

- Jos olen aiempana vuonna tehnyt demot 1-5 ja puuttu vain 6, miten toimin?

  Ota yhteyttä - puljataan sitten erikseen, erityisesti jos tentti on
  suoritettu jo aiemman opintojaksototeutuksen puitteissa.

- Milloin demotehtävät tyypillisesti aukeavat?

  Tyypillisesti palautuslaatikko aukeaa viikon toisen luentokerran
  jälkeen.

  Huomautus: Etupainotteisesti saa tehdä viime vuoden versioita
  demoista.

Sitten aikailematta tämä video-osuus päätökseen ja toiveikkaasti
aihepiirivideon tallennus käyntiin.

Opettajat muistavat tarkistaa, että mikrofonit ovat päällä...

*** Aihepiiri: Demo 2 alkuun

Käydään läpi demo-ohje ja näytetään malliksi vähän esimerkkiä, miten
ryhdytään tekemään. Mutta ei toisteta sitä, mitä lyhyessä lisävideossa
jo selitetään screenistä. Katso se erikseen sitten demoa tehdessä!

Pari muistutusta työvälineistä:

- Suositeltavin tapa on ottaa yhteys oman tietokoneen kuoresta
  esimerkiksi komennolla "ssh omatunnus@jalava.cc.jyu.fi" 

- Jos näyttää, että osa teksteistä puuttuu, se voi johtua
  väriasetuksista (taustaväri sattuu olemaan sama kuin jonkin tekstin
  väri). Koeta saada säädettyä omassa pääteyhteysohjelmassa näitä
  jostakin "Settings/Preferences/Asetukset/Ominaisuudet"-valikosta tai
  vastaavasta.

- Varmista, että merkistö on omassa pääteyhteysohjelmassa UTF-8, jota
  etäkoneemme käyttävät. Ääkkösten näkymisessä ei saa sietää ongelmia
  hetkeäkään!

  (Esimerkiksi PuTTYssä oletuksena on merkistö Latin-9, mistä joutuu
  täysin turhiin vaikeuksiin! PuTTyn asetukset kannattaa tallentaa,
  jos sitä käyttää - sillä säästää monta turhaa minuuttia hukka-aikaa)

- Muistaisikohan mainita vähintään ohimennen, että demoissa käytettävä
  komento "echo" on vuonna 2023 jo standardista poistuvaksi merkitty
  ominaisuus. Ollakseen "future-proof", sen tilalla saa halutessaan
  opetella käyttämään kuorikomentoa "printf".

  (Saatiin tähän kysymykseen vastaus: En muistanut mainita tätä
  videolla ohimennenkään. Tulee hyvin esiin myöhemmin, ei hätää.)

*** Tauko 13 minuuttia. Jatketaan tasan 13:10.

Tauon jälkeen opettaja laittaa mikrofonin päälle ja tarkistaa äänet!!
Ja muistaa laittaa nauhoituksen päälle.

*** Aihepiiri: Luentomoniste ja muu oppikirjallisuus

Sukellus luentomonisteeseen sivulta 1 alkaen.

Mikä dokkari? Kenen kaikkien tekemä? Miten tätä luetaan ja käytetään
luennoilla tai kotioloissa? Mitä siitä tullaan käymään läpi ja missä
opintojaksototeutuksemme tilaisuuksissa?

Mitäs sitten, jos katsot tätä aihepiirivideota joskus tulevaisuudessa,
kun luentomonisteen versio on erilainen kuin tässä videossa nähtävä?

Käydään läpi, mihin tänään ehditään. Tavoitteena alustaa lukuun 4
asti!

Tähän tarvittaessa muistiinpanoja, mitä tuli käytyä.

Lisäksi: Mitä muita oppikirjoja maailmalla on?

Kysymys-vastaus-osio:

- Onko luentomonisteessa ja opintojaksolla käytettävä kieli C eikä
  C++?

  Kyllä.

- Jos kerran käydään läpi konekieltä, niin eikös se ole eri
  tietokonelaitteissa erilainen?

  Kyllä.


*** Aihepiiri: Informaation valtatien päässä on speksi?

Eli reaalimaailman dokumentaatio, jonka etsimis- ja lukemistaidot ovat
tärkeä osaamistavoite.

Otetaan tässä kohtaa ensi kosketus oikeisiin dokkareihin. Näihin
pyritään palaamaan jatkossa tuon tuostakin.

Kaikenlaista on tarkoitus opetella tutkimaan omatoimisesti, kun ensin
on kiinnostus ja halu. Loppu on sitten teknistä: miten löydetään
speksejä, mitä niistä etsitään, miksi ja millä tavoin?

Heti kärkeen: Mikä ihmeen POSIX? Tuo nimihän alkaa esiintyä demoissa
enenevässä määrin. Kysytään Vikkelästi Googlelta (KVG) ja edetään siitä.

Todennäköisesti muutenkin on mieltä askarruttamaan jäänyt kysymys:
"Mikä oikeastaan on 'rajapinta' nyt tämän kurssin määritelmän
mukaan?"

Vastaus tulee kurssin mittaan konkreettisina esimerkkeinä: POSIX
(käyttöjärjestelmärajapinta), C99 (ohjelmointikielirajapinta, osa
POSIXia), AMD64 (prosessorilaiterajapinta), SysV ABI AMD64
Supplement (sovelluksen binäärirajapinta).

*** Seuraava ennakkotehtävä

Luettavaa:

- Luentomonisteen luvut 1-4.

- Demon 2 ohjetekstit.

- Huomaa, että myös aiempiin on aina hyvä palata "uusin silmin", kun
  asiat tarkentuvat myöhemmissä kohdissa.

Tekemistä:

- Demo 1 valmiiksi ja palautusjärjestelmään!

- Demo 2 työn alle.

Huomioitavaa:

- Jo luvussa 3 on kuoressa tehtyjä esimerkkejä, joita on tarkoitus
  alkaa kokeilla luovasti myös itse sitten, kun demo 1 & 2 hahmottuu
  ja tekstimuotoinen koneen käyttö alkaa olla turvallisen tuntuista ja
  omalla mukavuusalueella. Koetetaan päästä siihen pisteeseen pian.

- Demoilla 1-2 haettava tavoite on saada kuoren, pääteyhteyden ja
  screenin käyttö tuotua omalle mukavuusalueelle! Tämä vaatii paljon
  harjoitusta ja energiaa, joka on sitten koko myöhempää elämää varten
  alta pois!

- Monelle nämä alkupään asiat ovat jo vanhaa tuttua asiaa. Haasteemme
  sille porukalle: Jakakaa viisautta ja kokemusta niille, joille asia
  on uutta. Omalta kohdalta koettakaa hioa omaa tutkivaa asennetta ja
  viedä omaa osaamista seuraava askel pidemmälle. Esimerkiksi
  POSIX-standardiin tutustuminen tai uusien ominaisuuksien etsiminen
  tutuista työkaluista on toivottavaa.

- Muistutellaanpa, että 5 opintopistettä 8 viikossa tarkoittaa
  keskimäärin 16-17 tuntia viikossa tehokasta tekemistä. Muista tauot
  ja lepo, koska muuten ne varsinaiset tekemisen hetketkään eivät ole
  niin tehokkaita kuin voisivat olla!

Sunnuntaina 2.4.2023 käy äänestämässä eduskuntavaaleissa omien
arvojesi mukaisesti.

** (Tämän vuoden pääsiäistauko, 1 viikko, tapahtui tässä kohtaa)

** Luento 5:  (ke 12.4.2023)  (P/J) Aihepiirivideoita
Yritetään päästä tykittämään tasan 14:15. Ei ihan päästy. Jatkossa
yritetään!
*** Päivän päätavoitteet:

- Aiheiden järjestelmällistä läpikäyntiä. Esilukemistona tähän asti
  oli: monisteen luvut 1-4 ja demojen 1-2 ohjetekstit.

- Kokeile tehdä muistiinpanoja paperiin; esimerkiksi avainsanoja,
  joista haluat kysyä tarkennusta, kun tulee kysymys-/vastaushetki.

*** Infot keväälle 2023 ja oikeutettu mainos

Tilannekatsausta:

- Vertaistukikanava kukoistaa! Hieno homma!

- Aihepiirivideoiden ja tekstimuotoisten muistiinpanojen sijoittelu ja
  tiekartta hakevat muotoaan. Todetaan kurssin nettisivulta tilanne,
  johon ennen pääsiäistaukoa ehdittiin: Uusi org-tiedosto
  materiaalivaraston juuressa ja siihen suora linkki nettisivulta.

- Demojen tarkastukset ovat nyt alkaneet. 

- Pääsiäistauko ja tämän viikon väitöstilaisuus tekee vielä pientä
  käynnistysviivettä.

- Videotallenteet melko todennäköisesti viivästyvät tällä
  viikolla. Syy on huominen väitöstilaisuus...

- Siihen liittyen mainos: Väitöstilaisuudet ovat julkisia, ja niiden
  on tarkoitus olla sekä kaikelle kansalle että oman talon
  opiskelijoille ikkuna tutkimuksen maailmaan. Huomenna Joakim Linja,
  ensi viikolla Karo Saharinen. Tiedossa olevat väitökset löytyvät
  aina tuolta:

  https://www.jyu.fi/fi/ajankohtaista/kokoelmat-rss-feedeja-varten-tiedekunnat-ja-yksikot/vaitos-it

  (joka löytyy hakukoneella tyyliin "väitökset jyu it")

  Esimerkiksi huomenna käyttöjärjestelmäluennon jälkeen vaan kaikki
  katsomaan, miten kakkosohjaajan korvat punastuu vastaväittäjän
  esittäessä vastaväitteitään :-).

- Huomenna annettaneen tehtäväksi demo 3 ja seuraavalla viikolla
  demo 4. Siihen tulee sitten liittymään Sisussa näkyvät
  "Laboratoriotyö"-sessiot, joista tarkempia tietoja ensi viikon
  info-osuuksissa. Yritetään säätää siten ja kokeilla vaikka
  perjantain labrapäivässä käytännössäkin, että Sisussa voisi
  valikoida itselle sopivimman ajankohdan. Itsenäinenkin suoritus on
  mahdollinen, mutta kenties hiukan työläämpi kuin samat asiat läpi
  rientävä läsnäsessio.

- Perjantaina päivystysluonteinen "open labrapäivä" tällä kertaa
  iltapäivällä klo 14-17. Käyttäkää hyödyksi! Viime kerralla saatiin
  hyvin vastauksia kaikenlaiseen.

*** Tauko 13 minuuttia. Jatketaan tasan 15:05

Opettajat tarkistavat mikrofonit ja ääniasetukset!!
Alkuun copyright notice näkyviin.
Muistetaan painaa Record-nappia.

*** Aihepiiri: "Hei, maailma" ja mitä siitä saadaan irti

Tutkivaa selvittelyä ja uteliasta takaisinmallintelua erästä avointa
ja ilmaista luentomonistetta mukaillen. Reaalimaailman dokumentaatiot
mukana kuljettaen ja niiden roolia asia kerrallaan selkeyttäen.

- Muistetaanpa pistää siis uhallakin lisää copyrightin alaista kamaa
  ruutuun samalla kun myös on sormet savessa pääteyhteydellä
  palvelinkoneeseen.

- Opettaja ottakoon lunttilapukseen toiselle näytölle luentomonisteen
  "Hei maailma" -osion. Se tarjoaa tekstimuotoisen koonnin tämän
  aihepiirin asioista.

- Tavoitteena live-koodaus ja live-tekeminen. Jokainen vahingossa tai
  tahallaan tuleva virhe ja ihmetys on olennainen autenttisen
  käsittelyn osa. Yritetään saada virheitäkin ruutuun!

- Samoin "setä saattaa selittää puutaheinää"; oikea totuus on
  spekseissä, joita tässä samalla nähdään.

Käsitteitä, joita olisi hyvä käydä läpi, esimerkiksi:

- Tiedosto, tiedostojärjestelmä, hakemisto, tiedostonimi, tiedoston
  aikaleimat, käyttöoikeudet, sisältö, heksavedos, i-solmu,
  lähdekoodi, kääntäjä, kääntäminen, kohdekoodi, kohdetiedosto,
  suoritettava ohjelmatiedosto, linkittäminen, lataaminen,
  suorittaminen, konekieli, prosessori, prosessi, prosessinhallinta

- Minkä tason rajapintadokumentaatio ottaa kantaa mihinkin?

Tässä aihepiirivideossa päästiin kivasti käsiksi moneen
ylläolevista. Luonteva jatko tälle on pureutua konekieleen,
prosessoriarkkitehtuuriin, debuggeriin ja takaisinkäännökseen.

Teemme sen heti huomenna 2023...


Mahdollista tässä tai ehkä mieluummin jossain muussa aihepiirivideossa
(kun tämä olisi nyt ehkä vaan yhteen esimerkkikokoonpanoon liittyvä):

- Malliksi muita rajapintoja kuin kurssin esimerkkeinä olevat: vaikka
  ARM-manuaali (erilainen prosessoriarkkitehtuuri), C# library APIs,
  Java API, OpenGL grafiikkarajapinta, ...muita? Ihan vaan nopeesti
  malliksi siitä, millaisten asioiden otsikossa tai ensimmäisessä
  lauseessa sanotaan "This is an API / collection of APIs".

*** Muita aihepiirejä, jos aikaa jää

Ideakuvastoa sopivista aihepiireistä:

- Jokainen speksi voisi ansaita oman täsmäkäsittelynsä.

- Leikkitietokoneet?

- "Kysytään ChatGPT:ltä" on nykyään aina hyvä aihe..

*** Lukupaketti lähipäiville meillä olisi olemassa ja tiedotettuna
Tällaisten parissa mielellään oltaisiin työskentelemässä:
- Monisteen luku 3 "Hei maailma - johdattelua tietokoneeseen".
- Monisteen luku 4 "Konekielisen ohjelman suoritus".
- Demojen 1 ja 2 ohjetekstit ja omatoimiset kokeilut.
- Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
  17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
  muuten ne varsinaiset tekemisen hetket eivät ole enää tehokkaita!

*** Tältä päivää oli tässä

Huomenna poimitaan suoraan siitä, mihin tänään jäätiin.

** Luento 6:  (to 13.4.2023)  (P/J) Karhuluento ("opettajat opettaa")
*** Infot keväälle 2023

- Ei juuri kummempaa. Kurssi rullaa eteenpäin

- Tänään tärkeintä meidän talossa on Joakimin väitöstilaisuus klo
  12:15

- Demon 2 tekemisen jälkeen on erittäin hyvä hetki katsoa muutama
  niihin liittyvä opastusvideo erillisten videoiden kansiosta
  Moniviestimessä!

*** Tämän luennon tavoite

- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Demo 3 ohjeteksteineen, monisteen
  luvut 1-4 uusin silmin ja aiempaa vahvistaen. Ihan alkua luvusta 5.

- Jatketaan eilisestä aiheesta aihepiirivideota.

*** Seuraava ennakkotehtävä

Luettavaa:

- Luvut 1-4 uusin silmin, vahvistaen ja sisäistäen.

- Demon 3 ohjetekstit.

- Lukua 5.1 antamaan lisävaloa edellisiin. Ei vielä pidemmälle.

Tekemistä:

- Demo 2 valmiiksi ja palautusjärjestelmään!

- Tarkista demoihin 1-2 liittyviltä erillisvideoilta, että olet
  oppinut niissä käsitellyt asiat. Videot syntyivät 2 viime vuoden
  aikana palautteeksi useiten havaituista ongelmista ekoissa demoissa.

- Demo 3 työn alle.

- Tee käytännön kokeiluja esitetyistä asioista!
  
Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!

Yleisökommentti luvuista 1-4:

- "Aloitin tapani mukaan lukea vähän myöhemmin, ja huomasin, että
  lukemisto onkin aika tiukkaa. Erityisesti termejä tulee paljon ja ne
  pitää sisäistää, tai muuten menee ihan pihalle. Vaatii paljon fokusta."

- Havaintoa kompattiin. "Huomaan avaavani Googlen ja tarkistavani,
  mitä termi tarkoittaa."


*** Demo 3 esittely ja lukujen 3-4 konkretiaa

Käydään läpi demo-ohjetta ja näytetään malliksi vähän esimerkkiä,
miten ryhdytään tekemään.

- Luvun 3-4 aihepiireissä demon 3 "kickstarttia" ja yhtymäkohtaa
  monisteen ja demoharjoitteiden välillä. HUOM: demossa 3 vähän
  lupaillaan, että luennolla on näytetty debuggerin käyttöä, joten se
  on syytä tulla tässä samalla.

  Ehditäänkö esimerkiksi käynnistää debuggeri ja kokeilla "disassemble
  /mr main". Tästä on hyvä jatkaa myöhemmin, kun kaikki on ensin
  päässeet ohjeen kanssa hiukan kokeilemaan.

*** Tauko 13 minuuttia. Jatketaan tasan 11:20

Tarkistakaa mikrofonit.
Copyright-kalvo!
Nauhoitus päälle!

*** Aihepiirivideo: Hei maailma jatko-osa, debuggeri ym.

Eilisestä jatkuu suoraan. Eli siis:

*** Aihepiiri: "Hei, maailma" ja mitä siitä saadaan irti lisää

Tutkivaa selvittelyä ja uteliasta takaisinmallintelua erästä avointa
ja ilmaista luentomonistetta mukaillen. Reaalimaailman dokumentaatiot
mukana kuljettaen ja niiden roolia asia kerrallaan selkeyttäen.

- Muistetaanpa pistää siis uhallakin lisää copyrightin alaista kamaa
  ruutuun samalla kun myös on sormet savessa pääteyhteydellä
  palvelinkoneeseen.

- Opettaja ottakoon lunttilapukseen toiselle näytölle luentomonisteen
  "Hei maailma" -osion. Se tarjoaa tekstimuotoisen koonnin tämän
  aihepiirin asioista.

- Tavoitteena live-koodaus ja live-tekeminen. Jokainen vahingossa tai
  tahallaan tuleva virhe ja ihmetys on olennainen autenttisen
  käsittelyn osa. Yritetään saada virheitäkin ruutuun!

- Samoin "setä saattaa selittää puutaheinää"; oikea totuus on
  spekseissä, joita tässä samalla nähdään.

Käsitteitä, joita olisi hyvä käydä läpi, esimerkiksi:

- Tiedosto, tiedostojärjestelmä, hakemisto, tiedostonimi, tiedoston
  aikaleimat, käyttöoikeudet, sisältö, heksavedos, i-solmu,
  lähdekoodi, kääntäjä, kääntäminen, kohdekoodi, kohdetiedosto,
  suoritettava ohjelmatiedosto, linkittäminen, lataaminen,
  suorittaminen, konekieli, prosessori, prosessi, prosessinhallinta

- Minkä tason rajapintadokumentaatio ottaa kantaa mihinkin?

Tässä aihepiirivideossa päästiin kivasti käsiksi moneen
ylläolevista. Luonteva jatko tälle on pureutua konekieleen,
prosessoriarkkitehtuuriin, debuggeriin ja takaisinkäännökseen.

Teemme sen heti huomenna 2023...


Mahdollista tässä tai ehkä mieluummin jossain muussa aihepiirivideossa
(kun tämä olisi nyt ehkä vaan yhteen esimerkkikokoonpanoon liittyvä):

- Malliksi muita rajapintoja kuin kurssin esimerkkeinä olevat: vaikka
  ARM-manuaali (erilainen prosessoriarkkitehtuuri), C# library APIs,
  Java API, OpenGL grafiikkarajapinta, ...muita? Ihan vaan nopeesti
  malliksi siitä, millaisten asioiden otsikossa tai ensimmäisessä
  lauseessa sanotaan "This is an API / collection of APIs".





*** Kenties: Luentomonisteen teemojen valaisua

Vilkaistaisiinko luentomonistetta kevään 2023 meneillään olevan
"lukupaketin" kohdilta...

Pitäisi saada käytyä muisti ja suoritussykli, koska seuraavaksi tänään
aletaan katsella täsmälleen sitä asiaa käytännössä
AMD64-prosessorissa. Demo 3:ssa on tarkoitus kokeilla näitä ihan itse.

** Luento 7:  (ke 19.4.2023) (P/J) Karhuluento ("opettajat opettaa")

Yritetään käynnistää tasan 14:15! Säädöt kestävät joskus, kun ollaan
"kiertolaisina" erilaisissa luentosaleissa.

*** Päivän päätavoitteet:

- Ensi viikon kuvio selväksi: Demo 4 ohjetestit luettuna, mahdollisuus
  tulla paikalle johonkin 2 tunnin mittaiseen
  istuntoon. Osallistuminen toivottua, mutta ei pakollista. Myös
  itsenäinen suoritusmahdollisuus on. Näistä tarkemmin kohdassa
  "Infoisku keväälle 2023" heti alla.

- Asioiden järjestelmällistä käsittelyä eteenpäin aihepiirivideoiden
  muodossa.

Tänään vielä "Karhuluento". Huomenna voisi olla lisäksi jonkinlaista
Näätäilyä tenttitärpin parissa. Esimerkiksi kokeiluluontoisesti tauon
jälkeen, viikon viimeisen luentotunnin ajan. Ryhmäkeskustelu ei
pamahda yllättäen eteen, kun se on nyt etukäteen luvattu :).

*** Infoisku keväälle 2023

- Opintojaksototeutus kulkee kuin juna: Vertaistukikanava jyllää ja
  Open labrapäivässä toimintatavat ja mielikuvamallit oikenevat. Sen
  voi oikein kuulla, miten päässä humisee, kun asiat selkenevät. Jee!

  Studioyleisö voisi antaa tällä perusteella ansaitut aplodit
  itsellemme ja kurssikavereille tässä vaiheessa!

- Pieniä säätöjä opetustiloihin tulee, kuten tähänkin
  asti. Esimerkiksi huomenna ollaan Alfa-salissa eikä yliopiston
  päärakennuksella.

- Ensi viikolla tapahtuu "Demo 4 porukalla" - mitä tämä tarkoittaa!?

  Tutustu jo tällä viikolla Demon 4 ohjetekstiin, joka kertoo C-kielestä.

  Ilmoittaudu Sisussa itselle sopivaan "Laboratoriotyö" -sessioon.

  Tule paikalle näkemään porukkaa livenä, niin saat demon 4 suoritettua.

  Mutta jos on flunssaoireita, pysy kotona.

  Itsenäinen suoritusmahdollisuus tietenkin on, mutta se avataan
  myöhemmin, ettei jäädä sen takia kotiin jumimaan, että demo on jo tehty.

  Oppimiseen pelkkä suoritus ei riitä, vaan tarvitaan aikaa, kokeiluja
  ja toistoja asian parissa. Ei siis mitään uutta auringon alla.

- Luettavaa lisää poikkeuksellisesti jo tänään:

  Demo 4 ohjeteksti on ennakkolukemistoa ensi viikon ryhmätöihin.

  Päivitetty tälle vuodelle. Ei muuta kuin lukemaan!!

  Myös monisteen luku 5.2 liittyy aiheeseen, joten ryhdy silmäilemään
  sitäkin.

  Kaikki loput demot täsmentävät näitä aiheita lisää, joten
  "alkujärkytys" on normaali olotila eikä se haittaa vielä tässä
  vaiheessa. Koeta ymmärtää mahdollisimman paljon, mutta anna armoa
  itsellesi, jos kysymyksiä herää enemmän kuin ehtii saada vastauksen.

*** Lukupaketti tällä hetkellä:

- Demo 4:n ohjeistus (maanantaihin mennessä luettuna)

  Täsmennys: Tässä vaiheessa kyseessä on "demo 4" eli d04_c.html
  Vasta ensi viikolla on "demo 4b" eli d04_miniasmit.html

- Monisteen lukua 5 eteenpäin (alustavasti)

- Aiempia asioita uusin silmin ja kertaillen, kuten aina.


Sitten asiaan tänään: Aiheita järjestelmällisesti eteenpäin.

*** Aihepiiri: Demo 4 alkukäynnistys

Käydään läpi demon 4 ohjeistusta.

*** Tauko 9 minuuttia.

Jatketaan tykitystä klo 15:30 tasan.

*** Aihepiirivideo: C-kielen roolista tässä maailmassa

Huomio keskustelusta, jota ei ollut tarkoitus nauhoittaa. Nauhoitetaan
kuitenkin.

Vastuuvapauslauseke: Osa keskustelusta saattaa sisältää puhujien omia
mielipiteitä, jotka eivät välttämättä ole Jyväskylän yliopiston
virallinen kanta.

Herätteenä oli yleisökysymys: Miksi yliopistossa ei aloiteta opiskelua
C-kielestä?

Ensimmäinen esimerkkivastaus: Koska se on aivan kauhea kieli.

Videolla paljon lisää dialogia asiasta.

Jatkokysymys: Mistä kielestä olisi hyvä aloittaa ohjelmoinnin opetus?
Mitä vaihtoehtoja voisi olla, ja miten niitä voisi perustella?

On muuten perusteltukin, tutkimukseen pohjautuen!! Paljon erilaisia
vaihtoehtoja.

C:ssä on historian taakkaa.

Herää relevantti jatkokysymys: Miksi sitten jossain vaiheessa pitää
opetella C-kieltä?

Keskustelua studioyleisön kanssa:

Mitäs tehdään sen asian kanssa, että opetellaan tässä matkan varrella
aika monia erilaisia kieliä, jotka meinaa mennä sekaisin päässä?
"Osaat pikkuisen jotakin kaikenlaisesta, mutta et oikein mitään
kunnolla?"

Olisiko mahdollisesti parempi, että opeteltaisiin ensin yksi kieli
ihan tosi hyvin ja vasta sitten joku seuraava?

Vastauksen aihioita: TIOBE-listaus.. yleispätevät käsitteet syntaksien
takana. Kyky oppia koko ajan uutta.

Havaintoja yleisöstä:

- Oma kokemus 12 vuoden koodaustyöstä on, että aina pitää opetella
  uutta.

Siinäpä juuri oiva kokemusasiantuntijan vakuutus siitä, että
ohjelmointikieltä kannattaa vaihdella jo koulutuksen aikana usein.

Parasta mahdollista ratkaisua luultavasti ei ole olemassa, kuten
todellisen maailman ongelmiin yleensä ei ole. Erilaisissa tavoissa
tehdä asioita on puolensa ja puolensa.


*** Tältä päivää oli tässä

Huomenna taas jo hyvin pian nähdään!!

** Luento 8:  (to 20.4.2023) (P/J) Karhuluento, ehkä myös vähän näätä?

Mikä "karhuluento"?

- Verrattuna näätään: Karhu ei jää kyselemään pitkäksi aikaa. Karhu
  vaan painaa menemään, selittää kovasti mennessään ja vääntää
  rautalankaa niin paljon kuin pystyy.

Mikä "näätäily"?

- Pistetään vähän viisasta päätä yhteen ja jutellaan vieruskaverin
  kanssa.. tehdään yhteenvedot myös koko porukan kesken ja
  kotikatsomoita varten. Soveltuu esimerkiksi tenttitärppien
  miettimiseen.

*** Tämän luennon tavoite

- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Demo 4 ohjeteksteineen, monisteen
  luvut 1-5, alkuviikolla jo lukua 6.

- Jatketaan käytännön esimerkkejä tasan siitä, mihin viimeksi jäätiin.

- Tauon jälkeen ryhdytään katselemaan tenttiä. Tehdään sitä
  "näätäillen" yksin-ryhmissä-kaikki -tyyppisellä pohdintatehtävällä.

*** Infot keväälle 2023

- Huomenna Open labrapäivä perinteisin menoin. Tervetuloa.

- Ensi viikon alussa tosiaan tapahtuu "Demo 4 porukalla":

  + Ryhmäharjoite

  + **Mielellään paikalla siten, että päästään aloittamaan aina vartin
    yli!!** Aikaisintaan 90 minuutin päästä vasta pääsee pois. Demo 4
    suoritus: olet läsnä, kun ope kirjaa, että olit läsnä.

    Mahdolliset ajat on Sisussa. Voit valita itselle sopivan ja TULLA
    PAIKALLE *ENNEN VARTIN YLI*.

  + Jos tuntuu, että tarvitset tai haluat, voit tulla ilman
    ilmoittatutumista uuteenkin ryhmään.

*** Seuraava ennakkotehtävä

Lukemista:

- Demo 4 ohjeteksti; tärkeä ensi viikon demo 4 -ryhmätöitä varten!

- Monisteen luku 5 ennen demo 4 -ryhmätyötä.

- Monisteen luku 6 heti demo 4:n jälkeen.

Tekemistä:

- Demo 3 valmiiksi ja palautus + asioiden sisäistäminen

Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!


*** Väliaihepiiri (nauhoitettu info-osuuteen, sori): .screenrc -asetustiedosto

Käytännön esimerkki sovelluksen asetuksista ja Unix-tyyppisten
järjestelmien tiedostoista, joiden nimi alkaa pisteellä.

**** Keskustelua paikan päällä

Havainto: Näitä taitoja tarvitaan etenkin backend-töissä, mutta myös
muualla.

Kysymys:

- Jos teen asetukset halava-koneella, niin muuttuuko ne pysyvästi?

  Kyllä, koska mitä vain tehtiin oli, että muutettiin yhden tiedoston
  sisältöä. Se on pysyvää, kunnes tehdään jokin uusi muutos.

- Muuttuuko ne myös jalavalla?

  Kyllä, koska sama tiedosto samalla verkkolevyllä näkyy kaikissa
  tietokoneissa, joihin se on kytketty. Esimerkiksi jalavan ja halavan
  kotihakemisto ja yliopiston Windows-työasemien U: -asema.

- Jos suljen screenin, niin katoaako ne asetukset?

  Ei.  Nehän ovat vain yksi tiedosto, jota juuri muutettiin.

  Ei katoa, jos ei tiedostoa muuteta uudelleen tai hävitetä.

- Muuttuko ne mun omalla tietokoneella vai ainoastaan halavalla?

  Ei muutu niissä tietokoneissa, joissa ei ole kyseinen verkkolevy
  kytkettynä. Jos omassa koneessa jostain syystä kokeilet screeniä, se
  lukee asetukset oman tietokoneen levyltä.

  Verkkolevyn hakemistoa ei kannata kytkeä kotihakemistoksi omassa
  henkilökohtaisessa tietokoneessa. Yliopiston työasemat ja
  palvelinkoneet ovat erilainen käyttökohde.

*** Tauko 11 minuuttia. Jatkuu tasan 11:25

Äänitesti, videokalvo, nauhoitusnappi.

*** Aihepiiri: "Hei, maailma" vielä ainakin kerran (osa 3 tässä vaiheessa).

Poimitaan ajatukset aiemmalta kerralta, ja mennään vielä eteenpäin.

Tavoite: Näytetään lisää, mitä ja miten pääsee itsekin kokeilemaan ja
tutkimaan suhteessa monisteen luvuissa 2-5 alustettuun teoriaan.

C-kieli, debuggeri, konekieli. "-g -O0 -Wall"

Suoritussykli, muisti.

** Luento 9:  (ke 26.4.2023) (P/J) Tähään karhu, huomenna näätä

*** Infot keväälle 2023

- Huomennakaan ei päästä kokemaan päärakennuksen juhlasalia, vaan
  varattiin Agorasta Alfa.

- Viime kerralla Alfassa oli poikkeuksellinen tuplabuukkaus, jollaista
  ei pitäisi huomenna olla.

- Demotarkastusten tilannekatsaus?

*** Meneillään olevat tehtävät (huomenna mennään taas eteenpäin tästäkin!)

Jos seurailet keväällä 2023 tapahtuvaa opintojaksoa omaan tahtiin
"aikakoneella", tästä osiosta voit päätellä, missä kohtaa lukemisen ja
tekemisen osalta olisi hyvä olla menossa. Videotallenteet on ehkä
saatettu järjestellä tiekarttaan siihen mennessä. Tätä nauhoitettaessa
työ on vaiheessa - vertaistukikanavalle tuli tähän astisista posti,
jossa on listattu uudet videot.

Tämän viikon tarjonta:

- Demo 4 itsenäiseen suoritustapaan avautui palautuslaatikko aamulla
  klo 10:01. Ryhdy tekemään, jos et ehtinyt ryhmäsessioihin! Löytyy
  normaalista paikasta HTML-vedoksena. Ohjeellinen aikataulu on
  perjantai klo 17, johon mennessä ehtii olla vielä myös Open
  labrapäivä.

- Edessä seuraavaksi Demo 4b. Sen käynnistämiseksi tehdään taas
  kickstart-video tänään tai huomenna.

- Huomenna luento, perjantaina Open labrapäivä.

Lukemista:

- Demo 4 ohjeteksti

- Monisteen luvut 5 ja 6.

Tekemistä:

- Demot 3 ja 4 valmiiksi ja palautus + asioiden sisäistäminen

Täsmennys demo 4 osalta: Läsnäsuoritus kuittasi asian, jos asut
Jyväskylässä ja pääsit käymään paikalla. Mallivastaus on saatavilla
Moodlessa. Aikakoneella tallennetta katsoessa käytettävissäsi on
itsenäinen suoritustapa.

Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!

*** Aihepiiri: Demo 4 terveiset porukkasessioista + evästystä itsenäiseen suoritukseen

Laitetaan heti tähän väliin, että muistetaan tämä.

Katsotaan, mitä alkuviikosta tehtiin mikroluokissa. Kiitos ryhmille
vielä - oli hauskaa puuhaa mikroluokassa!

Nyt pääsee tekemään samaa itsenäisesti, jos ei päässyt paikalle
ryhmäsessioihin.

Kevään 2023 vertaistukikanava tavoittaa nyt useita kymmeniä
kurssikavereita, joilla on käytettävissään täydellinen mallivastaus
demoon 4. Heiltä saa toivottavasti vinkkejä, mutta ei spoilereita
:). Oppiminen tapahtuu pohtimalla ja yrittämällä itse. **Tekemisen
jälkeen** pääsee käsiksi mainittuun mallivastaukseen itse kukin.

Käydään läpi demo 4:n ohjetta ja näytetään vähän mallia, miten
itsenäinen tekeminen eroaa ryhmätyönä tehdystä. Näytetään vielä mm. C#
ja C-esimerkit. Muistettaisiinko käydä läpi seuraavat erityiskohteet:

- mikroluokassa tehtyjä havaintoja screeneistä, editoreista, UTF-8
  merkistöistä, terminaali-ikkunan väreistä ja muusta, mitä kävi ilmi
  olan yli katsomalla tai yllättävistä ilmiöistä

- Lisähuomio: Uteliaisuus on toivottua, mutta lisäksi tarvitaan
  lähdekritiikki. Tieto löytyy usein jopa lähempää kuin sieltä
  internetin syövereistä. Esimerkiksi komento "man malloc"

- Metataito (onko muita olennaisia taitoja olemassakaan): Siirtyminen
  koodin "tuijottamisesta" koodin ymmärtämiseen.

*** Tauko 13 minuuttia. Jatketaan tasan 15:20

*** Aihepiiri: Demo 4b alkuohjeistus

Käydään läpi demo-ohje ja näytetään malliksi vähän esimerkkiä, miten
ryhdytään tekemään: Hakemiston luonti, paketin nouto ja avaus,
mallikoodiin tutustuminen opituilla työkaluilla (tärkeä!),
dokumentaation lukeminen (myös tärkeä!), toimeen tarttuminen (oho;
tärkeä varmaan tämäkin!). Monisteen konekieliesimerkkien huolellinen
tutkiminen ja soveltaminen: mitä tarkoittaa?

** Luento 10: (to 27.4.2023) (P/J) Karhuluento

*** Tämän luennon tavoite

- Ryhdytään katsomaan jo ennalta vähän tenttiä, josta tulee arvosana
  tästä opintojaksosta. Tehdään sitä hiukan ryhmissä näätäilemällä:
  otetaan hyötyjä siitä, että ollaan samassa paikassa yhdessä; saadaan
  jaettua viisautta myös kotikatsojille sekä aikakoneella
  tulevaisuuden puolelta opintojaksototeutusta seuraaville.

- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Seuraava demo 4b ohjeteksteineen ja
  linkkeineen, monisteen luvut 7-8.

*** Infot keväälle 2023

- Ei pitäis olla mitään uutta auringon alla. Suoraan asioihin vaan
  siis. Ensin kuitenkin katsaus oletettuun vaiheeseen lukemiston ja
  tekemistön kanssa.

- Ohjeellinen kevään 2023 aikataulujuoksutus tehtiin yleisön pyynnöstä
  näkyväksi Moodleen.

*** Seuraava ennakkotehtävä

Lukemista:

- Demo 4b ohjeteksti

- Monisteen luvut 7-8

Tekemistä:

- Demo 4 valmiiksi ja palautus + asioiden sisäistäminen

  Ryhmätehtävän suorittaneillekin pitäisi olla nyt mallivastaus
  demosta 4 saatavilla! Vilkaise!

- Demo 4b työn alle.

Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!







*** Aihepiiri: Sovellus komentojonotiedostolle - komennot c11

"Skripti" on suomeksi mieluummin komentojonotiedosto.

Videolle tarttui hienon studioyleisön siivittämänä oivallinen kattaus
käyttöjärjestelmiä käsittelevän opintojakson ydinosaamisasioita.

*** Tauko 12 minuuttia. Jatketaan tasan 11:20

Jatketaan tasan 11:20

*** Aihepiiri: Tentin yleiskuva. Yksi tärppikysymys, jos ehditään.

Moodlen tentti Opettajan esikatseluna.

Usein kysyttyjä kysymyksiä on jo tiedossa. Voidaan käsitellä
ennaltaehkäisevästi:

- "Saako tentissä käyttää kurssimateriaaleja vai pitääkö kaikki komennot
  muistaa ulkoa?"

Vastaus pääpiirteissään on: Saa käyttää kaikkea, paitsi avun kysymistä
henkilöltä, ChatGPT:ltä tai muulta taholta, jolle voi esittää
kysymyksen tentin aikana. Esimerkiksi internetiin aiemmin päätyneitä
sisältöjä saa käyttää mielin määrin.

Käytiin mallitentistä ensimmäinen kysymys tarkoin läpi.




Myöhemmin tehtäväksi jää:

Rakennellaan pieni yksin-ryhmissä-kaikki -harjoite, jos on aikaa.

** Open Labrapäivän jälkeen 28.4.2023 nauhoitettu lisäaihepiiri

*** Aihepiiri: Havainnekuvien piirtäminen - miksi, miten ja mitä esimerkiksi?

Katsotaan, mitä tuutista tulee. Kerralla purkkiin! - ainoa tapa
lentää... Ja tuutistahan tuli aika hyvin tavaraa, joka tuntui ainakin
omasta mielestä hyödylliseltä ja tärkeältä.

** Luento 11: (ke 3.5.2023) (P/J) Tilanteen mukaista etenemistä

*** Infot keväälle 2023

- Demotarkastukset pitkälti ajan tasalla kevään osalta: 1-3
  tarkastettu ja 4 tarkastetaan seuraavaksi. Etapeista ilmoitetaan
  Uutiset-kanavalla, kun esimerkiksi kaikki on tarkastettu.

- Väki saa huisin paljon apuja Open labrapäivissä.

- Vertaistukikanavalla on ollut vapun aikana huolettavan
  hiljaista.. Siellä kertyy nyt koko ajan porukkaa, jolla on
  käytössään täydet mallivastaukset meneillään oleviin demoihin. Eli
  vinkkejä on saatavilla, kun vaan kysyt kavereilta!

*** Päivän päätavoitteet:

- Asiassa eteenpäin, tasaisen aikataulun ja havaintojen perusteella.

- Mahdollisesti tenttitärppi (tauon jälkeen), jos on aikaa. Jos ei
  ole, niin sitten siirtyy lähemmäs tenttiä.

*** Seuraava ennakkotehtävä

Lukemista:

- Demo 5 ohjeteksti

- Monisteen luvut 9-10

Tekemistä:

- Demo 4b valmiiksi ja palautus + asioiden sisäistäminen tähän
  astisesta.

- Demo 5 työn alle. *HUOMAUTUS:* Demo 5:n katselu voi auttaa myös demo
  4b:n ymmärtämistä!

Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!

*** Aihepiiri: Havaintoja open labrapäivästä demojen 4 ja 4b kohdalla

Havaintoja ja esimerkkejä open labrapäivistä.

**** Työskentelytavat

Joillain on jo hyvin näppärän näköistä työskentelyä Emacsin, Vimin ja
Screenin kanssa. On hienoa katseltavaa!

Joillain on vielä aivan tarpeettomia hankaluuksia - esimerkiksi
lukematon määrä ylimääräisiä screenejä ja editoreja. Oli hyödyllistä
katseltavaa! Hyvä, että oltiin samassa tilassa tekemässä ja jaettiin
kuvaruutuja Zoomilla!

Muistakaa opastusvideo "Screenin käyttelyä aloittelijalle" ja muut jo
aiempina vuosina nauhoitellut lisävideot! Ne kannattaa koettaa
ymmärtää ja viedä käytäntöön! Jos niissä on jotakin epäselvää, niin
kannattaa kysyä tarkennuksia täsmänä!

Kertausta aiemmasta: Päätteen fonttikokoa ja värejä voi muuttaa
mieleisemmäksi. *Kannattaa varmistua omalta kohdalta,* että homma on
näppärää, eikä aika mene johonkin, mikä ei liity asiaan eli kuoreen,
C:hen, konekieleen, tietokonelaitteistoon, muistiin,
käyttöjärjestelmäkutsuihin ja muuhun, minkä tutkimiseen sen ajan
pitäisi mennä harmittelun sijaan.

**** Työskentelytavat, osa 2: koodaaminen 

Pieni muutos kerrallaan!

Koko ajan homma näpeissä ja ymmärryskin mukana!

Kääntäjän virheilmoituksia on opittava lukemaan - ensimmäinen virhe
pitää aina korjata, koska loput voivat johtua siitä.

Varoitukset kannattaa pyytää kääntäjältä, eikä niitä passaa jättää
korjaamatta, koska ne ovat lähes aina merkki siitä, että ohjelma tekee
jotakin, mitä et ole tarkoittanut (tai vielä ymmärtänyt).

Debuggeri auttaa, kun virhe ilmenee niin, että ohjelma kaatuu!

*** Aihepiiri: Demon 5 alkuopastus

Tämän voi ehkä tehdä nopeastikin!? (Aiemmin ei ole oikein onnistunut,
kun tässäkin on tärkeitä ja painotettavia asioita jonkin verran).

Käydään läpi demo-ohje ja näytetään malliksi vähän esimerkkiä, miten
ryhdytään tekemään.

*** Tauko 9 minuuttia.

Jatketaan tasan 15:35

*** Ei tarvinnut nauhoittaa: Demo 4b edistäminen + debuggerin käyttely

Ajatuksena oli näyttää pikkuesimerkki pienestä muutoksesta,
kokeilemisesta ja debuggerin käyttelystä.

Mutta tätäpäs tulikin jo 3.5.2023 ennen taukoa nauhoitetuissa
pätkissä. Demo 5:n ohjeessa on lisää debuggeriopastusta, ja aiheeseen
varmasti palataan. Eipä siis tarvitakaan ainakaan tähän kohtaan
lisäaihepiirivideota Demosta 4b.

*** Virittäytyminen: Jatketaan asioiden järjestelmällistä käyntiä

Teorian ja käytännön käsittelyä koodiliitteen esimerkkien avulla ja
lennostakin kokeiluja tehden: C:tä, kuorta, konekieltä ja
dokumentaatioiden tarkistelua livenä. Eli mallia opittavista asioista,
utelias ja uskalias asenne mukaanlukien.

*** Aihepiiri: Koodiliitteen lataaminen ja omatoiminen tutkiminen

Olemme matkalla kohti koodiliitettä. Katsotaan, mistä koodit saa
haettua suoraan versionhallinnan web-liittymän URLeista.

Koodiliitteen koodit vois vaikka ottaa esimerkkikansioon, kun niihin
tullaan palailemaan meneillään olevan kevätkurssin puitteissa. Samalla
saa tallenteeseen autenttisen esimerkin siitä, miten voi itse tehdä
saman.

Ja esimerkistä tuli sellainen kuin ehkä vain livenä, ilman tarkkaa
käsikirjoitusta, on mahdollista: Nähtiin, miten kuori on kuin
MacGyverin linkkuveitsi esimerkiksi jonkun netistä tulevan datan,
apuohjelmien tulostamien lokitietojen ja lähdekoodien tutkimisen
kanssa.

** Luento 12: (to 4.5.2023) (J) +Karhuluento+ Rusinanteluento
*** Infot keväälle 2023
- Ei mitään uutta - homma rullaa, kun rullataan vaan!
- Paitsi jos yleisöllä on mielessä kysymyksiä tämän kevään käytännön
  toimenpiteistä?
*** +Tämän luennon tavoite+
- Karhu ei jää kyselemään pitkäksi aikaa. Karhu vaan painaa menemään,
  selittää kovasti mennessään ja vääntää rautalankaa niin paljon kuin
  pystyy.
- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Seuraavaksi demo 5
  ohjeteksteineen, monisteen luvut 9-10.
- Little man computer ja käydään läpi monistetta varmistaen ja kysellen,
  eli pattika-pattika ja pakkia-pakkia, sano Rusinante.
  
*** Seuraava ennakkotehtävä (käsiteltiin jo luennolla 11)

Lukemista:

- Demo 5 ohjeteksti

- Monisteen luvut 9-10

Tekemistä:

- Demo 4b valmiiksi ja palautus + asioiden sisäistäminen

- Demo 5 työn alle. HUOMAUTUS: Demo 5:n katselu voi auttaa myös demo
  4b:n ymmärtämistä!

Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!


*** Aihepiiri: "Little man computer" avuksi koneen toiminnan ymmärrykseen

Elävää animaatiota minimalistisen tietokoneen toiminnasta. Näytetään
luennolla vähäsen:

http://peterhigginson.co.uk/LMC/

Samalta kaverilta karsittu ARM-prosessorisimulaatio:

http://peterhigginson.co.uk/ARMlite/

Kun perusidea on hahmottunut, me opettelemme käyttämään gdb:tä aivan
todellisen tietokoneen kanssa!

*** Tauko oli sopivassa kohdassa

*** Aihepiiri (ei videojulkaisua): Luentomonisteen selailua

Luentomonistetta alusta läpikäyden eri kohtia korostaen:
 - Kerrosrakenne käyttöjärjestelmässä.
 - Tietokoneen rakenne: teoreettinen, eli kurssilla riittävä ja
   todellinen, eli jatkokurssien asia.
 - Prosessorin teoreettinen, yksinkertaistettu rakenne.  Nykyprosessorit
   käsitellään muilla kursseilla.
 - Lista, pino ja puu tietorakenteena.
 - Binääri-, heksa- ja oktaaliluvut.

** Luento 13: (ke 10.5.2023)  (P/J) Aihepiirejä

Aletaan tykittää tasan 14:15! Ainakin yritetään taas.

*** Infot keväälle 2023

- Demot 1-3 pitkälti tarkastettu; etenemme demo 4:n itsenäisten
  suoritusten tarkastamista kohti asap. Tilanne näköjään sama kuin
  viime vuonna tähän aikaan keväästä.

- Suosituimpia kaloja demon 3 perusteella tähän asti (case-sensitive; Pallokala
  != pallokala):

     10 Ympäristömuuttuja LEMPIKALA == lohi
      8 Ympäristömuuttuja LEMPIKALA == ahven
      7 Ympäristömuuttuja LEMPIKALA == pallokala
      6 Ympäristömuuttuja LEMPIKALA == miekkakala
      6 Ympäristömuuttuja LEMPIKALA == kultakala
      6 Ympäristömuuttuja LEMPIKALA == hauki
      5 Ympäristömuuttuja LEMPIKALA == Ahven
      4 Ympäristömuuttuja LEMPIKALA == muikku
      3 Ympäristömuuttuja LEMPIKALA == tonnikala
      3 Ympäristömuuttuja LEMPIKALA == Pirkkala


      (tehdään alla oleva kuoriharjoite tähän vuoden 2023 osalta)

- Viime vuoden (2022) suosikit:

      7 Ympäristömuuttuja LEMPIKALA == miekkakala
      7 Ympäristömuuttuja LEMPIKALA == lohi
      6 Ympäristömuuttuja LEMPIKALA == ahven
      5 Ympäristömuuttuja LEMPIKALA == muikku
      4 Ympäristömuuttuja LEMPIKALA == Lohi
      4 Ympäristömuuttuja LEMPIKALA == Kuha
      4 Ympäristömuuttuja LEMPIKALA == kissakala
      4 Ympäristömuuttuja LEMPIKALA == hauki
      4 Ympäristömuuttuja LEMPIKALA == Ahven
      3 Ympäristömuuttuja LEMPIKALA == kultakala

- Top-listan muodostaminen bash-komentorivillä:

  find . -name "*.txt" | while read a;
  do grep LEMPIKALA "$a" ; done | sort | uniq -c | sort -n -r | head

  Kuinka monta kalaa ehdotettu: 

  find . -name "*.txt" | wc -l

  Erilaisia kaloja (case-sensitive) ehdotettu 85 sekä vuonna 2023
  että 2022. Innovatiivisia kalastelijoita tällä kurssilla!

  Lukumäärä selvitetty putkittamalla top-listan muodostama tuloste
  viimeisenä komennolle "wc -l" eikä "head" kuten ylläolevassa.

*** Päivän ja viikon päätavoitteet:

- Demo 6 alkuopastus, niin sitten on kaikki demot avattu, ja päästään
  keräämään hedelmiä teorian ja käytännön välisten yhteyksien
  havainnoimisella.

- Väliin koodiesimerkkejä havainnollistamaan aiheita. Tänään ja
  huomenna alkupuoli luennosta (taukoon asti)

- Huomenna jälkipuoliskolla eli tauon jälkeen koetetaan lopulta ehtiä
  tenttitärppeihin jollain tavoin keskustellen eli "näätäilleen"!

*** Aihepiiri: Demon 6 esittely

Käydään läpi demo-ohje ja näytetään malliksi vähän esimerkkiä, miten
ryhdytään tekemään.

*** Tauko sopivassa välissä

Jatketaan tasan 13:36!

Tauon jälkeen mikrofonitestit, nauhoitusnappulan painaminen
ym. muistetaan taas..

*** Aihepiiri (koodiliitteestä): Hei maailma assemblerilla

Otetaan esimerkiksi "Hei maailma assemblerilla" ja käpistellään.

** Luento 14: (to 11.5.2023)  (P/J) Karhu- ja näätäluento
*** Infot keväälle 2023

- Tänään ei mitään uutta. Huomenna taas Open Labrapäivä aamulla;
  tervetuloa.

- Tämä ja 3 kertaa "Luento"-nimisiä tapaamisia jäljellä ennen
  tenttiä. Käytetään aika tehokkaasti, eli opettaja lopettaa
  jaarittelun ja menee asiaan?

*** Tämän luennon tavoite

- Koodiesimerkkejä havainnollistamaan aiheita. Tehokas puoliaika
  koodin, kuoren, debuggerin ja materiaalien parissa.

- Tauon jälkeen mennään tenttitärppeihin jollain tavoin keskustellen
  eli "näätäillen"!

- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Seuraavaksi demo 6
  ohjeteksteineen, monisteen luvut 11-12.

*** Seuraava ennakkotehtävä

Lukemista:

- Demo 6 ohjeteksti

- Monisteen luvut 11-12 (viimeinen osio "tenttialueeseen"; loput luvut
  ovat vapaaehtoista lisälukemistoa)

Tekemistä:

- Demo 5 valmiiksi ja palautus + asioiden sisäistäminen

- Demo 6 työn alle.

Kestomuistutus: 5 opintopistettä 8 viikossa tarkoittaa keskimäärin
16-17 tuntia viikossa tehokasta tekemistä. Muista tauot ja lepo, koska
muuten ne varsinaiset tekemisen hetketkään eivät ole niin tehokkaita
kuin voisivat olla!

*** Virittäytyminen: Koodiliitteen aktuaaliset koodit

Käydään tähän väliin koodiliitettä ja sen suhdetta teorialukuihin,
jotta näissä päästään varmasti eteenpäin tänään!

Ajatukset edellisen kerran jälkeen copy-pastella:

"Kaikenlaskijan" voi tehdä vaikka scratchistä lennosta; demonstroimaan
alustavasti aikakatkaisua ja vuoronnusta... Tutkitaan vaikka
top-komennon tulostettakin ja prosessien hallintaa. Tarkempi
prosessien hallinan esimerkistö löytyy erillisistä videoista, niin ei
käytetä siihen sen enempää aikaa tässä vaiheessa! Todetaan toivotun
omatoimisen osaamisen taso tässä vaiheessa..

Vois kuitenkin rajapintadokumentaatioesimerkin vuoksi varmistaa, mistä
kohtaa POSIXia löytyy prosessinhallinnan kuorikomennot.

Jatkossakin vaan järjestelmällisesti koodiliitteen koodeja sopivassa
järjestyksessä käsittelyyn. Suhteutus teorialukuihin, erityisesti
otsikoihin, havainnekuviin ja pseudokoodiesimerkkeihin. Teksti
itsessään on luettavaksi tehty, ei resitoitavaksi luennolla.

*** Aihepiiri: Aikakatkaisu ja vuoronnus "kaikenlaskija.c"

"Kaikenlaskijan" voi tehdä vaikka scratchistä lennosta; demonstroimaan
alustavasti aikakatkaisua ja vuoronnusta...

*** Tauko sopivassa kohdassa

Jatketaan tasan 11:40!

Tauon jälkeen mikrofonitesti, tallennusnappi.

*** Virittäytyminen: Pohdintaa ja ryhmäkeskustelua

Virittäydytään välillä erilaiseen tekemisen moodiin.

*** Osaamisen arviointia ( == tenttitärppi!)

**** Kevään 2023 menettely

"Näätäilyä" eli luentotilaisuuteen kytkettyä ryhmäkeskustelua on
kokeiltu erilaisin tavoin useiden vuosien ajan inkrementaalisti.

Keksitään pyörä uudelleen jollain tähän kevääseen sopivalla
tavalla. Raamit:

- Yksin-ryhmissä-kaikki -menettely; sama sukka sopii joskus moniinkin
  jalkoihin.

- Saadaan kuvaa omasta ja kaverien oppimisen vaiheesta *ilman
  suorituspaineita*; kokonaiskuva välittyy tallennettujen osioiden
  kautta myös kotikatsomoihin

- Simuloidaan tenttiä, jolla kevään 2023 opintojaksosta tulee lopuksi
  arvosana.

**** Protokolla:

  - Kolmen hengen ryhmät lähellä istuvien kanssa.

  - 3*30 sekunnin nimi- ja fiiliskierros, jotta keskustelu lämpenee.

  - Päivän tenttitärppi yksin-ryhmissä-kaikki -menettelyllä (seuraava
    kohta).

  - Oikean vastauksen takana oleva ajatuksenkulku

**** Tehtävä

- Kysymys on... Moodlesta aiemman vuoden tentistä joku kysymys
  (kysymys 25/48)

- Kellotetaan 1 minuutti aikaa tehtävän lukemiseen.
  
- Kellotetaan 1 minuutti aikaa siihen, että jokainen miettii hiljaa
  itselleen vastaukset

- Ryhmäkeskustelu 2 minuuttia: Käykää läpi kaikkien omat vastaukset.

  Neuvotelkaa siitä, mikä niistä ehkä on eniten oikein.

- Yhteinen koonti: Kerätään luentotallenteelle ehdotuksia
  vastauksista.

  Varmistaan myös oikea vastaus ja että lopulta kaikki osaisivat tehdä
  tällaisen tehtävän tentissä täysillä pisteillä.

Tässä on täydellisyyden vuoksi tehtävä ja siihen liittyvä ohjeteksti
kopioituna:

Ohje tehtävään: Yhdistä lauseen loppua vastaavat kirjaimet (vähintään
yksi, mutta mahdollisesti useita) lauseenalun perään siten, että
muodostuvat lauseet vastaavat todellisuutta. Vastauksessa on oltava
listattuna kaikki todellisuutta vastaavat vaihtoehdot.

Kysymys 25. Valitse oikea vaihtoehto (mahdollisesti useita sopivia):
Kurssilla käsitelty käyttöjärjestelmän rajapintastandardi POSIX
(vuoden 2018 versio) määrää, että ...

a) Konekielisen aliohjelman ensimmäinen parametri välitetään
rekisterissä RDI, jos se on tyypiltään kokonaisluku.

b) shell-komento echo tulostaa argumenttinsa.

c) järjestelmäkutsu exit() tapahtuu sijoittamalla rekisteriin RAX luku
60 ja suorittamalla syscall-konekielikäsky.

d) shell-komennolla kill voi lähettää prosessille signaalin.

**** Ryhmien vastaukset ja keskustelu
Muistiinpanot ryhmäkoonnista:

  "ainakin bd"
  bd ja mietittiin a:ta
  bd ja lähdettäisiin tarkistamaan a:ta materiaalista...
  bd ja ehkä c.. eri mieltä a:sta kuin muut ryhmät tähän asti
  bd ja muista ei niin varmoja.

  Laitetaan tähän löydökset


**** Oikeaksi tarkoitettu vastaus ja logiikka sen takana

Luentotallenteelle selitys ja logiikka, jolla tavoiteltu oikea vastaus
on selvitettävissä.

(Yritetään muistaa ja toteuttaa aiempien vuosien palaute:
Mallivastauksen käsittely voidaan tehdä nopeasti. Tänään oli pakkokin,
salivarauksesta johtuen... kunpa osaisi jatkossakin kuvitella
vastaavan paineen..)

** Luento 15: (ke 17.5.2023) (J) Asiaa eteenpäin

Teorian ja käytännön välisten yhteyksien etsimistä koodiliitteen
esimerkkien, debuggerin, havainnekuvien ja speksien kautta.

*** Infot keväälle 2023

- Jäljellä on tämän lisäksi 2 luentoa, 1 Open labrapäivä ensi viikon
  tiistaina klo 16.30-18.15 ja tentti!

- Lukemisto ja tekemistö on nyt kokonaan työn alla: Luentomonisteen
  luvut 1-12 ja demot 1-6. Kokonaisuuden hahmottaminen.

*** Tämän luennon tavoite

- Tässä välissä tiukkaa asiaa, konkretiaa ja rautalankaa.

- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen
  seuraavia yhteisiä tapaamisia: Hedelmien keräämistä pohjatyön
  jälkeen eli ymmärryksen lisäämistä ja valmistautumista
  tenttiin. Demo 6 työn alla - sitä saa palauttaa sitä vielä tentin
  jälkeen, eli voi keskittyä teoriapuoleen tässä kohtaa!


*** Asiaa järjestelmällisesti eteenpäin: Koodiliitettä ja monistetta

Edetään demoissa aiemmin nähtyjen ja monisteen koodiliitteessäkin
olevien konkreettisten esimerkkikoodien kautta, loogisessa
järjestyksessä.

**** Säikeistä

saikeiden_tarve.c
saikeet.c

Katso esimerkkien briiffaus videolta. Seinäkelloaika lyhenee, jos
tehtävän voi hajauttaa moneen prosessoriytimeen rinnakkain.

Katsellaan säikeitä myös ps -komennon avulla (vipu -L) sekä
luentosalin tietokoneella esimerkiksi Chrome-nettiselaimessa ja
Windowsin prosessinhallinnassa, jos opettajan perustunnuksen
käyttöoikeudet riittävät (eivät välttämättä riitä..).

Omalla tietokoneella voi kokeilla oman tietokoneen graafisia työkaluja
prosessin- ja säikeidenhallintaan, nimeltään tyyliin "Task Manager" /
"Tehtävienhallinta" tai vastaavaa...

*** Tauko sopivassa välissä
Jatkuu 15.22

**** Prosesseista: Signaalinkäsittely ja kill

sigesim.c

Katso briiffaus videolta.

Koetetaan näyttää näppäilyjä ja kill -kuorikomennon käyttelyä.

** (hep, hep, helatorstai "syö" yhden luentokerran!!)
** Luento 16: (ke 24.5.2023) (P/J) Toiseksi viimeinen luento
*** Infot keväälle 2023

- Jäljellä on tämän lisäksi enää huominen luento ja ylihuominen tentti.

- Molemmilla luennoilla: aluksi tiukkaa asiaa, tauko, tenttitärppi.

- Yritetään saada videotallenteet ulos pian luennon jälkeen, jotta
  ennen perjantain tenttiä ehtii vilkaista ne läpi. Samoin koetetaan
  saada demo 5 tarkastettua ja mallivastaus auki. Demo 6 tarkastetaan
  tentin jälkeen, jolloin myös sen tekemiseen voi vielä palata.

- Sitten siihen asiaan!

*** Tämän luennon tavoite

- Hedelmien keräämistä pohjatyön jälkeen eli ymmärryksen lisäämistä ja
  valmistautumista tenttiin. Demo 6 työn alla - sitä saa palauttaa
  sitä vielä tentin jälkeen, eli voi keskittyä teoriapuoleen tässä
  kohtaa!

*** Asiaa järjestelmällisesti eteenpäin: Koodiliitettä ja monistetta

**** Aihepiiri: Debuggeri voimatyökaluna kutsupinon tutkimiseen rekursiossa

rekursio.c

**** Minikuori: prosessin luonti ja binäärin käynnistys POSIX-tavalla

minish.c

Uuden prosessin luonti haaroittamalla fork() -kutsulla, suoritettavan
ohjelmatiedoston lataaminen ja käynnistäminen meneillään olevan
prosessin tilalle exec() -kutsulla ja prosessin lopetus exit()
-kutsulla.


minish.c

*** Tauko sopivassa välissä

Jatketaan tasan 15:15.

*** Yksi aihepiirivideo tässä välissä vielä

**** Synkronointi 1/3: Kilpajuoksu ja MutEx

race.c

Korjataan lennosta muokkaamalla. Jos opettaja eksyy, voi hän luntata
korjatuista malleista (race_fixed_mutex.c ja race_fixed_sem_mutex.c)

Katso briiffaus videolta.


*** Tenttitärppi yksin-ryhmissä-kaikki

**** Protokolla:

  - Kolmen hengen ryhmät lähellä istuvien kanssa.

  - 3*30 sekunnin nimi- ja fiiliskierros, jotta keskustelu lämpenee.

  - Päivän tenttitärppi yksin-ryhmissä-kaikki -menettelyllä (seuraava
    kohta).

  - Oikean vastauksen takana oleva ajatuksenkulku

**** Tehtävä

- Kysymys on... Moodlesta aiemman vuoden tentistä joku kysymys
  (kysymys 42-44/48)

  Esimerkkikoodin perusteella:

  + Kuinka monta konekielikäskyä ohjelmanpätkän jälki sisältää,
    ts. kuinka monta käskyä prosessi suorittaa siitä alken, kun
    käyttöjärjestelmä siirtää kontrollin nimettyyn aloituspisteeseen
    "_start"?

  + Mikä on rekisterin RCX sisältö ohjelmanpätkän suorituksen lopuksi?

  + Mikä on rekisterin RDI sisältö ohjelmanpätkän suorituksen lopuksi?

- Kellotetaan 1 minuutti aikaa siihen, että jokainen miettii hiljaa
  itselleen strategiaa, miten vastaukset olisi mielekästä tentissä
  tuottaa

- Ryhmäkeskustelu 2 minuuttia: Käykää läpi kaikkien omat strategiat.
  Neuvotelkaa siitä, mikä niistä ehkä on eniten toimiva.

**** Ryhmien vastaukset ja keskustelu

- Yhteinen koonti: Kerätään luentotallenteelle ehdotuksia
  ratkaisumallista:

  + Lähdetään debuggimaisesti käymään läpi koodia. Eli tehdään
    "pöytätesti" kynän, paperin ja aivojen kanssa. (Pelkkiin aivoihin
    ei yleensä kannata luottaa, jos muistissa pidettäviä asioita on
    enemmän kuin muutama. Eli suosiolla kynä, paperi ja sormet
    apuun!!)

  + Käytetään ihan oikeata debuggeria halavassa/jalavassa.

  Molemmat keinot ovat erittäin hyviä! Molemmissa pitää olla
  huolellinen ja soveltaa huolellisuuden lisäksi muitakin tärkeitä
  osaamistavoitteita.

**** Oikeaksi tarkoitettu vastaus ja logiikka sen takana

  Videotallenteella (kevään 2023 salaisen polkuavaimen takana):
  Varmistettiin molemmilla tavoilla oikea vastaus ja että lopulta
  kaikki osaisivat tehdä tällaisen tehtävän tentissä täysillä
  pisteillä. Varmalta vaikuttaa!!

** Luento 17: (to 25.5.2023) (P/J) Viimeinen luento.
*** Infot keväälle 2023

- Huomenna on tentti! Kaikki siihen liittyvä on tiedotettu luennoilla
  ja tallenteissa. Onnea ja osaamista matkaan, mutta ei stressiä!

- Tänään vielä tiukkaa asiaa - yritetään kaikin keinoin saada
  luentotallenne saataville jo täksi illaksi. Myös demo 5 mallivastaus
  saadaan ainakin ohjeelliseen deadlineen mennessä palauttaneille.

- Tänään paukut tentiin ja katse kohti sitä! Demo 6:n ehtii tehdä ja
  palauttaa tentin jälkeen, vaikka samana päivänä.

- Palautemahdollisuus (ja -velvollisuus, kaikilla kursseilla!)
  Webropolissa - sieltä pitäisi tulla automaattisia viestejä asiasta.

*** Tämän luennon tavoite

- Ensin tykitetään vielä koodiesimerkkejä. Sitten yksi tenttitärppi vielä.

*** Infotallenteeseen vielä tämä: Kevään toteutus oli tässä!

Kiitos paikalle saapuneille "studioyleisöille" - toteutimme vielä
yliopiston koronan jälkeisiä linjauksia opettamisesta paikan päällä
fyysisellä kampuksella.

Kiitos myös mielenkiinnosta kotikatsomolle, jossa 80-90%
kurssilaisista ilmeisesti seurasivat kevään kulkua. Toteutimme myös
IT-tiedekunnan "vanhaa normaalia", jossa tallenteiden kautta voi
seurata opetusta ajasta ja paikasta riippumatta.

Tällä kertaa koetettiin rakentaa hieman enemmän aikaa kestäviä
"aihepiirivideoita", jotta ensi vuonna päästäisiin kokeilemaan
käänteistä luokkahuonetta: Katsotaan asiat ensin kotona, ja tullaan
sitten yhteen keskustelemaan, soveltamaan ja tekemään vaikka demoja
porukalla.

Omaan tahtiin saa jatkaa - demotarkastuksia tehdään kesällä
erityisesti uusintatenttien ympärillä: muutamia päiviä ennen kutakin
tenttiä sekä kunkin tentin tarkastuksen yhteydessä. Kurssimerkintöjä
tehdään kolmena ryppäänä: Kunkin tenttikerran tarkastuksen yhteydessä.

Kiitos kolmannen kerran, onnea tenttiin jos toiseenkin, ja erittäin
hyvää kesäkautta, jossa kevään puserruksen jälkeen pääsee lataamaan
akkuja kohti syyslukukautta 2023!


*** Eiliseltä jääneet aihepiirit

**** Synkronointi 2/3: Useita yhteisiä resursseja, Deadlock

Vappusimalaattori:

Aloitetaan esimerkistä vappu_sekaisin.c

Jos opettaja unohtaa, miten esimerkki viedään läpi "lennosta", tai jos
sattuu olemaan perjantaiaamu lyhyellä luennon valmisteluajalla, niin
opettaja voi luntata seuraavien vaiheiden esimerkeistä:

vappu_deadlock.c

vappu_ei_lukkiudu.c








**** Synkronointi 3/3: Monta yksikköä samasta resurssista, Semafori

Semaforista suhteessa poissulkuun, esimerkkinä Tuottaja-Kuluttaja:

tuottaja_kuluttaja_rikki.c

Tutkitaan eroa korjattuun malliin, joka on monisteessa pseudokoodina
ja melko tyypillinen tenttitärppi mallia "Mahdollisesti rikottu tai
sitten ei".

tuottaja_kuluttaja.c


*** Tauko (sopiva, ei kovin pitkä, mutta ajatuksia kivasti nollaava)

Tauko klo 11:20-11:30


*** Katsotaan, mihin aihepiireihin on vielä aikaa

**** Lokaalisuusperiaate käytännössä: implikaatiot suorituskykyyn

Cache thrashing esimerkkikoodi  cache.c

Iltalukemista aiheen ympäriltä:
http://denninginstitute.com/pjd/PUBS/CACMcols/cacmJul05.pdf


*** Vielä yksi kokoava tenttitärppi

**** Virtuaalimuisti (sivutus ja heittovaihto): 

Strategia, miten käydään läpi:

- Aloitus tenttitärpistä, joka löytyy monisteestakin (Kuva 30).

Kysymykset:

Mihin fyysiseen muistiosoitteeseen
kohdistuisi prosessin 2 tekemä
kirjoitus virtuaalimuistiosoitteeseen
0x7f123?

Prosessi 2 suorittaa hyppykäskyn
aliohjelmaan muistiosoitteessa
0x03200. Tapahtuuko prosessorissa
sivunvaihtokeskeytys?

Prosessissa 7 aiheutuu
sivunvaihtokeskeytys ja fyysinen
muisti on täynnä; korvausalgoritmi
on LRU. Pitääkö fyysisen sivun 0x437
sisältö tällöin tallentaa levylle














- Mitä siihen liittyy: Lokaalisuusperiaate (alkaen esitietoluvun
  kuvista 7, 8, 9 ), sivun käsite (kuvat 12, 13, 15, 16, 25 ja 26),
  tarkennusta siitä miten käyttöjärjestelmä ylläpitää sivutaulua
  (kuvat 27, 28 ja 29) sekä heittovaihdon tapahtuminen.

- Heittovaihto


*** Loput asiat, jos aikaa tänä vuonna sattuu olemaan...

Näihin juttuihin ei ole muutamanakaan vuonna jäänyt aikaa, kuten ei
nytkään. Voitaneen alkaa todeta, että ei mahdu kevätkurssiin..

**** Oheislaitteet ja tiedostojärjestelmät

(Kuva 31, korkeintaan pikavilkaisuna 32)

Laiteriippuva ja laiteriippumaton I/O -ohjelmisto.

Koodiliitteestä pikavilkaisu, jos on aikaa:

liit.c

**** Sikanopee esimerkki, jos aikaa jää (ei superrelevantti): Viestit

Ehkä, jos aikaa jossain välissä on(?)

chattomyself.c

**** Sikanopee esimerkki, jos aikaa jää (ei superrelevantti): Jaettu muisti

Ehkä, jos aikaa jossain välissä on(?)

shm_*


** Tenttiaika: (pe 26.5.2022) (P/J) Klo 8:15-12:15 kotitentti!

Tämä löytyy tentin alkaessa Moodlesta. Olemme valmistautuneet tärpein.
_Hyvin se menee, ja uusintojakin on tulossa_.
Ei siis yhtään mitään hätää!









* Vuoden 2022 toteuma, jota voi hätätilanteessa noudatella

Päivämäärät vaihdettu 2023-mukaisiksi. Sisällöt edellisen vuoden
vastaavien luentokertojen toteuman mukaisia.

** Edellisiltä kerroilta jääneitä

*** Aihepiiri: Joku seuraava, sopiva juttu koodiliitteestä 

*** Aihepiiri: Yhteenvetoa reaalimaailman dokumenteista; mikä määrittää mitäkin

Mikä dokumentti määrittää mitäkin kerrosta laitteisto- ja
ohjelmistopinkassa. Mitä mikäkin niistä puolestaan ei määritä.
*** Aihepiiri: Joku seuraava koodiesimerkki jne



** Ideapankkia tulevia luentokertoja varten ("back-log" toteutuksen kulusta)

HUOM: Opettajien aikataulusäätöjen sumplimista:

17.5.2023 Jonne pitää (Paavo yhteiskunnallisen vuorovaikutuksen
tehtävissä Tampereella).

Jaettiin myös jo alustavasti muitakin vetovuoroja.

*** Osaamisen arviointia ( == tenttitärppi!)

Tutkitaan kysymyspankin kysymysten rakennetta ja poimitaan jotakin,
mihin pitäisi olla jo vastauksia hahmottumaan päin.

Noudatetaan näätäilyprotokollaa.

**** Protokolla:

  - Kolmen hengen ryhmät lähellä istuvien kanssa.

  - 3*30 sekunnin nimi- ja fiiliskierros, jotta keskustelu lämpenee.

  - Päivän tenttitärppi yksin-ryhmissä-kaikki -menettelyllä (seuraava
    kohta).

**** Tehtävä

- Kysymys on... Moodlesta aiemman vuoden tentistä joku kysymys
  (kysymys 25/48)

- Kellotetaan 1 minuutti aikaa tehtävän lukemiseen.
  
- Kellotetaan 1 minuutti aikaa siihen, että jokainen miettii hiljaa
  itselleen vastaukset

- Ryhmäkeskustelu 2 minuuttia: Käykää läpi kaikkien omat vastaukset.

  Neuvotelkaa siitä, mikä niistä ehkä on eniten oikein.

- Yhteinen koonti: Kerätään luentotallenteelle ehdotuksia
  vastauksista.

  Varmistaan myös oikea vastaus ja että lopulta kaikki osaisivat tehdä
  tällaisen tehtävän tentissä täysillä pisteillä.

Tässä on täydellisyyden vuoksi tehtävä ja siihen liittyvä ohjeteksti
kopioituna:

Ohje tehtävään: Yhdistä lauseen loppua vastaavat kirjaimet (vähintään
yksi, mutta mahdollisesti useita) lauseenalun perään siten, että
muodostuvat lauseet vastaavat todellisuutta. Vastauksessa on oltava
listattuna kaikki todellisuutta vastaavat vaihtoehdot.

Kysymys 25. Valitse oikea vaihtoehto (mahdollisesti useita sopivia):
Kurssilla käsitelty käyttöjärjestelmän rajapintastandardi POSIX
(vuoden 2018 versio) määrää, että ...

a) Konekielisen aliohjelman ensimmäinen parametri välitetään
rekisterissä RDI, jos se on tyypiltään kokonaisluku.

b) shell-komento echo tulostaa argumenttinsa.

c) järjestelmäkutsu exit() tapahtuu sijoittamalla rekisteriin RAX luku
60 ja suorittamalla syscall-konekielikäsky.

d) shell-komennolla kill voi lähettää prosessille signaalin.



Muistiinpanot ryhmäkoonnista:

  acd ad+c? b bd cd abcd

(Yritetään muistaa ja toteuttaa aiempi palaute: Mallivastauksen
käsittely voidaan tehdä nopeasti)


*** Näätäily 3.0: Tenttitärppi viime vuoden ekasta tentistä

Noudatetaan näätäilyprotokollaa.

**** Protokolla:

  - Kolmen hengen ryhmät lähellä istuvien kanssa.

  - 3*30 sekunnin nimi- ja fiiliskierros, jotta keskustelu lämpenee.

  - Päivän tenttitärppi yksin-ryhmissä-kaikki -menettelyllä (seuraava
    kohta).

**** Tehtävä

- Kysymys on viime vuoden (2021) ensimmäisestä tentistä (kysymys 48/48)

- Kellotetaan 1 minuutti aikaa tehtävän lukemiseen.
  
- Kellotetaan 1 minuutti aikaa siihen, että jokainen miettii hiljaa
  itselleen vastaukset tehtäviin 27 ja 28.

- Ryhmäkeskustelu 2 minuuttia: Käykää läpi kaikkien omat vastaukset.

  Neuvotelkaa siitä, mikä niistä ehkä on eniten oikein.

- Yhteinen koonti: Kerätään luentotallenteelle ehdotuksia
  vastauksista.

  Varmistaan myös oikea vastaus ja että lopulta kaikki osaisivat tehdä
  tällaisen tehtävän tentissä täysillä pisteillä.

Tehtävänanto copy-pastella tässä täydellisyyden vuoksi:

Tutkittava esimerkki tehtävään 48: Nelijärjestelmän kantaluku on 4 ja
siinä on käytössä numerot 0, 1, 2 ja 3. Muuten se toimii ihan kuin
kymmenjärjestelmä, 16-järjestelmä (heksaluvut) ja 8-järjestelmä
(oktaaliluvut).

Tehtävä 48: Kirjoita kymmenjärjestelmän luku 255 nelijärjestelmässä.

Muistiinpanot ryhmäkoonnista:

3333 1020 3333 3333 3333 (ei vielä lopullista) (joku konvertteri
käyttöön ja katsotaan, mitä se kertoo) 3333

Logiikkaa, esim: Lähellä oleva luku 256 on 4^4. Joten se on ykkönen ja
neljä nollaa.. Siitä edellinen luku 255 on 3333.


255 on heksana 0xff.

Se on bitteinä 1111  1111
               11 11 11 11
               3  3  3  3


(Yritetään muistaa ja toteuttaa aiempi palaute: Mallivastauksen
käsittely voidaan tehdä nopeasti)


*** Näätäilyä livenä: Osaamisen arviointia ( == tenttitärppi!)

Tutkitaan kysymyspankin kysymysten rakennetta ja poimitaan jotakin,
mihin pitäisi olla jo vastauksia hahmottumaan päin.

Noudatetaan jo tutuksi tullutta näätäilyprotokollaa.

**** Protokolla:

  - Kolmen hengen ryhmät lähellä istuvien kanssa.

  - 3*30 sekunnin nimi- ja fiiliskierros, jotta keskustelu lämpenee.

  - Päivän tenttitärppi yksin-ryhmissä-kaikki -menettelyllä (seuraava
    kohta).

**** Tehtävä

- Kysymys on... ehkä viime vuoden (2021) ensimmäisestä tentistä
  (kysymykset 35-37/48)

  Kysymys on aiempia pidempi, kun on koodiesimerkki! Kellotetaan
  tuplamäärät aikaa kaikkiin vaiheisiin, verrattuna aiempaan.
  Askarrellaan kysymykset näkyviin samaan videonäyttöön koodiesimerkin
  kanssa, jos jotenkin mahdollista:

  Kysymys 35. Väite: Aina, kun rivi 4 tulee suoritukseen, se tapahtuu
  ainoastaan fork() -kutsun luomassa lapsiprosessissa. (A=kyllä; B=ei)

  b b b a/b b

  Kysymys 36. Väite: Aina, kun rivi 5 tulee suoritukseen, on olemassa
  sekä shell että sen luoma lapsiprosessi. (A=kyllä; B=ei)

  a a a b a

  Kysymys 37. Väite: Aina, kun rivi 7 tulee suoritukseen, se tapahtuu
  alkuperäisessä shell-prosessissa, ei siis fork():n luomassa
  lapsiprosessissa.  (A=kyllä; B=ei)

  a a a a a 

- Kellotetaan 2 minuuttia aikaa tehtävän lukemiseen.

- Kellotetaan 2 minuuttia aikaa siihen, että jokainen miettii hiljaa
  itselleen vastaukset

- Ryhmäkeskustelu 4 minuuttia: Käykää läpi kaikkien omat vastaukset.

  Neuvotelkaa siitä, mikä niistä ehkä on eniten oikein.

- Yhteinen koonti: Kerätään luentotallenteelle ehdotuksia
  vastauksista.

  Varmistaan myös oikea vastaus ja että lopulta kaikki osaisivat tehdä
  tällaisen tehtävän tentissä täysillä pisteillä.

Muistiinpanot ryhmäkoonnista:

yllä.



(Yritetään muistaa ja toteuttaa aiempi palaute: Mallivastauksen
käsittely voidaan tehdä nopeasti. Eipäs, vaan tästä saatiin aasinsilta
takaisin karhuluennon puolelle.)




*** Muistiin tilanne vuoden 2022 luennolla 13

Koodiliitettä eteenpäin!

minish

Jouheva jatkumo edellisistä asioista, demoista ja tenttitärpistä...
säikeistä jo? vai signaaleista?

Vai kutsupino ja rekursio debuggerilla tutkittuna demo4:n
esimerkkikoodin kanssa?

*** Tilannekuvaa vuoden 2022 luennon 14 paikkeilta

Edetään demoissa aiemmin nähtyjen ja monisteen koodiliitteessäkin
olevien konkreettisten esimerkkikoodien kautta, loogisessa
järjestyksessä.

**** Viime kerran asia loppuun: minish, fork(), exec(), wait(), exit()

Jatketaan viime kerran asia loppuun, ja kollataan vielä näätäilijöiden
vastausten oikeellisuus tenttitärpistä.

**** Demo 4 revisited: Debuggerin käyttöä, kutsupino, muistivuoto

Debuggeri, kutsupinon tutkiminen, backtrace, muistin sisällön
tutkimista, reverse engineeringiä.

Debuggerin heksana näyttämien osoitteiden suhteutus monisteen
muistikarttakuviin!

**** Demo 4b revisited: Siitä oikeasti tulee viiden rivin vastaus.

Pinokehys? Ei vielä tarvita paljonkaan. Miksi?

**** Demo 5 revisited: Mitä tästä saa demo 4b:n ja demo 6:n välissä

Tässä nähdään vaiheittain aliohjelman kutsuminen ja SysV ABIn mukainen
pinokehysten käyttö.



*** Vuoden 2022 viimeinen Näätäily 3.0 tapahtui luennolla 15

Noudatetaan harjoiteltua protokollaa. Katsotaan konekielitärppiin
keskustellen ratkaisustrategiaa.

**** Protokolla:

  - Kolmen hengen ryhmät lähellä istuvien kanssa.

  - 3*30 sekunnin nimi- ja fiiliskierros, jotta keskustelu lämpenee.

  - Päivän tenttitärppi yksin-ryhmissä-kaikki -menettelyllä (seuraava
    kohta).

**** Tehtävä

- Kysymys on... viime vuoden (2021) ensimmäisestä tentistä
  (kysymykset 42-44/48)

  Koetetaan askarrella näkyville mallikoodi ja kysymykset.

  Käydään tämä ratkaisustrategian tasolla,
  eli miten lähtisit ratkomaan tällaista?

  Kysymys 42: Kuinka monta käskyä
  ohjelmanpätkän jälki sisältää, ts.
  kuinka monta käskyä prosessi
  suorittaa siitä alken, kun
  käyttöjärjestelmä siirtää kontrollin
  nimettyyn aloituspisteeseen "_start"?

  Kysymys 43: Mikä on RCX:n
  sisältämä luku suorituksen lopuksi?

  Kysymys 44: Mikä on RDI:n
  sisältämä luku suorituksen lopuksi?

- Ryhmäkeskustelu 3 minuuttia:
  Käykää läpi kaikkien omat
  ratkaisustrategiat.

  Neuvotelkaa siitä, mikä niistä
  ehkä olisi paras tai helpoin tapa.

- Kellotetaan 2 minuuttia aikaa
  tutustua tehtävään.

- Kellotetaan 1 minuutti aikaa
  miettiä oma lähtökohta: Mitä teen,
  että saan vastaukset oikein.


- Yhteinen koonti: Kerätään luentotallenteelle ehdotuksia
  vastauksista.

  Varmistaan myös oikea vastaus ja että lopulta kaikki osaisivat tehdä
  tällaisen tehtävän tentissä täysillä pisteillä.

Muistiinpanot ryhmäkoonnista:

- Tehtävään 42: Lasketaan rivit _start:n
  jälkeen. Vastaus suoraan 7.

- Tehtävään 42: Lasketaan rivit _start
  jälkeen ja lisäksi ali:n jälkeen
  tulevat rivit. Vastaus suoraan 7+3 = 10.

- Tehtävään 42: Seurataan ohjelman
  toimintaa alusta lähtien käsky
  kerrallaan.

  Kynä ja paperi!

- Entäpä jopa kokeilu jalavassa/halavassa

Äänesteltiin. Voittajaksi nousi:

Seurataan ohjelman
toimintaa alusta lähtien käsky
kerrallaan.

Kynä ja paperi!

(Yritetään muistaa ja toteuttaa aiempi palaute: Mallivastauksen
käsittely voidaan tehdä nopeasti. Näytetään siis pari toimivaa tapaa
ratkaista.)







* Aiempien vuosien (2020-2022) toteumaa vertailun vuoksi ja suunnittelun tueksi

** Ideoita jo vuoden 2024 toteutusta ajatellen

*** Vuoden 2022 Näätäily 3.0 kohti vuotta 2024: ryhmäkeskustelu viikon ekan luennon kärkeen?

**** (ennakointia pääsiäisen paikkeilla 2022) Ajatus, kenties ennakoiva: ryhmäkeskustelu luentoviikon kärkeen?

Kokeiltiin 2022 seuraavanlaista menettelyä. Se voidaan ehkä ottaa
käyttöön sitten, kun ehkä päästään aidompaan "Flipped classroomiin" jo
olemassa olevien aihepiirivideoiden myötä. Tämä tapahtunee
aikaisintaan keväällä 2024. Vuonna 2023 oli vähän erilaisia kokeiluja
(aihepiirivideoiden tuottaminen studioyleisön läsnäollessa).

Viikon ensimmäisellä luennolla voitaisiin käydä pienet
ryhmäkeskustelut tähän malliin (siis alkaen pääsiäisen jälkeen):

- Nimi- ja fiiliskierros 3x30 sekuntia

- Ajatustenvaihto yksin-ryhmässä-kaikki: Mikä on ollut
  mielenkiintoisinta viikon lukupaketissa?

- Ajatustenvaihto yksin-ryhmässä-kaikki: Mikä on auttanut ymmärtämään
  asioita omalla kohdalla?

- Koonnit luentovideolle ja muistioon.

Mahdollisesti kokeillaan pääsiäisen jälkeen ja otetaan vähän aikaa,
paljonko tällainen näätäily vaatisi. Tavoitteena olisi saada buustia
fyysisestä läsnäolosta.

**** Eka toteuma

Otettiin tällaista käyttöön luennolla 7 keväällä 2022. Ei välttämättä
tule ihan tällaista keväälle 2023, kun tehdään aihepiirivideoita, eikä
"paluu kampukselle" ole enää vastaavalla tavalla prioriteetti kuin se
oli vielä 2022 korona-ajan jälkeen. Siitä muuten huomio:
Kannustuksista ja patistuksista huolimatta iso osa ei koskaan palannut
fyysiselle kampukselle. Tämä oikeastaan on nyt sisäistetty ja
sisällytetty kevään 2023 kulkuun tässä "studioyleisön sparraamien
aihepiirivideoiden tuottaminen kotikatsomoille" -konseptissa.

Entä tulevaisuus? Vuonna 2024 ehkä on aihepiirivideot jo nauhalla,
jolloin voisi olla perusteltua tarjota lähinnä keskustelu- ja
näätäilyhetkiä tositarkoituksella? Joskus "vain läsnä", joskus "vain
etä", joskus "hybridi sekä että" - ennakkoon tiedotetusti
kutakin. Niille, jotka kovat hyötyvänsä live-interaktiosta videoiden
ja tekstimateriaalien lisäksi.

Alla copy-paste vuodelta 2022. (Silloisen käytännön kuvaus.)

Kaksi viikkoa sitten ennakoitiin tätä, ja nyt kokeillaan. Viikon
ensimmäisellä luennolla voitaisiin käydä pienet ryhmäkeskustelut tähän
malliin (siis alkaen pääsiäisen jälkeen). Ideaalisti kolmen hengen
ryhmissä:

- Nimi- ja fiiliskierros 3x30 sekuntia

- Ajatustenvaihto yksin-ryhmässä-kaikki:

  Mikä on ollut mielenkiintoisinta lukupaketissa / demoissa tähän
  asti?

  Yksin: 1 minuutti.
  Ryhmässä: 2 minuuttia.

  Kaikki: Niin kauan, että saadaan ajatukset ylös ja tallentumaan
  videolle.
  
  Muistiinpanoja: Demot ovat olleet mielenkiintoisia. Riippuu
  henkilöstä. Skriptin kirjoittaminen oli mielenkiintoista. Demot on
  lopulta yksinkertaisempia, kuin ohjetta lukemalla ensin
  vaikuttaa. Teoriapuoli on ollut monelle kertausta tähän asti (pätee
  tietotekniikan pääaineopiskelijoille). Osalle taas teoriapuoli ei
  ole vielä auennutkaan. Vim ja Emacs nousseet mielekkäimmiksi
  harjoiteltaviksi.

- Ajatustenvaihto yksin-ryhmässä-kaikki:

  Mikä on auttanut ymmärtämään asioita omalla kohdalla?

  Yksin: 1 minuutti.
  Ryhmässä: 2 minuuttia.

  Kaikki: Niin kauan, että saadaan ajatukset ylös ja tallentumaan
  videolle.
  
  Muistiinpanoja: Googlen käyttö auttaa (+1). YouTube-videot, joissa
  näitä asioita on animoitu. Torstaiaamun "open labrapäivä". Oikeiden
  dokumenttien lueskelu (voisi olla enemmän englanninkielisiä
  termejä). Käytännön tekeminen oikeassa
  elämässä. Pelillistäminen. Kaverin kanssa tekeminen ja
  keskusteleminen. Ylipäätään demojen tekeminen. Teorian ja käytännön
  välillä vaihtelu. Asioille pitää varata aikaa! Kalenterointi,
  rutiini. Opettaminen toiselle. Omin käsin tekeminen. Innostavat
  luennot auttavat.

- Koonnit / kiteytykset luentovideolle ja muistioon.

Kokeillaan ja otetaan vähän aikaa, paljonko tällainen näätäily
vaatisi. Tavoitteena olisi saada buustia fyysisestä läsnäolosta ja
pieni yhteisöllinen aspekti siihen, että ollaan tultu kampukselle.









*** Vuoden 2022 Näätäilyä luentokertojen välillä (esimerkki) - kurkistetaan Flingaan

Kurkataan Flingaan lyhyesti, suuntaviivoiksi tuleville luentokerroille
ja suhteessa aiemmin käsitelyyksi tulleisiin asioihin. Jotakin on
saatu varmaankin viime viikolla jo pakettiin?

Käsiteltyä:

- Kertaus - mikä tuo Makefilejuttu on? (Luennolta: POSIX-standardi
  auki, sieltä Shell & Utilities, sieltä make; lyhyesti make
  'valmistaa' ohjelman annetun Makefile-ohjeen mukaisesti.)

- Voisiko luentoihin sisällyttää jonkinlaisen demojen työstämistä
  helpottavan 10-15min tiiserin, jolla pääsee hieman helpommin kiinni
  kunkin viikon "kotitehtävään"?

- Käyttäessä pääteyhteyttä screenin kanssa, jossa pyörii emacs on
  screeniin vaihtaminen huomattavasti hitaampaa kuin Paavon. Mistä
  tämä johtuu? (Ei pitäisi tietokoneen tehoista johtua)

- Sori, ei ollut tarkoitus. Kiitos silti!


** Jotain viime- ja toissavuotisia

*** Kyssäri erään luennon lopussa 2021: Mitä AMD64 oikeastaan tekee FLIHissä?

'Toinen kysymys tuli mielee eri aiheesta, tulkinnanvarasta, sanottiin
luentomonisteessa että "keskytyskäsittely on laitetasolla ehkä
monimutkikkain prosessorin operaatio mitä käydään kurssilla". Saisiko
tähän avautta vähän, siis kirjaimellisesti vai vaikea ymmärtää. Oli
siinä vaiheita kyllä.'

Vastaus: AMD64-manuaali.

Opettaja teki vähän kotiläksyjä.. Eli etsi tarkat kohdat
lähdemateriaalissa:

AMD64 manual, Vol 2, s. 19 (luku 1.6) esittelee keskeytykset
alustavasti. Ristiviittaus tarkempaan selostukseen myöhemmässä kohtaa
manuaalia. Nykypäivänä 64-bittiselle arkkitehtuurille "Long-Mode
Interrupt" on se, mitä katsotaan (ristiviittaus sivulle 247).

Sivu 247 eli luku 8.9: Osoittautuu, että nykyinen on laajennos
vanhalle. Eli uutta peruskuvauksessa on sivut 247-253 (5
manuaalisivua). Kokonaisuuden perustuu vanhaan. Vanha 32-bittinen
kuvaillaan sivuilla 237-244 (7 manuaalisivua). Näiden yhteensä 12
sivun ymmärtäminen vaatinee 100-200 sivua esitietoa manuaalin
johdantoluvuista.

Syventävällä jatkokurssilla (jota ei vielä ole olamassa) nämä kaikki
opeteltaisiin sille tasolle, että pystyttäisiin tekemään oma
keskeytyskäsittelijä vähintään näppäinpainallukselle ja kellolle
osaksi omaa pientä käyttöjärjestelmää. Lisäharjoitteena voisi olla
toteuttaa nämä sekä AMD64-prosessorille että jollekin toiselle :). 

Nyt ei olla syventävällä jatkokurssilla, joten tyydymme
luentomonisteen kiteytykseen, joka on kiteytys tyypillisessä
oppikirjassa olevalle kiteytykselle.

Kiteytyksissä on minimaaliset "hyvä tietää" -tyyppiset asiat siitä,
mitä keskeytyksen käsittelyyn siirtyminen vaatii.

Palataan alkuperäiseen kysymykseen luennon chatista:

- "keskytyskäsittely on laitetasolla ehkä monimutkikkain prosessorin
  operaatio mitä käydään kurssilla". Saisiko tähän avautta vähän, siis
  kirjaimellisesti vai vaikea ymmärtää. Oli siinä vaiheita kyllä.

*Vastaus*: Joo-o, ilmeisesti siinä tapahtuu kerralla paljon enemmän
kuin vaikkapa aliohjelmakutsuun siirtymisessä eli CALL-käskyn
suorittamisessa"! Jokainen keskeytys on hirvittävän pitkään kestävä
operaatio verrattuna siihen, että prosessori vain etenee
suoritussyklissä nykyisen prosessin käskysarjaa eteenpäin. Eli:

- "kirjaimellisesti" - ei sen kummempaa kuin: "Prosessori tekee, mitä
  sen pitää, että yksi prosessi voi keskeytyä ja jatkaa myöhemmin
  niin, että sen ei tarvitse edes tietää mitään keskeytyksestä"

- "kirjaimellisesti" - aika monta asiaa, mitkä eivät hoidu muutamassa
  nanosekunnissa, ei sitten millään. Toisin kuin joku pluslasku
  rekisterien välillä.

- "vaikea ymmärtää"? Ei sen vaikeampaa kuin ylläoleva kiteytyksen
  kiteytys.

- "vaikea ymmärtää, että saan tehtyä asian X"? Riippuu asiasta
  X. Tavalliseen sovellusohjelmaan ei tasan mitään väliä. Kahta
  säiettä tausta-ajoon käyttävässä ohjelmassa tarvitset jo jotain
  käryä asiasta. Kokonaisen käyttöjärjestelmän tekemiseksi pitää
  hallita tuhansia sivuja niiden prosessorien dokumentaatiota, joille
  järjestelmä keskeytyskäsittelyineen tehdään.

- Mikään ei ole vaikea ymmärtää, jos ymmärrät kaikki esitiedot, mitä
  seuraava pieni askel vaatii. Aloita vaikka AMD64:n Volume 1:n
  johdantoluvusta ja Käyttöjärjestelmät -kurssin
  luentomonisteesta. Yhteensäkin vain muutama sata sivua :).

  "Matka alkaa ensimmäisestä askeleesta!"

*** Vuoden 2021 luennon 14 paikkeilla käsiteltyä:

- Tehtäiskö vaikka esimerkkitapaus kädestä pitäen virtuaaliosoitteen
  muuttamisesta fyysiseksi, esim. materiaalin kuvan 27 -> avulla?
  - Katso luentovideo.

        [ TAUKO -> 11:15 ASTI ]

- Lokaalisuusperiaattesta jokin tiivistävä määritelmä? Milloin taikka
  miten tulisi huomioida vai tulisiko lainkaan?
  - kannattaa pohtia esimerkin B.4 cache.c kautta
  - iltalukemista: http://denninginstitute.com/pjd/PUBS/CACMcols/cacmJul05.pdf


- Jos prosessi olisi jaettavissa 2 täysin identtiseen osaan jotka
  jaettaisi 2 säikeelle niin missä suhteessa prosessin läpiajo
  nopeutuisi vs prosessi suoritettaisiin yhdellä säikeellä alusta
  loppuun?
  - Katso vaikka Wikipediasta Amdahlin laki.
  ( - esimerkin kautta 'Rinnakaislaskentaa säikeistämisellä' s. 217 ja seuraava )


Katsottiin vielä, mistä Demo 6:ssa on kyse.


Tämän päivän tavoite siis:

- Varmistetaan, että demo 5 on käynnissä.
- Paikataan ymmärrysaukkoja lukuihin 9 ja 10 kysymysten pohjalta.
- Katsottiin demo 6:tta

*** Vuonna 2020 luennolla 15 kartoitettuja uusia kysymyksiä

Kysymykset tänään (5 min aikaa esittää):

- Joku maininta Flash muistista ja sen erosta SSD muistiin?

- Tietääkö siis siitä että on varmasti kurssilla, että pääsee
  moodlessa sivulle jossa lukee "Prinsessa ei ole tässäkään
  linnassa."? Ja tämä riitti tentti-ilmoittautumiseksi?

- Luentomonisteessa sivuilla 145 ja 146 esitettyjen kysymyksien
  vastauksien perustelut.

- Tuleeko olemaan aamupäivän tenttejä tarjolla? Työt menee keskiviikon
  tentin kanssa päällekkäin...

- Jos joku kova linkattu tiedosto poistetaan niin poistuuko kaikki
  kyseisessä linkki "ketjussa" olevat tiedostot?

- oisko mahdollista saada joku yhteenveto kurssin pääaiheista/
  tärkeimmistä aiheista

- Voidaanko katsoa vielä mistä kohtaa luentomonistetta näkyisi demo 5
  parhaat neuvot?

- Lisää tenttitärppien läpikäymistä!

- Voisiko katsoa materiaalien sivulla 164 kuvan 33. vielä läpi, jotta
  kunnolla sisäistää kokonaisuuden

- Mitenkä parametrinvälitys aliohjelmalle (assembly-tasolla) menee,
  jos ei ole integer-tyyppinen muuttuja vaan esimerkiksi file?

- DMA ja RAID? Näiden toimintaperiaatteet? 

- Luentomonisteen tärkeimmät luvut jotka erityisesti kannattaa
  sisäistää?

- s.57 monisteessa puhutaan exit() kutsusta ja sen järjestysnro on 60,
  mutta s 56 olevassa koodissa en löydä tätä

- voisi vielä kerrata tuota sivun 79 kuvan pinokehysasiaa 

Priorisoidaan tauon jälkeen.

[Tauko 15:15 asti. Kesti vähän yli, koska tapahtui opettajien
pedagoginen esikarsinta ja jäsennys ennen pollausta.]

Priorisoitiin.

*** Vuonna 2021 (ja yleensäkin aina) pois jätettyjä: Flash, SSD, DMA, RAID


Aihealueen ohittavat:

- Joku maininta Flash muistista ja sen erosta SSD muistiin?

  Vastaus: Katso Googlesta.

- DMA ja RAID? Näiden toimintaperiaatteet? 

  Vastaus: Rajataan tänä vuonna tentin ulkopuolelle. Monisteessa on OK
  lähdöt, ja Wikipedia kertoo kyllä lisää.

[Perjantaina loput.]

*** Aiemman vuoden kysymys ja vastaus heksaluvuista 3.4.2020

- Heksaluvut, apuja opetteluun?

  ja sitten, missähän pääsee opettelemaan noita heksamuunnosjuttuja,
  mulla on joku niihin liittyvä narkolepsia ja tarviin toisteisuutta
  että opin :)

  Luentomonisteessa oli esimerkki: "Esimerkiksi luku 123 on
  heksajärjestelmässä 7B_16 = 7 · 16^1 + 11 · 16^0 = 123." Miten tuo
  ratkaisu saadaan? Miten sitä lähdetään selvittämään?

  Eri lukujärjestelmien numerot:
  - 01                binäärit
  - 0123456789        desimaalit
  - 0123456789ABCDEF  heksadesimaalit

  Esimerkki kymmenjärjestelmässä ja heksadesimaalina:
     123 = 1 * 100 + 2 * 10 + 3 * 1
    0x7B =           7 * 16 + B * 1   = 7 * 16  + 11 * 1  = 112 + 11 = 123

  Tuo '0x' on yleinen tunniste monissa kielissä, kun halutaan esittää heksoja.

  Liikaakin lisätietoa löytyy osoitteesta https://en.wikipedia.org/wiki/Hexadecimal
*** Joitain kysymyksiä ja vastauksia vuodelta 2020, viimeisellä luennolla

Nopeat:

- Mitenkä parametrinvälitys aliohjelmalle (assembly-tasolla) menee,
  jos ei ole integer-tyyppinen muuttuja vaan esimerkiksi file?

  Vastaus: "file" (anteeksi lainausmerkit) välitetään esimerkiksi
  fgetc():lle muistiosoitteena FILE -tyyppiseen
  tietueeseen. Välitettävänä on siis kokonaisluku, joka on
  muistiosoite. Parametrin välitys on täsmälleen samanlainen kuin
  saman pituisissa kokonaisluvuissa. Esimerkiksi AMD64:ssä
  64-bittisille kokonaisluvuille. Sopimus: SysV ABI kertoo kaikki
  muutkin vaihtoehdot, mutta niitä EI nähdä tällä kurssilla.

- Voidaanko katsoa vielä mistä kohtaa luentomonistetta näkyisi demo 5
  parhaat neuvot?

  Vastaus: Luennolla kuvatuin perustein sanoisin, että *erityisesti luku
  4* avaa demon 5 asiaa. Edellyttää esitietoja luvuista 1-3, ja koko
  homman tavoitteena on tukea lukujen 6-12 ymmärtämistä.

- Luentomonisteessa sivuilla 145 ja 146 esitettyjen kysymyksien
  vastauksien perustelut.

  Vastaus: Pitkä ja harras selitys tärpeistä tähän tehtävään on
  "Luento 14: (pe 8.5.2020)". Kysymys virtuaalimuistiosoitteen
  muuntamisesta.


Esikarsitut, pollatut ja priorisoidut:

- Kurssin pääaiheiden yhteenveto

  Oisko mahdollista saada joku yhteenveto kurssin pääaiheista/
  tärkeimmistä aiheista

  Vastaus: Katso luentovideo.

  Luentomonisteen tärkeimmät luvut jotka erityisesti kannattaa
  sisäistää?

  * Luvut 1-5 ehdottoman tärkeä. Muuten ei ole edellytyksiä edetä.

  * Luku 6 motivaation kannalta, mutta ei ehkä teknisen näkökulman tai
    teknisen tekemisen tasolla.

  * Varsinainen sisältö ovat (tällä kurssilla) luvut 7-12. Kaikki ovat
    yhtä tärkeitä!
  

[Tauko 11:20 asti]
  
- Tiedostojärjestelmän tietorakenteet (s. 164)

  Voisiko katsoa materiaalien sivulla 164 kuvan 33. vielä läpi, jotta
  kunnolla sisäistää kokonaisuuden

  Vastaus: Katso luentovideo.


Pointtereita seuraaviin, joita ei ehditty käydä "varren kanssa":

- Pinokehyksen kertaaminen (s. 79)

  voisi vielä kerrata tuota sivun 79 kuvan pinokehysasiaa 

  Varsi olisi ollut: Etsittäisiin luentomuistiinpanoista, millä
  luennolla tätä käytiin läpi. Tarkistettaisiin videolta, tuliko
  siellä riittävästi.

  Jatkovarsi olisi ollut: Miten tämä asia ilmenee demossa 5.

- Miten tiedostolinkit toimivat?

  Jos useampi tiedosto on kova linkattu niin poistaa yhden poistuuko
  kaikki? Vai ymmärsinkö koko linkityksen väärin

  Varsi olisi ollut: Kokeillaan käytännössä halavalla / jalavalla.

  Vastaus: On hyvä perusosaamisen testi itsellesi, osaatko tehdä tämän
  kokeilun ja vakuuttua siitä, kuinka homma näyttää
  jalavalla/halavalla pelittävän.

- Miksi s.57 exit() on 60 mutta ei konekoodissa?

  s.57 monisteessa puhutaan exit() kutsusta ja sen järjestysnro on 60,
  mutta s 56 olevassa koodissa en löydä tätä