馬鳳云
“算法與程序設計”是從培養學生的算法思維與創新能力入手,更適用于對高中生培養的模式。但與“多媒體技術與應用”等課程相比,“算法與程序設計”課程看起來較為枯燥,這也是為什么一提起該課程的教學,很多教師都感到束手無策的原因。我總結了大家困惑的問題,首先是課程定位問題,如何正確處理算法、程序設計與語言之間的關系問題;其次是課程的信心、興趣培養問題,這是怎樣形成以此為趣的態勢問題;再次是課程體系形成問題,是明確照搬教材還是自己重構課程體系才能更符合高中學生的認知規律;最后是學生評價體系的問題,即如何建立合理動態的學生學習效果評價體系。
● 課程定位問題
從高中信息技術課程標準可以看出“算法與程序設計”的重點是“對算法的體驗和設計算法解決簡單問題”,即算法和程序設計是中心,語言是輔助。因此,要把算法的體驗和設計作為“算法與程序設計”課程的重點,避免使課程陷入程序設計語言的語法命令和方法技巧的細枝末節中。這樣既降低了學生的學習難度,同時也能使學生的“算法思維”得到進一步的訓練和培養。下面以入門第一課為例做簡單的介紹。
大部分學生對程序設計和VB語言一無所知,甚至會覺得程序設計枯燥難懂。因此,在上課伊始,我會首先簡要闡述學習這門課程的意義,并展示往屆學生的一些典型、有趣的作品。然后,我鼓勵學生們自主探究完成第一個VB程序:計算器。在整個過程中,教師提供輔助學習資源:導學案和微視頻。其中,導學案從啟動VB→制作界面→編寫代碼→程序調試運行等幾個方面做了詳細介紹。關鍵代碼的編寫只給出了一個“減法”運算,其他步驟由學生自主探究完成。微視頻則錄制了計算器界面制作的詳細過程及“減法”代碼的編寫。有了這個樣例以后,學生就知道如何編寫代碼,而且能觸類旁通地完成其他運算符代碼的編寫,說白了就是修改運算符的問題。當學生看到自己制作的計算器能正常運行時,欣喜之情溢于言表,他們覺得“算法與程序設計”原來這么有趣!通過本節課,學生認識并編寫了程序,體驗了可視化程序設計的完整過程,看到了程序運行的結果。在這樣的課堂上,學生體驗到的是有趣的思維訓練,而不是堆積枯燥的代碼,這樣就能逐漸消除畏難情緒,并對后續的學習充滿了期待。
● 課程的信心、興趣培養問題
如何樹立學生對“算法與程序設計”課程的信心,并培養其對此課程的學習興趣?為了解決這個問題,我是從備課入手的。
1.備課第一步:精選案例,激發興趣
為了激發學生的學習興趣,經典案例是必不可少的,經典案例選取只靠個人可能精力有限,不可能節節出精品,需要借助集體的力量。我們教研組每周集體備課一次,每次備課選定一個主講人,負責精心選取貼近大家的生活與經驗、能激發學生學習興趣的案例,還要兼顧案例的典型性、連貫性、拓展性,同時每個案例要能完成每周兩節課知識點的學習。例如,第二周,我是主講人。本周的知識點為對象的屬性、事件、方法。教材上的例子是“打字測試”,這個案例枯燥、代碼復雜。學生剛剛認識VB,找一個什么樣的例子能讓學生既掌握知識點又很容易入手,而且還非常感興趣呢?我想到很多學生經常去吃各種快餐,于是決定做一個“點餐程序”。為了充分激發學生的學習興趣,我事先準備了很多的相關素材和一個優秀范例,教學結果顯示,這個“點餐程序”獲得了較好的教學效果。
2.備課第二步:分解復雜任務,感受學習樂趣
我們的課堂教學主要以任務驅動、自主探究教學方法為主,將知識點的學習融入不同任務的需要中,學生只有需要了才會用心去學。我們以任務為核心,以解決任務的思想方法為主線,以任務解決的過程為載體,讓學生在任務驅動、自主探究的過程中學習算法與程序設計的相關知識。我們通過巧妙地設置障礙,層層遞進地設置各類的問題,引導學生自主學習,讓學生在不斷突破“障礙”的過程中感受成功解決問題的樂趣。下面以“對象的屬性、事件、方法”兩節課的“點餐程序”為例進行說明。
第一課,首先展示本節范例,讓學生初步了解學習任務。然后根據學案自主探究設計界面。界面完成后,合作探究完成代碼的編寫,這需要考慮兩個問題:代碼寫在哪兒和怎么寫代碼?在這個環節教師先讓學生自主探究,然后,教師再次演示范例,簡單引導:①當單擊“確定”按鈕時,計算出總金額,代碼應該寫在哪里呢?很明顯應該寫在確定按鈕的單擊事件下面。②總金額怎么計算?等于單價×份數。“障礙”解除了,學生可以繼續自主探究學習。
第二課,“實現點餐時,能即時計算點餐總金額并顯示點餐信息”。課上,教師演示范例,學生仔細觀察點餐程序的改進之處。本節的新知識點LostFocus涉及操作步驟較多,給學生學案自主探究難以完成。于是我以上節課學生的源程序為例,現場演示修改(修改學生自己的程序,他們非常感興趣,注意力很集中),很快就將代碼修改完成。學生明白了lostfocus事件的具體用法,后面的任務基本都能自主探究完成。本節課的教學非常順利,取得了良好的教學效果。
我在兩課時內容之間給學生設置了“障礙”。第一課時,完成計算總金額的功能,第二節課引入lostfocus事件的學習,完成即時計算總金額與顯示信息的功能。這兩節課的任務設計是循序漸進的關系,如果一開始就把第二節課的內容拋給學生,估計好多學生都會知難而退。
回過頭來再看該案例,知識點還是圍繞如何實現計算功能,是第一周內容的重復,但是加入了對對象的屬性、事件、方法等知識點的理解,對初學者來說這樣“新瓶裝舊酒”式的重復,一遍一遍的訓練強化,是完全有必要的。學生第二課的作品,實際上是有瑕疵的,光標失去時即使沒有點餐也會顯示點餐信息,領悟較快的學生在課堂上就發現了這個問題,該怎么樣解決呢?這就是下節課要學的選擇結構方面的內容,如此環環相扣,學生對后面的學習也就充滿了期待。
● 課程體系形成問題
根據自身教學特點和學生們的接收知識能力,“算法與程序設計”課程可以適當調整教材結構,對課程體系進行優化和重構。例如,我在教學的過程中發現無論是教材內容的選擇還是編排順序都不適合本校學生。教科版第一章內容是體驗計算機解決問題的過程,我認為將其融合到第二章的程序設計中更為恰當。程序設計的過程就是計算機解決問題的過程,學生用到了再學更容易理解。另外,課本上的案例陳舊,引不起學生的學習興趣。由此,我們對教材進行了重新編排,構建了自己的課程體系。經過多年的摸索總結,算法與程序設計模塊的教學嚴格按我們自己的教學進度表授課。并且每節課都會設置學案、學習范例、視頻資源、圖片資源、參考資料等學習資源,目前已經形成了較為完備的課程體系和部分經典學習資源。
● 學生評價體系的問題
對學生評價的重點是學習效果的評價,通過當堂作業評價學習效果。學生每節課都要將本節的任務形成作品上交。教師對作品進行點評,點評分為部分和全部點評兩種。部分點評就只點評代表性作品,選擇普通的給予肯定,有亮點的給予表揚,有錯誤的及時解決。如果遇到優秀的值得推廣的作業,在其他班級都會給予展示,對作者無形中是一種很大的鼓勵。全部點評,主要是為了激勵學生,不定期的點評全部作業。每節課上交作品并給予點評,可以更好地提升學生學習的積極性,同時也是一種監督。為了更好地表現自己,學生會認真完成每節課的作品,并盡力做到最好。
總之,我們通過準確的課程定位,降低了學習難度,鍛煉了學生的算法思維;通過精選案例、巧設任務,引導學生自主學習,培養了學生的信心,激發了學習興趣;通過重新構建課程體系,適應了學情,化解了學習困難;通過作品評價,激發了學生學習的積極性。這樣可以使我們的算法與程序設計的課堂教學游刃有余,學生如魚得水。在發揮學科優勢,鍛煉學生的算法思維與創新能力的同時,我們又關注了學生身心的全面發展,提高了學生的自主學習能力。