況迎輝,姜曉彤
(東南大學(xué)儀器科學(xué)與工程學(xué)院,江蘇南京210096)
“算法語言與程序設(shè)計”是我校一年級本科生的一門重要通識教育基礎(chǔ)課程,多年教學(xué)經(jīng)驗顯示,入門難是該課程教學(xué)的最大特點。造成困難的主要原因是:
(1)思維表達方式陌生。程序設(shè)計的基礎(chǔ)是算法設(shè)計,而面向計算機的算法設(shè)計需要對實際問題進行抽象和分解。這種模型抽象能力和邏輯描述能力是以往其他課程訓(xùn)練沒有提供過的。
(2)感性認識缺失。從認識規(guī)律來看,感性認識是基礎(chǔ)。由于思維表達方式的特殊,學(xué)生感覺深奧,一定程度上影響了思維的積極性。
加大實踐環(huán)節(jié)學(xué)時數(shù)是解決教學(xué)困難的主要對策[1],目前上課與上機時數(shù)比基本已達到1∶1。但是,上課聽講和課后上機的被動學(xué)習(xí)模式,以及脫離應(yīng)用背景的程序用例使上機環(huán)節(jié)在彌補感性認識缺失方面沒有發(fā)揮出應(yīng)有的作用,效果仍然不令人滿意。本文介紹的改革正是針對這些問題力圖進行突破,旨在激發(fā)學(xué)生自主學(xué)習(xí)的潛力和積極性[2]。
我們利用上機作業(yè)對教學(xué)內(nèi)容進行承上啟下,引導(dǎo)學(xué)生主動學(xué)習(xí)。如在程序基本控制結(jié)構(gòu)的教學(xué)中,分支結(jié)構(gòu)與循環(huán)結(jié)構(gòu)通常分兩次課完成,而循環(huán)結(jié)構(gòu)對于沒有程序設(shè)計經(jīng)驗的學(xué)生來說是一個難點。我們在分支結(jié)構(gòu)教學(xué)之后的上機作業(yè)中,提前加入循環(huán)結(jié)構(gòu)的應(yīng)用。作業(yè)之一要求學(xué)生利用分支結(jié)構(gòu)實現(xiàn)一個簡單計算器程序,并提出如下三步要求:①實現(xiàn)簡單計算器(必做);②使計算器可連續(xù)進行5次計算操作(選做);③使計算器可一直處于計算狀態(tài),直到響應(yīng)退出命令為止(選做)。
在兩屆學(xué)生中試點發(fā)現(xiàn),幾乎所有學(xué)生都比較順利地完成了第二步,還有一部分學(xué)生獨立或通過與教師討論完成了第三步任務(wù)。
引導(dǎo)自主學(xué)習(xí)必須有教師的積極介入[3],以下要點需要特別重視:①選題針對性,要針對教學(xué)內(nèi)容和教學(xué)目標(biāo),注意循序漸進;②學(xué)以致用,選題內(nèi)容盡可能與實際應(yīng)用結(jié)合,幫助學(xué)生從應(yīng)用角度理解程序設(shè)計;③恰當(dāng)提示思路,既起到方向性引導(dǎo),又要留出足夠的自學(xué)鉆研空間。
初學(xué)程序設(shè)計者普遍存在會看不會用的問題,即能讀懂程序,但不會自己寫程序。
例如,一年級第一學(xué)期教學(xué)內(nèi)容主要涉及簡單輸入輸出、基本控制結(jié)構(gòu)、函數(shù)、數(shù)組、結(jié)構(gòu)體以及文本文件等基本數(shù)據(jù)結(jié)構(gòu)。為了縮短學(xué)習(xí)和應(yīng)用之間的距離,我們在進行函數(shù)教學(xué)的同時就給學(xué)生演示了一個基于控制臺應(yīng)用的“小型圖書管理系統(tǒng)”的案例程序,通過簡單的菜單操作實現(xiàn)圖書的瀏覽、查詢、借閱、歸還和書庫管理等。該案例中菜單的設(shè)計使用、程序的模塊化設(shè)計方法、結(jié)構(gòu)體數(shù)組使用和文件操作等各重要組成部分與教學(xué)內(nèi)容緊密相關(guān)。對初學(xué)者來說,這是一個足夠大的程序,但學(xué)生對這個系統(tǒng)的感性認識很強,都有到圖書館的經(jīng)歷使其神秘性相對降低。
再如,“面向?qū)ο蟆背绦蛟O(shè)計教學(xué)中,由于“對象”和“面向?qū)ο蟆钡雀拍畹某橄笮?初學(xué)者很難理解“封裝類”的意義何在。為此,我們以標(biāo)準(zhǔn)數(shù)據(jù)類型作為案例,從面向?qū)ο笤O(shè)計的應(yīng)用需求出發(fā),解釋何為封裝類和如何封裝類,并與相關(guān)教學(xué)內(nèi)容關(guān)聯(lián)[3]。相應(yīng)地,上機作業(yè)通常給出主程序代碼,即以代碼方式提出應(yīng)用需求,讓學(xué)生針對該需求進行對象封裝。
由于學(xué)時限制,課堂教學(xué)很難較多地涉及程序調(diào)試技術(shù)等實踐環(huán)節(jié)面臨的問題。我們采用提供閱讀材料并配合訓(xùn)練作業(yè)的方法,將諸如復(fù)雜程序的多文件結(jié)構(gòu)設(shè)計調(diào)試工具的使用和調(diào)試基本技巧的訓(xùn)練等重要內(nèi)容貫穿到上機實踐當(dāng)中。編制了結(jié)合案例的針對性閱讀文檔,通過圖文結(jié)合的方式提供直觀的可參考信息。同時,結(jié)合訓(xùn)練目標(biāo)在上機作業(yè)中提供錯誤程序讓學(xué)生調(diào)試修改。
本項改革較大程度地改變了教學(xué)和上機的關(guān)系。課堂教學(xué)針對主線、要點和難點進行講解和啟發(fā),呈現(xiàn)出粗線條特征。而大量細化學(xué)習(xí)、深入鉆研的工作則利用上機環(huán)節(jié),通過做中學(xué)習(xí)的方式完成。我們在每次上機作業(yè)完成之后,都安排10~20分鐘討論環(huán)節(jié)。上機過程中發(fā)現(xiàn)的各類問題,甚至萌生的新想法,均可提供出來討論。
如何在縮減課內(nèi)學(xué)時的情況下保障甚至提升教學(xué)效果,是研究型大學(xué)教師面臨的重要課題。我們根據(jù)作業(yè)難度和課程進度規(guī)定完成作業(yè)的時間期限,例如每個學(xué)生每周至少設(shè)計調(diào)試一至兩個程序,這樣做的好處是既有訓(xùn)練目標(biāo)和工作量限制。此外,我們還提供較大型的程序作業(yè)要求,讓學(xué)有余力的學(xué)生在一個學(xué)期內(nèi)完成。例如,作為演示案例的“小型圖書管理系統(tǒng)”,提出功能要求,讓學(xué)生利用學(xué)期內(nèi)課余時間和假期時間完成。在第二學(xué)期開學(xué)初的時間段內(nèi)提交并驗收通過的學(xué)生,由教師認定并推薦能獲得課外研學(xué)的學(xué)分。經(jīng)過試點,課程班中約有五分之一的學(xué)生按時提交了該綜合設(shè)計程序。
課余時間和選做作業(yè)在教師監(jiān)督之外,為達到預(yù)期目的,教師在制定任務(wù)計劃時應(yīng)注意以下問題:①統(tǒng)籌規(guī)劃整個學(xué)期的實踐訓(xùn)練,做好內(nèi)容銜接,使得進度較慢的學(xué)生能夠逐漸趕上,而進度快的學(xué)生則有機會去鉆研更有挑戰(zhàn)性的問題。②綜合設(shè)計性大作業(yè)應(yīng)在適當(dāng)時機布置,已有的知識儲備讓學(xué)生感覺到完成的可能性。
本文提及的改革通過課堂教學(xué)和上機環(huán)節(jié)相配合,較早地引入了研究性學(xué)習(xí)模式。對教師來說,教學(xué)模式改變帶來的挑戰(zhàn)是巨大的,需要投入更多的精力和時間來組織和管理好整個教學(xué)過程。對學(xué)生來說,這種模式學(xué)習(xí)壓力明顯加大,但收獲也是巨大的。經(jīng)過一年學(xué)習(xí)能夠讓學(xué)生對程序設(shè)計保持較高熱情,愿意主動完成具有挑戰(zhàn)性的任務(wù)。
[1] 戚曉芳,C++程序設(shè)計教學(xué)新思路[J],南京:電氣電子教學(xué)學(xué)報,2004,26(5):30-32
[2] 吳乃陵,面向?qū)ο驝++程序設(shè)計教學(xué)改革[J],南京:電氣電子教學(xué)學(xué)報,2003,25(2):9-11
[3] 李海文,研究型學(xué)習(xí)在程序設(shè)計實踐課程中的嘗試[J],南京:電氣電子教學(xué)學(xué)報,2003,25(6):15-18