信息技術(shù)是一門技術(shù)類課程,實踐性要求很高,在很多人看來,這門課程的教學(xué)就只能是簡單、高強度的操作訓(xùn)練。因此,“算法與程序設(shè)計”模塊的教學(xué)也常被認(rèn)為是訓(xùn)練學(xué)生在計算機中寫幾條程序語句。這種看法到底正確不正確呢?
我們提出這個問題的背景是當(dāng)前正值新課程改革,很多新思想、新教法層出不窮,很多教師為了所謂的“課堂藝術(shù)”在片面追求標(biāo)新立異:課,的確是越上越“好看”,但實際效果卻并不理想,甚至實施的過程違背了課程自身的教學(xué)原則和目的。信息技術(shù)課程,很多教師看到了它的技術(shù)性,卻往往忽略了其本來所蘊涵的思想性,而這個思想性對于學(xué)生信息素養(yǎng)的養(yǎng)成起到了關(guān)鍵性的作用?,F(xiàn)在很多教師呼吁的“還信息技術(shù)課堂本來面目”的口號就是出于這個目的而發(fā)出的,具有適時性和正確性。
大家都知道,把所有高中學(xué)生都培養(yǎng)成程序員那肯定是不現(xiàn)實也沒必要的,我們開設(shè)這個模塊的目的很大程度在于啟蒙學(xué)生,在于教學(xué)生有條理地思考問題,而不是盲目操練。所以,本文開頭提出的觀點是錯誤的,“算法與程序設(shè)計”模塊具有很強的思想性,可以很好地熏陶學(xué)生的思維,對其他學(xué)科的解題能力、日常事務(wù)的處理能力都會有所幫助和提高,絕不應(yīng)該把它看做簡單的程序語言的學(xué)習(xí)和死記硬背。從這個意義上說,信息技術(shù)課程也是一門專門的方法學(xué)課程。假如你的學(xué)生通過這個模塊的學(xué)習(xí)學(xué)到的僅僅是if-else、for-next,那么我想你的教學(xué)應(yīng)該是失敗的。
通過上面的論述,我無非想說明在該模塊,思想(算法)是第一重點,而程序語言是第二位的,課程絕不能圍繞純粹的程序語言展開。你大可在信息技術(shù)課堂暢談解題思路,即便用的全是漢語,而并非一定要在語文或數(shù)學(xué)課上才可以那么做。當(dāng)然這么看來,所謂的“語言之爭”(哪種語言更適合教學(xué))就變得意義不大了。
那么,如何跟我們的學(xué)生談思想呢?
一、編程思想的教學(xué)形式要能引起學(xué)生的興趣
其實,無論是什么學(xué)段的學(xué)生,學(xué)習(xí)的最大促進力肯定是興趣。在高中階段,學(xué)生的興趣是十分廣泛的,每個人的興趣也不盡相同,不可能要求他們都單單喜歡計算機、喜歡程序。一方面,我們應(yīng)該采取選修的方式,讓感興趣的學(xué)生加入到我們的課程中。但也要知道,即便是“感興趣”的學(xué)生,他們由于先前并不了解寫程序到底是怎么回事兒,選擇多少有點盲目。寫程序遠不像在孩子們眼里那么“酷”,有時候的確還有點兒枯燥和寂寞。那么如何讓這門課被大多數(shù)人接受呢?這個就值得我們?nèi)パ芯亢退伎剂恕?br/> 在不同的年齡段,人總都有一些共性。比如說,高中階段的孩子一般都喜歡漫畫、喜歡卡通、喜歡游戲。這就是突破口,把握住了孩子的共性,就有可能讓大多數(shù)孩子對我們的課產(chǎn)生興趣。課程中的算法,即思想,其實由來已久,并非計算機出現(xiàn)后才有的,很多都是來自古代思想家,都有一段來歷或一個小故事。為什么不利用這個來激發(fā)學(xué)生的興趣呢?
比如談到遞歸思想,如果直接用程序例子給學(xué)生灌輸,效果就不大好,很抽象,不大容易被接受和理解,學(xué)生就會產(chǎn)生厭學(xué)心理,從而形成不良的后果。但如果我們的研究是圍繞古代埃及神廟中的漢諾塔游戲展開的,搬來一個實物道具做一做,讓大家根據(jù)規(guī)則去思考問題的完美解決方案,學(xué)生的興趣就一下子被激發(fā)了,往下學(xué)也有勁兒了。當(dāng)然,還可以先讓大家唱一唱都熟悉的兒歌:“從前有座山,山上有座廟,廟里有個老和尚給小和尚講故事:從前有座山……”讓學(xué)生實實在在地去體會生活中包含的遞歸思想。我想,這些都是學(xué)生樂意去做的事情,他們會感到學(xué)習(xí)很輕松、很有趣,當(dāng)然學(xué)習(xí)的效果也不會差。
總之,我們要善于利用孩子的共性,在講編程思想時多用漫畫、卡通、游戲、故事等孩子喜歡的形式激發(fā)學(xué)生興趣。
二、編程思想的教學(xué)語言必須通俗易懂
由于我們面對的是高中階段的孩子,他們的認(rèn)知水平不可能同成人以及大中專院校的學(xué)生相提并論。因此,教師在講解編程思想時一定要顧及學(xué)生能否接受,不能太學(xué)術(shù)化、抽象化。一旦學(xué)生聽不懂,很可能就會形成“鏈?zhǔn)椒磻?yīng)”,不但不感興趣的學(xué)生會更不感興趣,本來有興趣的學(xué)生也會提不起精神,整個課堂最后變得死氣沉沉,恐怕教師也心灰意冷了。
比如讓大家了解并行算法思想,純學(xué)術(shù)的定義是:適合于在某類并行計算機上求解問題和處理數(shù)據(jù)的算法,是一些可同時執(zhí)行的諸進程的集合……這顯然是讓孩子們望而卻步的講解,不可能讓他們理解思想的內(nèi)涵。我們可以換個方法,給大家講個故事:有個國王向另一個國家的公主求婚,公主說她會告訴國王一個17位的數(shù),如果國王能在三天內(nèi)把這個數(shù)分解成兩個數(shù)相乘的話就同意嫁給他。國王知道這道題目的難度,很苦惱,向一位大數(shù)學(xué)家請教。數(shù)學(xué)家說,17位的數(shù)分解后至少一個數(shù)是小于9位的,可以給全國每個人按順序編號,讓他們記住自己的數(shù)字,公布題目之后立即相除,能整除的把數(shù)字報上來,給予重賞,就可以解決了。講完故事后告訴大家:故事里數(shù)學(xué)家用的就是并行算法。比較兩種語言描述,后一種講解不如前者嚴(yán)密,但更生動和形象,學(xué)生很容易接受,所以我們說后一種是適合高中階段孩子的教學(xué)語言。
在高中階段,基于學(xué)生的認(rèn)知水平,很多學(xué)術(shù)性很強的原理和思想我們都可以把它形象化、生動化,并不一定要“滴水不漏”。在編程思想的教學(xué)中,對教師教學(xué)語言最基本的要求就是要切實做到讓學(xué)生感覺通俗易懂。
三、編程思想的教學(xué)必須具有實際使用價值
技術(shù)類學(xué)科的宗旨就是要學(xué)以致用。雖然就目前的一些評價方式來說還不能完全體現(xiàn)這一點,但作為“行內(nèi)人”,一個想為學(xué)生做點兒事情的教師,我想我們最起碼要保證教授給學(xué)生的知識是有用的,不是在誤人子弟。所以給學(xué)生講的編程思想,不應(yīng)是生僻的,不要一味追求高、深,而要能夠在實際的運用中起到指導(dǎo)作用。倘若不然,學(xué)生發(fā)覺他們學(xué)到的都是些不切實際的東西,是在學(xué)習(xí)“屠龍刀法”,那么最終他們也會棄你而去。在“算法與程序設(shè)計”模塊中,數(shù)據(jù)結(jié)構(gòu)可以獨立出來形成一個篇幅,但并不是要把數(shù)據(jù)概念孤立研究,高中學(xué)生還沒有完全的抽象思維,我們的教育目的是普及不是專攻。因此,高中階段談編程思想、講數(shù)據(jù),都需要有客觀的實體做載體,這樣才能讓學(xué)生有明確的應(yīng)用對象和環(huán)境。當(dāng)前,很多高中學(xué)生的計算機讀物在這點上是不足的,基本都是抄襲大學(xué)的教材,形象性、實用性不夠。
比如講到多種排序思想,如果我們只是拿幾個數(shù)字做示范,學(xué)生學(xué)習(xí)之后肯定是要問的:排序是一眼就能看出來的事情用得著這么復(fù)雜嗎?到底意義何在呢?對于程序編寫人員來說,排序的意義是很顯然的事情,但這樣的教學(xué)并沒能讓學(xué)生切實體會到排序思想的重要性以及學(xué)習(xí)該思想的必要性。假如我們能設(shè)計一個情境,要對本次數(shù)學(xué)月考成績進行全年級排名(1000人左右),提供一個成績單給每個學(xué)生人手一份成績單,比一比哪個學(xué)生排得最快。這樣一來,學(xué)生勢必會對排序方法有所思考,總想找出最簡便快捷的方法。教師稍加點撥,可能各種排序方法學(xué)生就迫不及待地用上了。哪一種更具有優(yōu)勢教師幾乎不用說,事實已經(jīng)開口了,最后我們做的只是一些掃尾性的總結(jié)和說明工作。
在平時的教學(xué)中,還有些教師喜歡講些“××加密算法”、“××壓縮算法”等等具有一定深度的知識來訓(xùn)練學(xué)生的思維,豐富教學(xué)內(nèi)容。我承認(rèn)這些知識都是很有價值的,但不具有普遍性,至少日常的運用中不大會涉及,所以我建議不如把它們刪去。
從某種角度講,要求教授的編程思想有實際使用價值,其實是變學(xué)生的“填鴨式學(xué)習(xí)”為“有需學(xué)習(xí)”,當(dāng)然關(guān)鍵在于用生活中的實際問題去勾起學(xué)生學(xué)習(xí)的欲望,并讓其保持住學(xué)習(xí)的熱情。
四、編程思想的教學(xué)要善于總結(jié)
教師教的目的是為了不教,是為了培養(yǎng)學(xué)生能獨立自主地去學(xué)習(xí)和探索未知,所以學(xué)法指導(dǎo)十分重要。生活是本豐富的教科書,從中我們遇到的問題也必然是形形色色的,課堂不可能包羅萬象,前面的路只有在摸索中前進。當(dāng)然,摸索不是漫無目的的,我們是要在總結(jié)已知的前提下,吸取經(jīng)驗和教訓(xùn),然后再去摸索。信息技術(shù)學(xué)科的學(xué)習(xí)也是這樣,我們往往要解決的不是單單一個問題,而是要研究一類問題,要學(xué)生做到舉一反三,所以必須適時對教學(xué)進行總結(jié)。從生活中來,到生活中去,也就是從實例中總結(jié)經(jīng)驗,然后指導(dǎo)實踐。
程序設(shè)計課程中為說明某種算法可以列舉很多實際例子,而所謂的總結(jié)其實最終只需兩句話:(1)到底在什么情況下可以使用這種算法;(2)算法到底怎么做。該環(huán)節(jié)可以很簡潔,但不可缺省,是整個課堂教學(xué)的濃縮和精華。總結(jié)所使用的形式可以是啟發(fā)學(xué)生總結(jié),也可以教師自己總結(jié),但我更贊賞前者,那更能培養(yǎng)學(xué)生良好的學(xué)習(xí)習(xí)慣。
雨果曾說:“哪里有思想,哪里就有威力?!蔽覀儜?yīng)該加強編程思想在程序設(shè)計課程中的核心地位。跟孩子多談?wù)勊枷?,大有裨益?br/> (作者單位:江蘇丹陽高級中學(xué))