sunnuntai 9. joulukuuta 2012

hiljaiseloa kokeiluissa - vain STAD tällä erää

On sen verran rankka opetusjakso että vedetään samalla STAD-kaavalla tammikuulle. Kokemattomalle opelle yhteistoiminnallisuus-kokeilut kun vielä vaati lisätyötä.

Pakkovallan ja ulkoisen motivaation osuutta on maksimoitu (tuntikoe+läksy arvosanaporkkana), tämä tosin aiheuttaa opelle lisätyötä (tuntikokeen kirjaus ja tarkastuksen tarkastus, läksyn kirjaus).

Student-Teams-Achievement-Divisions-menetelmässä on tehokkaana porkkanana joka tunnin lopuksi pidettävä tuntikoe, joka vaikuttaa minulla 1/3 painolla arvosanaan. Läksyn tekemiset vaikuttaa 1/6 painolla. Joillain hitailla oppilailla mennään perinteisellä arvostelulla koska tuntikokeissa on heille liian vähän aikaa.

Tunnin rakenne on seuraava (lukion lyhyt matikka jossa perinteisesti paljon arvosanaa 4 sekä kemian pakollinen kurssi):
  • Satunnaiset oppilaat esittävät läksytehtävät dokumenttikameralla, opettaja kiertää merkitsemässä onko läksyt tehty.
  • Opettaja/ Khan-academy/ opetustv esittää teorian
  • Tehdään tehtäviä ryhmissä (4 opiskelijaa), opettaja kiertää.
  • Tarvittaessa opettaja esittää ratkaisun taululla.
  • Tunnin lopussa 5min koe, sitten 5min toisen opiskelijan kokeen tarkastusta opettajan antaman ohjeen mukaan. Paperit lopuksi opettajalle.

torstai 8. marraskuuta 2012

Väliepisodi: koira (MAB4, lukio)


Tänään meillä oli apuopettajana Veeti-koira (1v 2kk, uros, Welsh Springer Spanieli, 22kg).
Tarkoitus oli että koira hengailisi opettajan liepeillä vähentäen oppilaiden kynnystä esittää kysymyksiä. Tämä toimi hyvin ratakadun norssissa yläasteen kemiassa viime keväänä (Veeti oli tuolloin pentu, n. 1/2v).

Huomioita:
  • Veeti haukkui liikaa
  • Veeti puri liikaa
  • Veeti tuhosi roskiksen
  • Veeti yritti tuhota oppilaan sukkahousut (jotka se ensin kaivoi repusta).

    Johtopäätöksiä:
    • Koiran pitäisi olla sopivan ikäinen (ehkä alle 3/4v tai yli 2v)
    • tai erittäin hyvin kasvatettu
    • Lukiossa hyöty ei tunnu olevan niin suuri kuin yläasteella koska oppilaat käyttäytyvät jo valmiiksi hyvin.

tiistai 6. marraskuuta 2012

Yksi tekee, muut coachaa


Tämä sopii etenkin sellaiseen tehtävään jossa seuraavan osatehtävän ratkaisu riippuu edellisen tehtävän ratkaisusta. Tällöin oppilaiden pitäisi olla motivoituneita koska oman ongelman ratkaisu riippuu aiemman ongelman ratkaisusta. Toisaalta jotkut  saattavat lopettaa auttamisen kun oma ongelma on ratkaistu. Riskin joutua taululle pitäisi kuitenkin motivoida jatkuvasti.

  1. Vuorotellen vastataan esim 4. kysymykseen siten että kiertävässä vuorossa joku ratkaisee ongelman ja muut auttavat (coachaavat). Jokainen kirjoittaa vastauksen omaan vihkoonsa
  2. Kustakin ryhmästä arvotaan (numero 1-4) esittäjä taululle (käytettävissä osa taulua kullekin ryhmälle). Jos tabletti käytössä tässä voisikin käyttää Sokratesta.


    Huomio: ei oikein toiminut, ehkä ongelma oli liian vaikea... Osa ryhmistä jämähti 1. tehtävään eikä osannut pyytää opelta apua eikä ope huomannut...

Kiertävä paperi


  1. Vuorotellen vastataan esim 4. kysymykseen siten että kiertävä paperi/vihko  on vastaajalla. Muu ryhmä miettii hiljaa vastausta omaan kysymykseensä tai muiden kysymyksiin. Esim. 5min aikaa, jos ei tule vastausta niin??? Jos 3 tai 5 ryhmässä johonkin kysymykseen vastataan kahdesti tai joku vastaa kahdesti.
  2. Kun kaikki ovat saaneet vastata käydään vastaukset läpi ryhmässä ja muodostetaan ryhmä konsensus.
  3. Kustakin ryhmästä arvotaan (numero 1-4) esittäjä taululle (käytettävissä osa taulua kullekin ryhmälle). Jos tabletti käytössä tässä voisikin käyttää Sokratesta.

    Huomioita: tärkeää olla aikaraja jottei jää jumittamaan yhden oppilaan kohdalle. Tämä toimi ehkä parhaiten kokeilemistani yhteistoiminnallisista ryhmämuodoista tähän asti.

keskiviikko 31. lokakuuta 2012

Numbered heads together

     Numbered heads together

    1. Ryhmän kukin jäsen ottaa numeron 1-4
    2. Ratkaistaan tehtävä itsenäisesti
    3. Keskustellaan ryhmässä mikä on oikea tulos ja muutetaan mahdollisesti omaa tulosta. Ryhmän pitäisi saavuttaa konsensus.
    4. Arvotaan numero 1-4 ja jokaisesta ryhmästä voittaja kirjoittaa ryhmän tuloksen taululle.(Yleensä käytän oppilasta onnettarena, mutta koska kaikki tässä jäävejä annoin androidin lottokoneen arpoa,Private Lottery Machine - Android Apps on Google Play)
    5. Opettaja kommentoi vastauksia ja opettaa lyhyesti sen osan jota ei oltu osattu.

      Huomioita:
    • Opettajan panosta tarvittiin varmistamaan että kaikilla oppilailla on numero
    • Jotkut oppilaat eivät olisi millään halunneet tehdä yksin (oli muutama tunti ratkottu tehtäviä vain ryhmissä) -> opettajan piti sanoa aikaraja jotta motivaation nousi
    • 1/5 osa ryhmistä ei saanut kaikkia vastauksia (olisi pitänyt kysellä jälkeenpäin miksi näin oli käynyt, eikä osattu vai jaksettu)

    torstai 25. lokakuuta 2012

    Ryhmienmuodostus-ohjelmanpätkä

    Arvottiin uudet ryhmät ao. Python ohjelmalla. Siinä voi valita
    1. ryhmäkoon, 
    2. yritetäänkö tehdä mahdollisimman tasa-sukupuolisia ryhmiä 
    3. yritetäänkö tehdä osaamisen mielessä mahdollisimman heterogeenisiä ryhmiä.  
    Ohjelma vaatii input-tiedoston (jossa ei saa olla ääkkösiå) ja joka on muotoa
    Aalto Antti     1      1
    Ystad Yrsa      0      0

    (2 viimeistä lukua ovat sukupuoli ja osaako vei eikö)

    Jos esim haluaa 4 hengen tasasukupuolisia, ja mahd. heterogeenisia ryhmiä sanotaan
    ./make_random_groups.py mab4.txt 4 True True

    #-------OHJELMA ALKAA TASTA--------


    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # markus.kaukonen@iki.fi 25.10.2012

    """
    Forming student groups for schools in the spirit of Kagan structures.
    Each group should have equal amount of boys and girls if second last flag==True
    Each group should have good and bad students (by grade) if the last flag == True

    The sex equality preceeds the heterogenity of a group.

    USAGE:

    ./make_random_groups.py namefile.txt groupsize boys/girls Hetero
    ./make_random_groups.py mab4.txt 4 True True

    In the text file
    first column name
    second column name
    third column: 1=boy, 0=girl,
    fourth column: 1=good previous marks, 0=bad previous marks
    """

    import sys, random
    import numpy as np

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    from matplotlib.collections import PatchCollection
    import matplotlib.path as mpath
    import matplotlib.patches as mpatches
    import matplotlib.lines as mlines

    max_trial = 1000

    #read lines
    infile=open(sys.argv[1],'r')
    initlines=infile.readlines()
    infile.close()
    lines = []
    # Get rid of empty lines
    for line in initlines:
        # Strip whitespace, should leave nothing if empty line was just "\n"
        if not line.strip():
            continue
        # We got something, save it
        else:
            lines.append(line)

    group_size = int(sys.argv[2])

    if eval(sys.argv[3]):
        sex=[]
        for line in lines:
            sex.append(int(line.split()[2]))
    sexnp = np.array(sex)

    bestsex = sum(sexnp)/float(len(sex))
    #how many sexually even groups one can make
    boys=sum(sexnp)
    girls=len(lines)-boys
    n_of_groups = len(lines)/group_size
    print "boys, girls, min(boys,girls)",boys, girls, min(boys,girls)
    max_ok_sex_groups=min(boys,girls)/2
    print "n_of_groups, max_ok_sex_groups", n_of_groups, max_ok_sex_groups

    a=np.array(lines)
    data=a.ravel()
    ok_sex_groups = 0
    #trying to make even-sex groups
    while not(ok_sex_groups == max_ok_sex_groups):
        indexes=np.random.permutation(data.size)
        ok_sex_groups = 0
        j=0
        sum_sex = 0
        for i in indexes:
            j=j+1
            sum_sex = sum_sex + int(lines[i].split()[2])
            if j==group_size:
                if sum_sex == group_size/2:
                    ok_sex_groups = ok_sex_groups + 1
                j=0
                sum_sex = 0

    #trying to make heterogeneous (by grade) groups
    print "sys.argv[4]:", sys.argv[4]
    if eval(sys.argv[4]):
        grade=[]
        for i in indexes:
            grade.append(int(lines[i].split()[3]))
        for i in indexes[0:4]:
            print lines[i],
        gradenp = np.array(grade)
        group_grade_sum=gradenp.copy()
        for igra in range(0,len(grade),group_size):
            group_grade_sum[igra:igra+group_size]=\
                abs(group_size/2 - sum(gradenp[igra:igra+group_size]))
        #swapping pairs if it makes groups more heterogeneous
        #also, sex must be conserved
        trial = 0
        while trial < max_trial:
            trial = trial + 1
            while True:
                i1=random.randint(0,len(grade)-1)
                i2=random.randint(0,len(grade)-1)
                if sex[indexes[i1]]==sex[indexes[i2]]:
                    break
            trial_gradenp = gradenp.copy()
            tmp=trial_gradenp[i1]
            trial_gradenp[i1] = trial_gradenp[i2]
            trial_gradenp[i2] = tmp
            new_group_grade_sum=group_grade_sum.copy()
            for igra in range(0,len(grade),group_size):
                new_group_grade_sum[igra:igra+group_size]=\
                    abs(group_size/2 - sum(trial_gradenp[igra:igra+group_size]))
            if (sum(new_group_grade_sum) < sum(group_grade_sum)):
                group_grade_sum=new_group_grade_sum.copy()
                gradenp = trial_gradenp.copy()

                tmp=indexes[i1]
                indexes[i1]=indexes[i2]
                indexes[i2]=tmp
    j=0
    for i in indexes:
        line=lines[i]
        print line,
        j=j+1
        if j==group_size:
            print "------------------------------------"
            j=0

    font = "sans-serif"
    fig = plt.figure(figsize=(5,5))
    ax = plt.axes([0,0,1,1])

    # create 3x3 grid to plot the artists
    pos = np.mgrid[0.2:0.8:3j, 0.2:0.8:3j].reshape(2, -1)

    j=0
    box=0

    for i in indexes:
        line=lines[i]
        mystring = line.split()[1]+' '+line.split()[0][0]+'.'
        plt.text(-0.1+pos[0,box], pos[1,box]-0.15+0.05*j, mystring,
            family=font, size=10)
        j=j+1
        if j==group_size:
            box=box+1
            j=0

    plt.show()

    keskiviikko 24. lokakuuta 2012

    tee yksin -> ryhmäkonsensus -> taululle

    Tehdään 5 simppeliä tehtävää (kirjan pohdintatehtävä), joihin ei löydy oikeita vastauksia

    1) Funktion arvo pisteessä f(2) ja
    2) Funktion derivaatan arvo graafisesti pisteessä f'(2)
    jne ...


    1) yksin (10min)
    2) ryhmäkonsensus (5min)
    3) satunnainen ryhmäläinen taululle ("lähinnä takaseinää")
    Kaikista 8 ryhmästä tulee jotain tuotosta taululle. (3min)
    4) opettajajohtoisesti pisteytetään ja käydään oikeat vastaukset läpi.
    Huomataan ettei opettajakaan ollut osannut oikeaa vastausta vaan se löytyi eräältä ryhmältä.

    Ongelma:
    • Meni selvästi heikommin kuin edellinen rakenne jossa aluksi tehtiin pareittain.
    • Lisäksi oli 2 ryhmää joissa kukaan ei osannut mitään -> ei hyvä.

    Ratkaisu:
    • Ei pitäisi aloittaa tunteja klo 8
    • Pitää arpoa ryhmät uudelleen. Nyt käytin satunnaisia ryhmiä. Jako ei mennyt hyvin, sillä joissain ryhmissä kaikki osasivat hyvin ja joissain ei kukaan.
    • Uudessa arvonnassa voin tehdä ei-satunnaisia korjauksia (ks. python-ohjelmanpätkä seuraavassa blogissa)