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)



    maanantai 22. lokakuuta 2012

    parivalmennus -> ryhmäkonsensus -> taululle

    Lukio, MAB4 (26 oppilasta paikalla)

    Opetetaan lyhyesti taululla mekaanisia derivaattaoperaattoreita ja miten niitä käytetään.
    • D(x^n) = nx^(n-1)
    • D(kf) = kD(f)
    • D(f+g)=D(f)+D(g)
    Tämän jälkeen annetaan tehtävät
    a) D(x²) b) D(3x³) c) D(3x³+6x) d) D(8x⁴+6x²)

    1) Ratkaistaan parin kanssa vuorotellen a-d siten että toinen tekee ja toinen katsoo/neuvoo

    2) Isommassa (4 hengen) ryhmässä verrataan tuloksia ja koetetaan sopia mikä on oikea tulos

    3) Kustakin ryhmästä arvotaan esittäjä, joka kirjoittaa ryhmän tulokset (a,b,c,d) taululle. Nyt esittäjä oli "lähinnä ikkunaa oleva". Saatiin 6 esittäjää (jotka siis vain kirjasivat tulokset talululle)

    4) Opettaja laskee taululla oikeat vastaukset ja laittaa ryhmätuloksiin oikein/väärin/ 1/2.

    Huomioita: Muutama oppilas jäi ryhmistä sivuun (hekin kyllä tekivät). Muuten toimin aika hyvin, eli kaikki yrittivät tehdä jotain. Ilmapiiri oli hyvä.

    Yhteistoiminnallista oppimista Karjaalla

    Tässä blogissa raportoidaan eri yhteistoiminnallisen oppimisen ryhmärakenteita Karjaan lukiossa 2012-2013 lyhyen matematiikan ja kemian kursseilla. Koetan raportoida mikä toimi ja mikä ei. Kieli on suomi koska toivon blogin kautta edesauttavani tämän opetustyylin käyttöä Suomessa.

    Yhteistoiminnallisessa oppimisessa on ideana saada oppilaat tekemään ja puhumaan mahdollisimman paljon. Opettajan luennointi pidetään minimissä.

    Käytännössä oppilaat jaetaan mieluiten 4 oppilaan suuruisiin ryhmiin (satunnaisia, tai mahd. heterogeenisiä ryhmiä). 4 on paras luku koska se mahdollistaa parityön ja 6 erilaista järjestettyä paria, mutta ei ole liian iso jo Koetan raportoida mikä toimi ja mikä ei.ttei synny vapaamatkustajia.Uutena opettajana olen käyttänyt satunnaisia ryhmiä.

    Oppilaille annetaan tehtävä joka heidän pitää tehdä käyttäen annettua ryhmätyörakennetta. Nämä eri ryhmätyörakenteet ovat yhteistoiminnallisen oppimisen ydin ja käyn sarjan seuraavissa blogeissa läpi kokeilemiani rakenteita.

    Minulla on käytössäni 2 lähdeteosta:

    1. Kagan Cooperative Learning,Dr. Spencer Kagan & Miguel Kagan
    2. Yhteistoiminnallisen oppimisen käsikirja, P. Sahlberg ja Shlomo Sharan (toim.)
    1. kirjan tilasin Kagan publishingista (n. 30E)
    2. kirjan tilasin opettajan tietopalvelusta (n.15E)