Taxonomie a výuka programování 2 (znovu nad článkem Anabely Gomes)


V minulé epizodĕ jsme sledovali … 

Nahlédli jsme do článku Anabely Gomes. Autorka v nĕm popisuje, vysvĕtluje a zdůvodňuje svoje představy o postupném zvyšování požadavků kladených na studenty kurzu programování. Požadavky by mĕly být odstupňovány podle kategorií Bloomovy taxonomie, a nemĕly by „přeskočit“ nejnižší dvĕ kategorie. Jako nepominutelný příklad schopnosti na úrovni nejnižších dvou kategorií paní Gomes uvádí schopnost číst kód. 
Doprovodil jsem to ukázkou mého kódu a také nĕkolika příklady otázek, na které by studenti se schopností číst kód podle mého názoru mĕli umĕt odpovĕdĕt.  

 

*** *** ***
 tx-pg-1  

část 1 Taxonomie a výuka programování 1 (nad článkem Anabely Gomes)
 tx-pg-2   Taxonomie a výuka programování 2 (znovu nad článkem Anabely Gomes)
*** *** ***
Gomes [1] Struktura   
Stále čteme článek z června 2009 s názvem „Bloom’s taxonomy based approach to learn basic programming“ autorky Anabely Gomes z Instituto Politécnico de Coimbra. 
Článek má (co se týče relevantního obsahu) 7 částí, označených Introduction („Úvod“), Taxonomies of learning („Taxonomie učení“), The study („Studie“), Course context („Kontext kurzu“), Study („Studie“), Discussion („Diskuze“), a Conclusions („Závĕry“). 
Poslednĕ jsem rozebíral „Úvod“. Tentokrát se podívám na části „Taxonomie učení“, „Studie“ a „Kontext kurzu“.  

 

Gomes [2] Taxonomie učení   
Část „Taxonomie učení“ je zcela teoretická. Paní Gomes zde připomíná nejznámĕjší a nejpoužívanĕjší taxonomie vzdĕlávacích cílů, od výchozí Bloomovy, přes revidované po nejrůznĕjší odvozené, s odkazy na Fullera a Andersona. Opĕt je zdůraznĕn požadavek (pocházející od Listera) nejprve učit studenty kurzu programování číst kód, a to dříve, než se od nich chce, aby programovali.  

 

Gomes [3] Studie   
V části „Studie“ paní Gomes připomíná odlišnosti jejího kurzu Informační technologie od bĕžných kurzů programování, a jsou to odlišnosti nepřehlédnutelné. 
V kurzu Informační technologie se studenti paralelnĕ učí architekturu počítačů a programování. 
Paní Gomes mĕla v plánování kurzu značnou volnost. Za programovací jazyk, ve kterém se studenti učí programovat, paní Gomes schválnĕ zvolila assembler. Důvodem pro tuto nevšední volbu programovacího jazyka byla snaha přiblížit studentům druhou složku tematické náplnĕ kurzu, totiž architekturu počítače.  

Toto propojení protikladů, softwaru a hardwaru, chce paní Gomes v kurzu rozsáhle využívat. Chce opustit zavedenou představu počítače jako tajemné černé skříňky (neboli black box) a naopak z nĕj učinit pro studenty průzračnou sklenĕnou skříňku, o jejímž vnitřním uspořádání vĕdí vše. 

 

Protinázor [4] Assembler   
V kurzu Informační technologie paní Gomes se učí základy programování. 
Volbou assembleru za programovací jazyk kurzu se ale z obecných základů staly „nepraktické základy“. 
Vždyť co dnes (!!) patří do základů programování? Ukládání dat, hromadné aritmetické výpočty, vĕtvení, cyklení a volání podprogramů jako v dobách Charlese Babbage a lady Ady Augusty? 
To jistĕ ano. 
Ale také „praktické“ činnosti jako práce se soubory, formátování textu, bitová grafika, ukládání do XML a čtení z XML struktur. 
To vše samozřejmĕ lze naprogramovat i v assembleru. 
Všechno lze naprogramovat v assembleru! 
Ale odhadnete ty desítky (ne-li stovky) řádků assemblerovského kódu nutné pro zápis činností, které vyšší jazyk zapíše jediným příkazem? 
Zdlouhavému opisování desítek řádků assemblerovského kódu se lze vyhnout použitím vhodného makro-jazyka (a navíc by se tím studenti naučili další užitečnou vĕc). 
Ale je tu „nĕco za nĕco“ – tím by se studenti „odřízli“ právĕ od toho, proč byl assembler zvolen, totiž od bezprostředního styku se strojovými instrukcemi procesoru.  

 

Protinázor [5] Black box   
Black box je vynikající, vysoce užitečná abstrakce, kterou dal svĕtu behavioralismus. 

V tomto místĕ, předpokládám, všichni čtenáři povstali a mocným hlasem potřikráte zvolali „Sláva behavioralismu!“. 
Dĕkuji. 
Můžete se posadit a číst dál. 

Lze si představit situaci, například při výkladu architektury počítače, kdy učitel vĕdomĕ opustí tuto abstrakci, a nechá studenty nahlédnout do (pomyslných) útrob počítače, a popíše a/nebo vysvĕtlí jim funkci jeho jednotlivých součástí. 
Lze si představit situaci, například při programování v assembleru, kdy jistou roli (případnĕ významnou roli) hrají počty registrů a instrukční repertoár procesoru.  

Avšak při výuce programování ve vyšším programovacím jazyce by takovýto krok – „narušení“ black boxu – byl zbytečný a matoucí. 
Programování „funguje“ nejlépe, nevíme-li o cílovém počítači nic. 
Počty registrů, struktura operační pamĕti a instrukční repertoár procesoru, to jsou okolnosti, o které se programátor nestará. 
Tyto starosti přenechá překladači. 

 


Poznámka k terminologii: 
Zdá se, že termín „behavioralismus“ si pro sebe zabavila politická ekonomie, zatímco filosofie, computer science a vĕda o učení si musí vystačit s termínem „behaviorismus“. Ač nerad, budu to (vĕtšinou) respektovat. Tak či tak jde o princip, že objekty zkoumáme podle jejich zjevného chování, kterým reagují na podnĕty zvenčí.  

Poznámka k abstrakci: Pokud učitel vypráví studentům o aritmeticko-logické jednotce, o čítači instrukcí a o registrech, dopouští se podobné abstrakce jako já, když prohlásím celý počítač za black box. Pouze tu svoji abstrakci umístil o jednu či dvĕ úrovnĕ níže. Neabstrahovanou realitou jsou tenké vrstvy kovů na křemíkové destičce a pohyb elektronů (resp. pozitronů, to v případĕ klasických pozitronických robotů) mezi nimi. Výše zmínĕný neabstrahovaný pohyb částic zaručenĕ nedává smysl žádnému studentu programování. 

 

Gomes [6] Kontext kurzu   
Část „Kontext kurzu“ začíná upozornĕním, že celý studijní obor „Informatické inženýrství“ (v originále „Informatics Engineering“) byl právĕ radikálnĕ přestavĕn v důsledku zmĕn vyplývajících z boloňského procesu . Základní zmĕnou byl přechod od semestrálního kurzu na trimestrální. Studenti tudíž absolvují stejný počet lekcí za poloviční časové období, z opačného pohledu tedy dvojnásobný počet vyučovacích hodin za stejné časové období. 
Co se stane, zhustíte-li kurz do poloviční doby při zachování rozsahu kurzu? 
Nĕkteré následky jsou pozitivní, jiné ménĕ. 
Studentům mohla být poskytována intenzivnĕjši podpora, po dobu trvání kurzu jim učitelé mohli být více k dispozici. 
Též prý studenti mĕli lepší příležitost osvojit si schopnost kritičnosti, sebekritičnosti a diskuze. 
Tomu sice vůbec nerozumím, ale nemám důvod to paní Gomes nevĕřit. 
A pak jsou tu negativní následky. 
Studenti mají ménĕ času osvojit si schopnost řešit problémy obecnĕ a programovat speciálnĕ. 
Paní Gomes tvrdí, že na toto studenti potřebují čas, a tentokrát jí to ochotnĕ vĕřím. 
Dále, studenti mají ménĕ času na práci na samostatných projektech a tím pádem učitelé jim takové samostatné projekty mohou zadávat jen v menší míře. 
Obecnĕ se zdá, že takovýto intenzivní formát kurzu vĕtšinĕ studentů nevyhovuje.  

 

Poznatky [7] Kontext kurzu   
Část „Kontext kurzu“ přináší konkrétní poznatky z průbĕhu kurzu Informační technologie. Tyto poznatky lze uplatnit i ve čtyřletém kurzu Programování na střední škole. 
Hlavním poznatkem je nevhodnost intenzivní formy. Ta naštĕstí v našem prostředí nehrozí – výuka Programování probíhá osvĕdčeným poklidným tempem, a studentům lze zadávat dlouhodobé projekty. 
Můžeme naopak zvažovat, jak postupovat, pokud bychom chtĕli posílit schopnosti, kterým více prospívá intenzivní forma výuky – třeba výše zmínĕnou kritičnost a sebekritičnost. Mĕli by se domluvit a spojit síly učitelé různých předmĕtů?