Računalniško razmišljanje

Download Report

Transcript Računalniško razmišljanje

Razmišljajmo po računalniško
Reševanje problemov za vsak razred
Vsebina
•
•
•
•
•
Kaj je računalniško razmišljanje?
Zakaj je pomembno, da o njem razmišljamo?
V čem se razlikuje od tega, kar vemo?
Kako lahko izboljša učenje dijakov (študentov)?
Kako lahko to implementiramo v razredu?
Znanje je moč
Podatki, informacije, znanje, razum, predvidevanje
Podatki
informacije
znanje
razum
predvidevanje
Premikanje proti globljemu razumevanju
Podatki: surovi, neobdelana dejstva ali slike, pogosto pridobljeni z meritvami
Informacije: Podatki so bili obdelani in strukturirani, dodan je bil kontekst in povečan pomen
Znanje: Sposobnost taktične in strateške uporabe informacij s ciljem doseganja določenih ciljev
Razum: Sposobnost izbiranja ciljev, ki so konsistentni s splošno množico vrednot (na primer človeških vrednot)
in jih podpirajo
Predvidevanje: Sposobnost natančnega napovedovanja rezultatov predlaganih odločitev in akcij nekoga
Albert Einstein
•
Računalniško razmišljanje vključuje uporabo zmožnosti človeških možganov in
zmožnosti računalnikovih „možganov“ za predstavitev in reševanje problemov
in izvajanje nalog.
•
Izobraževanje za računalniško razmišljanje vključuje učenje za bolj učinkovito
uporabo teh dveh tipov možganov.
Kaj je računalniško razmišljanje?
• Je način razmišljanja o problemih, ki se je razvil s širitvijo
računalniških metod v aktivnostih vseh vrst
• Koristi pri razumevanju, zakaj je računalništvo postalo tako
uporabno
Kaj je računalniško razmišljanje?
• Vprašanje: Kaj je moč in kje omejitev človeške in računalniške
inteligence?
• Vprašanje: Kako težek je problem?
• Vprašanje: Kako ga lahko rešimo?
• Vprašanje: Kako lahko pri tem uporabimo tehnologijo?
• Vprašanje: Katere računalniške strategije bi lahko uporabili?
Kaj NI računalniško razmišljanje
•
•
•
•
•
To NI le več tehničnih podrobnosti za uporabo programov
To NI razmišljanje kot računalnik
To NI (nujno) programiranje
To NE zahteva vedno računalnika
To NI še ena stvar, ki bi jo morali dodati v predmetnik
Najboljši uporabniki IKT so novi učenci
Posamezniki, ki prekoračujejo
meje tradicionalnega učenja,
demografske ali tehnološke meje
s stalno uporabo, souporabo,
tvorbo, in spreminjanjem
informacij na kreativne,
inovativne oziroma
nenameravane načine tako, da
postanejo pomembni
multiplikatorji v njihovem
lastnem okolju.
Računalniško razmišljanje
Uporabiti tak pristop za reševanje problemov, načrtovanje
sistemov in razumevanje človekovega obnašanja, ki temelji
na konceptih, osnovnih v računalniških znanostih.
Zajema računalniške:
–
–
–
–
–
Koncepte
Metode
Modele
Algoritme
Orodja
(Jeannette M. Wing)
Razmišljajmo kot računalniški znanstvenik
•
Poenostavljanje
•
Vgrajevanje
•
Transformacije
•
Simulacija
Uporaba abstrakcije in dekompozicije pri reševanju kompleksne naloge
Zakaj je računalniško razmišljanje
pomembno?
Zakaj je računalniško razmišljanje
pomembno?
• Globalna ekonomija znanja
• Ekonomski imperativ: Ključ za uspeh sta kreativnost
in inovativnost
– Dvig nad vihar, ki se zbira
– Vizija kibernetske infrastrukture za odkrivanje v 21. stoletju
– Kibernetsko podprto odkrivanje in inovativnost
Na kratko
“Svet postaja zapisan v digitalni, atomarni in genetski kodi.
Informacijske tehnologije, nanotehnologije in biotehnologije
obetajo, da bodo nove ideje, izumi in inovacije tvorili nove, še
neznane industrije. Inovacijska prednost pomeni stalne tako
znanstvene kot tehnološke inovacije in tvorbo kompetitivne razlike,
ki lahko koncentrira investicije v državi.”
Zakaj je računalniško razmišljanje
pomembno?
•
•
•
•
Premakne študente preko tehnološke pismenosti
Tvori reševalce problemov namesto programskih tehnikov
Poudarja tvorbo znanja namesto uporabe informacij
Predstavlja neskončne možnosti za kreativno reševanje
problemov
• Izboljša tehnike reševanja problemov, ki jih sicer poznamo
Kaj se dogaja?
“Računalniško...” je postalo del
• ...matematike in statistike
• ...kakršnekoli znanosti
–
–
–
–
biologije
fizike
nanotehnologije
kemije
• ...ekonomije
• ...umetnosti in rekreacije
• ...inženirstva in načrtovanja
Tako imamo?
Računalniško..
.... fiziko
.... biologijo
.... kemijo
.... matematiko
.... računalništvo
.... pravosodje
.... ekonomijo
.... aeronavtiko
.... izobraževanje
Pojmi računalniškega razmišljanja
• Algoritem —vodilni pojem
• Podatki—spremenljivke, podatkovne baze, vrste
• Abstrakcija —Konceptualizacija, modularizacija
• Povpraševanje—iskanje, pogojevanje, boolova algebra
• Občutenje in odziv—robotika,
• Iteracije— zanke, rekurzija
• Sistemi
Nekaj primerov
• Analiziranje podatkov
• Simulacije
• Modeliranje
• Rokovanje s podatki
• Digital manipulatives & Virtual manipulatives (digitalna rokovala)
Razvoj tekmovalnosti
• Na mejah inženirstva in znanosti je napredno računalništvo
postalo tretji steber raziskovalnih orodij (teorija, poizkusi)
• Računalniško modeliranje in simulacija dramatično pospešita
hitrost inovacij in omogočata novo znanje in vpoglede.
• Pospešen je razvoj novih proizvodov
• Z virtualnimi prototipi se krajša čas do prihoda na trg
• Fleksibilnost in učinkovitost dobave je povečana
Kako izgleda računalniško
razmišljanje v akciji?
(Re)defincija učnih načrtov o računalništvu z
(re)defincijo računalništva
Računalništvo
Računalnikarji
Kdorkoli
Kontekstno usmerjeni
računalnikarji
Isabel et al, 2009
Čisti računalnikarji
So specialisti na posameznih področjih računalniških znanosti,
kot je na primer programsko inženirstvo, računalniško
inženirstvo, informatika, multimedijsko računalništvo. Pri teh je
računalništvo v žarišču.
(Isabel et al, 2009)
Kontekstno usmerjeni računalnikarji
Potrebujejo poglobljeno znanje in razumevanje določenih
vidikov računalništva, vendar aplicirano na določeno
domeno. Na primer bioinformatika, računalniška ekonomija,
tehnično upravljanje.
(Isabel et al, 2009)
Človek z računalniškim razmišljanjem
Predstavlja, modelira, dela abstrakcije in overuje procese
(pogosto s pomočjo računalnikov) s ciljem, da bi reševal
probleme, načrtoval proizvode, avtomatiziral sisteme, izboljševal
razumevanje.
(EDC, 2010)
Razmišljanje, temelječe na računalniških
principih – cevovod (pipeline)
Cevovod
• Oprati, posušiti in zlikati moramo 5 kupov perila.
Imamo le en pralni stroj, en sušilni in en likalnik.
Za pranje enega kupa perila potrebujemo 90
minnut.
• Kako bi vse perilo oprali v manj kot 450 minutah?
– Uporabimo princip cevovoda. Ko je prvi kup perila
opran in ga začnemo sušiti, začnemo prati drug kup
perila.
– Kateri je najkrajši celoten čas pranja perilo z uporabo
ideje cevovoda?
(Wing, Henderson, Hazzan, Cortina, 2007)
Analogija: računalniški cevovod
Računalniško razmišljanje- ponovna
uporaba kode
• Tvorba programov s komponentami, kot so na primer
razredi, ki bi jih lahko uporabili pri drugih programih.
Računalniško razmišljanje in družba
(Wing, 2007)
• Medicina
–
–
–
–
Robotska kirurgija
Simulacije minimalno invazivnih operacij
Elektronski zdravstveni zapisi zahtevajo tehnologije zasebnosti
Znanstvena vizualizacija omogoča virtualno kolonoskopijo in
endoskopijo
Računalniško razmišljanje in družba
(Wing, 2007)
• Biologija
– Algoritem „Shotgun“ pospešuje sekvenčenje človeškega
genoma
– Proteinske strukture lahko modeliremo kot vozle
– Poglobljeno razumevanje delovanje celic DNK z vizualizacijo
zlaganja proteinov
• Veda o možganih
– Vid kot povratna zanka
Računalniško razmišljanje in družba
(Wing, 2007)
• Ekonomija
– E-poslovanje temelji na avtomatiziranih mehanizmih,
– Kvantitativna analiza na borzah
• Socialne znanosti
– Socialna omrežja razlagajo pojave, kot so MySpace, YouTube
– Statistično strojno učenje je uporabno za priporočila in
mnenjske storitve (reputation services)
Računalniško razmišljanje– Algoritmi (recepti v računalniški znanosti)
Dijaki na tem nivoju raziskujejo relacije med spremenljivkami,
ki se se konstantno spreminjajo (funkcije). Rišejo tabele, ki
predstavljajo take odvisnosti. Iz tabel tvorijo enačbe, ki podajajo
odvisnost dveh veličin in rišejo diagrame.
Algoritmično razmišljanje na tem nivoju se zgodi, ko se dijaki
premikajo od ene do druge predstavitve.
Pri tvorbi skupine točk na diagramu dijaki mislijo na funkcije kot
na pravila, ki delujejo na vhodnih vrednostih in generirajo
izhodne vrednosti v skladu z določenim funkcijskim pravilom.
Primeri računalniškega razmišljanja na 3
področjih
Abstrakcija
Avtomatizacija
Analiza
Modeliranje &
Simulacija
Izbira značilnosti iz
realnega sveta, ki
bodo vklljučene v
model.
Časovno korakanje
z uporabo modela
kot preskusnega
poligona.
Ali smo naredili
pravilne
abstrakcije? Ali
model odraža
resničnost?
Robotika
Načrtovanje robota, Program preverja
ki se mora odzivati senzorje za nadzor
na množico
pogojev
pogojev.
Ali so situacije, ki jih
nismo upoštevali?
Načrtovanje in
razvoj iger
Abstrakcija iger v
skupino scen, ki
vsebujejo osebke
Ali je zaradi
vgrajenih
elementov igra
zabavna?
Igra se odziva na
akcije uporabnika.
Lee et al, 2010
Kaj so osnove računalniškega
razmišljanja v šoli in vpliv na
poučevanje in učenje?
Primeri matematičnega znanja in veščin
• Uporaba osnovnih aritmetičnih operacij – seštevanje, odštevanje,
množenje in deljenje
• Uporaba relacijskih (enak, neenak, velji kot, manjši kot,…) in logičnih
operatorjev v logičnih izrazih
• Razumevanje relacij med podatki in meritvami glede na problem
• Tvorba matematičnih formul, izrazov in zaporedij korakov reševanja
danega problema
• Analiziranje problema glede na manjkajoče in nepomembne podatke,
glede na ocenjene in natančne vrednosti ter glede na nekonsistentne
parametre
• Tvorba tabel in diagramov iz funkcij in podatkov
• Opis tehnik reševanja problemov (zaporedni približki, poskusi in napake….)
Primeri znanstvenega znanja in veščin
• Analiza(vrednotenje zaključkov, konfliktnih podatkov, inferenc
in omejitev, vprašanj, virov napak, spremenljivk)
• Aplikacija in uporaba znanstvenih metod pri kvantitativni in
kvalitativni analizi, zbiranju podatkov, neposrednem in
posrednem opazovanju, napovedih, identifikaciji problemov
Project GUTS (Growing Up Thinking
Scientifically)
Primeri: Tvorba modelov ekosistemov
Razgradnja in razumevanje modela
rib in planktona
Uporabljen je program StarLogo
OSMOZA
Ribe in plankton
Projekt
Programiranje izobraževalnih mikrokrmilnikov
(podobno kot Lego MaindStorm)
WEB
Globaloria in računalniško razmišljanje
Globaloria
WEB
Primeri reševanja problemov in kritičnega
razmišljanja
• Vodenje procesa na določenem področju (postavljanje
ciljev, nadzor/naravnanje ciljev)
• Reševanje problemov, kjer je možnih več rešitev
• Ponovna uporaba strategij reševanja problema za
reševanje novih problemov
Primer: Krmiljenje ravnotežja invertiranega nihala
Angular Sensor
WEB1
WEB2
Linear Sensor
Primeri invertiranega nihala
Otroci preskušajo in razmišljajo o situacijah pri
nadzoru ravnotežja
Preprosta pravila IF-THEN
Angle < 0
Angle > 0
If angle < 0 [ setpower 8]
If angle > 0 [ setpower -8]
Ugotovitve dijakov
Voziček se je pomikal prepočasi
Voziček je preveč “poskakoval”
Pravila IF-THEN z gradientom
If angle > 10 and angle < 15 [ setpower 6]
If angle > 5 and angle < 10 [ setpower 4]
If angle > 0 and angle < 5 [ setpower 2]
If angle > -15 and angle < -10 [ setpower -6]
If angle > -10 and angle < -5 [ setpower -4]
If angle > -5 and angle < 0 [ setpower -2]
Uvedba zamisli s
predvidevanjem
Opazovanje gibanja telesa
Ali se to kdaj zgodi?
?
WEB1
WEB2
Opazovanje gibanja telesa
1. Opazovanje akcij v živo
2. Pregledovanje video posnetkov
3. Pregledovanje zapisanih podatkov o senzorjih
Hitrost vozička (rdeča)
0
Naklon nihala (rumen)
Opis na papirju
Risanje v
fazni ravnini
WEB
Spirala
Obroč
Krmiljenje v fazni ravnini
Podoben problem, voziček na drogu
Soroden problem: nadzor vesoljskega
plovila
Razmišljajmo kot računalniški znanstvenik
•
•
•
•
•
•
•
•
Razmišljajmo rekurzivno
Razmišljajmo abstraktno
Razmišljajmo vnaprej (caching, pre-fetching…)
Razmišljajmo proceduralno
Razmišljajmo logično
Razmišljajmo konkurenčno
…
Množice problemov: za vajo uporabljajmo svinčnik in
papir,
• Za vajo programirajmo
Vizija - analogija
• Računalniško razmišljanje ni le za druge, je za vsakogar.
• Vsepovsodno računalništvo so včasih bile le sanje, danes
postaja resničnost
• Računalniško razmišljanje so danes sanje, jutri bo to
resničnost
• Računalniško razmišljanje bo osnovna veščina za kogarkoli v
sredini 21 stoletja.
– Tako kot branje, pisanje ali aritmetika.
– Vsak otrok naj bi znal računalniško razmišljati!
– Računalništvo in računalniki naj bi omogočali širjenje računalniškega
razmišljanja.
Exploring Computational Thinking
•
•
•
•
•
Dekompozicija problemov
Razpoznavanje vzorcev
Posploševanje vzorcev (definiranje abstrakcij oziroma modelov)
Razvoj algoritmov
Vizualizacija in analiza podatkov
WEB
Kompozicija in dekompozicija
Rekurzija: hanojski stolpiči
Cilj: Prestaviti celoten stolp na drug steber tako, da vsakokrat
premaknemo po eno ploščico in nikdar ne damo večje ploščice
na manjšo.
Abstrakcija in predstavitev podatkov
Sklad (stack)
Vrsta (queue)
Polje (tabela) in kazalec
Drevo (tree)
Sortiranje in iskanje
Neobvladljivost: Problem
trgovskega potnika
DEMO
Problem: Trgovski potnik mora obiskati n mest. Iščemo najkrajšo pot
Neodločljivost: pokrivanje
Razmišljanje vnaprej (caching)
Kaj bomo potrebovali
na potovanju?
Pipelining: pralnica
Konkurenčnost: kosilo filozofov
Pet filozofov sedi za okroglo mizo. Delajo samo dve stvari: jejo in mislijo. Ko jejo ne
mislijo in ko mislijo ne jejo. Na sredini je velika skleda špagetov. Vilice so nameščene
tako, da je med vsakim parom filozofov ena vmes, kar pomeni, da ima vsak filozof na
vsaki strani po eno vilico. Vsak filozof za uživanje špagetov potrebuje2 vilici na enkrat.
Filozof lahko uporablja samo vilici na svoji strogi desni in strogi levi.
DEMO
Porazdeljeno računanje: internet
Značilnosti računalniškega razmišljanja
• Analiza in logična organizacija podatkov
• Modeliranje podatkov, abstrakcija podatkov, simulacije
• Formuliranje problemov tako, da nam računalniki lahko
pomagajo
• Identifikacija, testiranje in implementacija možnih rešitev
• Automatizacija rešitev z algoritmičnim razmišljanjem
• Posploševanje in uporaba tega procesa pri drugih
problemih
Več o tem
Začetni tečaj o računalniškem razmišljanju
• Funkcijski modeli
• Iterativne metode (reševanje algebraičnih enačb z eno
neznanko)
• Linearna in nelinearna regresija najmanjših kvadratov (ena
spremenljivka)
• Opisna statistika (merjenje centra in razširjenosti, vizualizacija)
• Verjetnost (diskretne in zvezne porazdelitve)
• Naključna simulacija (kovanci, kocka, karte, zvezne
porazdelitve, ki so enakomerne in normalne)
• Preverjanje hipotez (Z-test za razmerja, t-test za srednje
vrednosti)
• modeli s končnimi diferencami
Osnovna programska orodja
• Uvod v Python:Elementarne vrednosti in tipi podatkov.
• Premi programi, prirejanje spremenljivk, Konverzija tipov,
matematična knjižnica.
• Nizi, seznami, urejeni seznami. Vektorji in polja.
• Pogojni stavki in zanke.
• Risanje s pomočjo MatPlotLib in 3D vizualizacija z
VPython.
• Funkcije, parametri, obseg. Rekurzija.
Računalniška orodja in metode
• Arithmetic and random numbers. Using NumPy. Examples of numerical
stability and problem stability.
• Introduction to simulations and Monte Carlo methods.
• Computational Physics: Ideal gas and Ising Spin simulations; adapting a
generic Demon algorithm and estimating parameters in a physical system.
• Trees as a data structure, traversal and exploration.
• Introduction to graphs, graph operations using NetworkX, graphs in
science applications.
• Bioinformatics: Modeling protein interactions using tree and graph
representations. Visualizing graphs in Cytoscape and analyzing protein
interactions using clustering techniques.
• Grand challenges in scientific computing.
Pogled pod pokrov računalniške znanosti
• Objektno usmerjeno načrtovanje. Načrtovanje in uporaba
razredov, OO pojmi. Slovarji in povpraševanje.
• Zgodovina računalništva.
• Limite računanja, izračunljivosti, neobvladljivosti.
• Bodoči modeli računalništva: DNA računalništvo, kvantno
računalništvo.
Primer s kroglami
Krogle na levi izmenjamo s kroglami na desni z
zaporedjem potez. Vsaka krogla lahko preskoči enega
soseda na prazno mesto.
Študenti vlečejo krogle, identificirajo (in zapišejo zakodirajo) neko strategijo in opazujejo, kako narašča
število korakov z velikostjo problema.
Uvodoma ta vaja predstavlja strategijo in planiranje,
potrebno za rešitev problema.
Za prikaz algoritmičnega razmišljanja lahko pomislimo
na algoritem, ki rešuje ta problem pri različnem številu
krogel.
Abstrakcijo uvedemo, ko sestavljamo pravila, ki so
splošno namenska.
Ko ocenjujemo optimalnost rešitve, se usmerimo v
kompleksnost in analizo algoritma.
Demo
Računalniško razmišljanje in Python
WEB
How to think like a computer scientist
Uvod v Python
Uvod v Vpython
Python za programerje
Kaj je novega v Python 3
Dodatne ideje
WEB
Kje so ta gradiva?
http://colos.fri.uni-lj.si/eri/racunalniskoRazmisljanje.zip