Most recent comments
Liveblogg nyttårsaften 2017
Tor, 11 months, 3 weeks
Jogging og blogging
Are, 1 year, 11 months
Liveblogg nyttårsaften 2016
Are, 1 year, 11 months
Reading in dark times
Are, 2 years, 1 month
Moldejazz 2016
Camilla, 2 years, 4 months
Dørskilt
Karoline, 2 years, 5 months
Halifax
Tor, 2 years, 6 months
Sony Smartwatch 3 review
Tor, 2 years, 6 months
Numerikk, takk
Tor, 2 years, 6 months
Topp tur
Camilla, 2 years, 8 months
50 book challenge
Camilla, 11 months, 3 weeks
Ten years ago
Musikklinjas julekonsert 2008
Camilla
Controls
Register

Yay! Datamaskiner i realfagsopplæringen!

I dag var jeg på et fredagskollokvium, der temaet var «Datamaskiner i realfagsopplæringen, en ny måte å undervise realfag på?». Dette er jo et tema jeg har mange meninger om, og det viste seg å være et svært interressant foredrag. Han presenterte et syn på realfagsopplæring og numerikk som jeg ikke har tenkt på før, og det var såpass inspirerende at jeg egentlig fikk lyst til å sette meg ned og lage programmeringsoppgaver til studentene mine med en gang.

Men la meg ta et skritt tilbake, og kort beskrive mitt syn på datamaskiner i opplæringen. Det jeg alltid har sagt i slike diskusjoner, om det handler om laptop i videregående, SmartBoard eller it's learning, er at det er teit, og antagelig skadelig for undervisningen, om man tar i bruk slike hjelpemidler uten å ta i bruk mulighetene som ligger der.

Hvis man kjøper en SmartBoard, og læreren bruker den som en WhiteBoard, da har man kastet bort 100.000 kroner, eller hva nå en SmartBoard koster. Og hvis man bruker it's learning, uten at faglærerne bruker det til noe annet enn å legge ut beskjeder og øvinger, da har man kastet bort 3 millioner, eller hva nå it's learning koster. Og hvis man gir aller elever i videregående skole en laptop, for at de skal bruke den som kalkulator i mattetimene, da har man kastet bort 500 millioner i året, eller hva nå det koster å kjøpe laptop til alle som begynner på videregående, pluss at elevene får en crappy utdannelse.

Det denne mannen snakket om, derimot, er å ta i bruk datamaskiner til å løse problemer som er enkle å formulere, og ganske enkle å programmere, men vanskelige å løse på papir. Og da snakker vi plutselig om at datamaskinene tilfører undervisningen noe nytt, de blir et verktøy i stedet for en distraksjon. Mannen som holdt foredraget har i en del år jobbet med Bachelorprogram på UiO, og han fortalte oss hvordan de har reformert hele opplegget de siste årene.

Personlig begynte jeg å lære programmering først siste halvår i mastergraden min. Det er ganske sent, og grunnen til det var hovedsaklig at jeg ikke følte noe behov for å lære meg programmering tidligere. Jeg så rett og slett ikke nytten, og selv om man har ansvar for egen læring ogsåvidere vil jeg påstå at det ikke hadde vært så dumt å vise studentene nytten på et mye tidligere tidspunkt.

Poenget da, er at man må vise studentene hvordan man gjør fysikk med programmering, ikke hvordan man lager en database over CDer eller programmerer en heis. Og dette har de tatt innover seg i Oslo. Han forklarte oss hvordan studentene begynner med et mattefag, et fysikkfag og et datafag. I mattefaget lærer de for eksempel om integrasjon og algoritmer for å tilnærme integraler. I fysikken lærer de om enkle systemer som er vanskelige å regne på, slik som fysisk pendel med stort utslag, og i datafaget programmerer de en løsning på problemet. Og alt sammen er tett integrert, med forelesere som snakker sammen, og studasser som kan både fysikk og programmering.

I utgangspunktet var jeg litt skeptisk til å putte inn så mye fokus på data, ettersom det må ta noe tid bort fra fysikken. Og det var en ganske vanlig innvending, sa han, men det man får igjen er at når studentene kommer lengre kan de mye raskere begynne å jobbe med ekte problemer, fordi de kjenner verktøyene fra før, og man kommer tidligere i gang med ekte, forskningsbasert undervisning.

Jeg ble i alle fall overbevist om at dette høres ut som et bra opplegg, og jeg ble naturligvis enda mer vennlig innstilt da han sa at de bruker Python, hvis fortreffelighet han understreket flere ganger. Sant å si har jeg helt siden jeg hørte foredraget fundert på om det vil være mulig for meg å lage en øving eller et prosjektarbeid med litt enkel numerikk i kurset mitt, på en måte som et flertall av studentene vil finne lærerikt og meningsfylt. Jeg kommer tilbake med mer.

-Tor Nordam

Comments

Camilla,  13.02.09 22:16

Så lenge jeg slipper å forelese for folk som sitter og spiller kabal er jeg i grunnen fornøyd.

Anders K.,  14.02.09 00:44

Så lenge jeg slipper å møte opp til 45 minutter der ei gammal dame forteller hvordan man "beveger kursor over ikonet og dobbeltklikker med venstre musknapp" er jeg mer enn fornøyd. Sløsing med penger er én ting, men denne uhelbredelige fetisjen for sløsing med studentenes tid og motivasjon er mye verre. Med andre ord: At de bruker flere millioner på å lage Fronter er ok for meg, men når de i tillegg krever at vi skal gå inn og ut igjen minst en gang i uka, da mister de meg.

Kjellove,  14.02.09 12:13

Visste du at «realfagsopplæringen» også kan leses som «realfag-sopplæringen»? Haha!

Are,  15.02.09 23:59

Kult, Tor!
Jeg tenkte på å lime inn XKCD-stripa om Python her, men det slo meg at den sikkert har vært Calcuttaguttapostet mange ganger?

Hilsen Java-utvikler som burde kode mer Python på fritida. Det er programmeringsvarianten av vievann.

Anne Berit,  16.02.09 23:47

Hmmm... interessant... med tanke på vgs, hva gjør man med de ca 75% som hater bruk av pc i fag og ihvertfall ikke ser noe nytte i programmering, men de velger fysikk fordi de må ha det?

B,  17.02.09 10:51

Her er et irc-bot script jeg lagde på søndag, for å styre jobb-kanalen vår og gi oss op.
Den har null funksjonalitet bortsett fra å gi de i friends listen automatisk operator status. Men mulighetene er uendelig og grunnen til at jeg poster den er for å vise Tor hvor enkelt det er å threade i python.

#python modules
import socket, threading, time, sys, string, re

EXIT_ERROR = -1
EXIT_NORMAL = 0
EXIT_EXCEPTION = 1

class ai:
def __init__(self):
self.friends = ['nick']
self.memberof = []

class Command:
"""
Implements a function that the bitbot uses.
"""
def setVars(self,bitbot,channel):
"""
Initialize the primary constants of the function.
"""
self.bitbot = bitbot
self.channel = channel

def doCallback(self, commandToSend):
"""
Callback to bitbot.
"""
self.bitbot.callback(commandToSend)

class AutoOp(Command):
"""
This command automagically makes all friends ops.
"""
def __init__(self, bitbot, channel):
self.setVars(bitbot,channel)
self.friends = ['nick']

def isFriend(self, nick):
if nick in self.friends:
return True
else:
return False

def do(self,joinee):
if self.isFriend(joinee):
self.doCallback('MODE %s +o %sn' % (self.channel,joinee))

class parser:
def __init__(self):
# keyboard buffer
self.KEY_QUIT = re.compile(r'^QUITn')
# channel buffer
self.CH_OP_ME = re.compile(r':(.*)!~.*sPRIVMSGs#.*s:opsmesplease?')
self.CH_MODE_OP = re.compile(r'MODEs#.+?s+osbitbot')
# system buffer
self.SYS_MSG = re.compile(r'')
self.SYS_MOTD = re.compile(r'Endsofs/MOTDscommand.')
self.SYS_PING = re.compile(r'PING')
# private message buffer
self.PRIV_MSG = re.compile(r'')

# Command specific regexps.
self.NEW_JOINEE = re.compile(r':(.*)!~.*sJOINs:#.')

"""Need to implement a basic irc protocol parser"""
class bitbot:
def __init__(self):
self.NICK = 'ibitbot'
self.NAME = 'ibitbot'
self.PORT = 6667
self.HOST = 'SERVER'
self.REIGN = '#qattest'
self.IDENT = 'pybot2'
self.OWNER = 'dbu'
self.ISOPERATOR = False

self.cmd = {}
self.autoOp = AutoOp(self,self.REIGN)

self.readbuffer = ''

sys.exitfunc = self.exit_cleanup

def exit_cleanup(self):
# stop the thread
return
#self.TR.stop()

def callback(self, commandToSend):
"""
A callback function allowing for easily creating new functions.
"""
self.conn.send(commandToSend+'n')

def run(self):
"""
mainloop for the bitbot object
"""
# Create a socket connection with TCP protocol
self.conn = socket.socket( )
# Bind the socket to INET ADDR
self.conn.connect((self.HOST, self.PORT))
# Set up the session
self.conn.send('NICK '+self.NICK+'n')
self.conn.send('USER '+self.IDENT+' '+self.HOST+' bla :'+self.NAME+'n')


self.TR = threading.Thread(target=self._reader)
self.TR.setDaemon(1)
self.TR.start()

self._join(self.REIGN)
self._writer()

def _reader(self):
"""
Read interface
"""
P = parser()
line = ''
while 1:
line = self.conn.recv(500)
print line
if P.SYS_PING.findall(line):
nline = line.rstrip()
nline = nline.split()
self.conn.send('PONG '+nline[1]+'n')

elif P.CH_MODE_OP.findall(line):
self.ISOPERATOR = True
print self.NICK+' was made op of channel'

elif P.CH_OP_ME.findall(line):
q_nick = P.CH_OP_ME.findall(line)
print q_nick+' was given op'
self.conn.send('MODE '+self.REIGN+' +o '+q_nick[0]+'n')

elif P.SYS_MOTD.findall(line):
self._join(self.REIGN)
print 'join '+self.REIGN

elif P.NEW_JOINEE.findall(line):
nick = P.NEW_JOINEE.findall(line)[0]
if nick != self.NICK:
self.autoOp.do(nick)
print nick
else:
pass
#print line

self.readbuffer += line
line = ''


def _writer(self):
"""
Write interface
"""
P = parser()
while 1:
buffer = sys.stdin.readline()
print buffer
if P.KEY_QUIT.findall(buffer):
exit(EXIT_NORMAL)

self.conn.send(buffer)

def _join(self, channelname):
self.conn.send("JOIN %sn" % channelname)


if __name__=="__main__":
B_BOT = bitbot()
B_BOT.run()
Category
Teaching
Tags
programmering
fredagskollokvium
datamaskiner i undervisningen
UiO
Views
2609
Google hits
3
Last google search
realfagsopplæring