摘要:探討了以能力培養(yǎng)為導(dǎo)向的非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)基礎(chǔ)課程的改革思路。優(yōu)化教學(xué)內(nèi)容,編寫特色教材,突出算法和程序設(shè)計(jì)方法,以培養(yǎng)學(xué)生的程序設(shè)計(jì)能力;采用問題驅(qū)動(dòng)式教學(xué)方法,以訓(xùn)練學(xué)生的計(jì)算思維能力;強(qiáng)化實(shí)踐環(huán)節(jié),開發(fā)教學(xué)輔助系統(tǒng),以提高學(xué)生的自主學(xué)習(xí)能力。
關(guān)鍵詞:能力培養(yǎng);程序設(shè)計(jì);計(jì)算思維;自主學(xué)習(xí)
作者簡介:金永霞(1973-),女,寧夏平羅人,河海大學(xué)物聯(lián)網(wǎng)工程學(xué)院,講師;劉景(1973-),男,山東費(fèi)縣人,河海大學(xué)物聯(lián)網(wǎng)工程學(xué)院,副教授。(江蘇 常州 213022)
基金項(xiàng)目:本文系河海大學(xué)常州校區(qū)2013年度教育教學(xué)改革項(xiàng)目“能力導(dǎo)向型程序設(shè)計(jì)語言教學(xué)及考核方法研究與實(shí)踐”的部分研究成果。
中圖分類號:G642.0 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-0079(2014)05-0101-02
程序設(shè)計(jì)是目前國內(nèi)高校理工科專業(yè)普遍開設(shè)的一門基礎(chǔ)課,該課程以培養(yǎng)學(xué)生科學(xué)的思維方法,提升解決問題的能力為目標(biāo),指導(dǎo)學(xué)生熟悉基本編程模式,掌握程序設(shè)計(jì)的思想和方法。很多學(xué)校在程序設(shè)計(jì)課程中都以C語言作為程序描述的工具,但在教學(xué)活動(dòng)中往往把“C語言”作為重點(diǎn),而較少關(guān)注“程序設(shè)計(jì)”。學(xué)生雖然投入了大量的精力去學(xué)習(xí)C語言的語法,但面對一個(gè)實(shí)際問題時(shí)還是不知道如何去編程解決。筆者結(jié)合多年的教學(xué)實(shí)踐經(jīng)驗(yàn),著眼于學(xué)生綜合能力的培養(yǎng),對程序設(shè)計(jì)基礎(chǔ)課程的教學(xué)內(nèi)容、教材建設(shè)、教學(xué)模式以及實(shí)踐環(huán)節(jié)方面進(jìn)行了改革和實(shí)踐,以幫助學(xué)生理解程序設(shè)計(jì)的基本原則和方法,訓(xùn)練科學(xué)的思維能力,學(xué)習(xí)如何利用計(jì)算機(jī)去解決一個(gè)實(shí)際問題,同時(shí)通過上機(jī)實(shí)踐掌握高級語言的語法規(guī)則和編程技巧。
一、優(yōu)化教學(xué)內(nèi)容,注重培養(yǎng)程序設(shè)計(jì)能力
程序設(shè)計(jì)課程傳統(tǒng)的教學(xué)內(nèi)容是以語法知識為主線組織的,每介紹一個(gè)語法知識點(diǎn)時(shí)引入相應(yīng)的例題,講解在程序中如何運(yùn)用這些語法規(guī)則,這種組織方式能夠幫助學(xué)生較好地掌握語法,但容易忽視對算法思想和程序整體框架的理解,不利于程序設(shè)計(jì)能力的培養(yǎng)。為此筆者在授課時(shí)對教學(xué)內(nèi)容重新進(jìn)行整合,突出“程序設(shè)計(jì)為主,語法規(guī)則為輔”的教學(xué)思想,將C語言的主要語法在課程的開始階段就集中講解,使得學(xué)生快速掌握主要語法知識和常用控制結(jié)構(gòu),初步具備編寫程序的基本能力。在此基礎(chǔ)上展開算法與程序設(shè)計(jì)方法學(xué),介紹程序設(shè)計(jì)的基本思想和原則,結(jié)合一些具體案例給出編程解決問題的一般步驟。后續(xù)在解決實(shí)際問題時(shí)再引入需要用到的復(fù)雜語法知識,這樣就形成了以算法和程序設(shè)計(jì)方法為主線的教學(xué)內(nèi)容。
程序設(shè)計(jì)的核心是算法,算法的本質(zhì)是處理數(shù)據(jù),為了引導(dǎo)學(xué)生在針對實(shí)際問題時(shí)拓展思路形成算法設(shè)計(jì)的策略,在教學(xué)內(nèi)容的組織上大部分是圍繞算法和數(shù)據(jù)結(jié)構(gòu)展開。[1]通過實(shí)例對同一個(gè)問題提出不同的算法并設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),鼓勵(lì)學(xué)生積極思考探索創(chuàng)新,真正了解程序設(shè)計(jì)的核心和本質(zhì)。由于程序設(shè)計(jì)相關(guān)內(nèi)容的組織方式是一種網(wǎng)狀結(jié)構(gòu),在學(xué)習(xí)當(dāng)前知識的時(shí)候很可能會(huì)涉及后面章節(jié)的內(nèi)容,這時(shí)候需要樹立整體學(xué)習(xí)的觀念,無需過度注重實(shí)現(xiàn)的細(xì)節(jié),把程序中所涉及的所有函數(shù)模塊以及數(shù)據(jù)結(jié)構(gòu)置于程序設(shè)計(jì)的整體框架中,給出每個(gè)函數(shù)的功能和接口描述,整個(gè)內(nèi)容學(xué)習(xí)完成后,再回頭解決前面的問題。這樣在教學(xué)內(nèi)容中始終貫穿程序設(shè)計(jì)的方法學(xué),重視編程能力的培養(yǎng),使學(xué)生認(rèn)識到程序設(shè)計(jì)課程并不僅僅是了解某一個(gè)高級語言本身的語法,更重要的是學(xué)習(xí)如何用計(jì)算機(jī)解決問題的方法,為今后專業(yè)課的學(xué)習(xí)和實(shí)踐打下良好的基礎(chǔ)。
配合教學(xué)內(nèi)容的優(yōu)化,筆者出版了自編的主教材《程序設(shè)計(jì)基礎(chǔ)教程(C語言描述)》和實(shí)驗(yàn)教材《程序設(shè)計(jì)實(shí)踐教程(C語言描述)》。主教材把程序設(shè)計(jì)的思路和方法作為重點(diǎn),以算法為主線,把C語言作為描述程序的工具,從應(yīng)用的角度切入,根據(jù)學(xué)生的學(xué)習(xí)規(guī)律,由淺入深,由易到難,構(gòu)造了“以應(yīng)用引入算法,在編程中掌握語法”的教材體系。教材把算法和語言緊密結(jié)合,一開始先引入簡單的程序并介紹基本的語法規(guī)則,讓學(xué)生了解程序的組成要素,會(huì)編寫簡單的程序。隨著問題復(fù)雜度的逐步提高,算法和語法逐步深入,在編程應(yīng)用中掌握枯燥的語法知識。在教材中結(jié)合具體問題分類介紹常用的算法設(shè)計(jì)策略,提供了常用的編程模式,學(xué)生在運(yùn)用這些基本算法的過程中逐步理解和掌握模塊化程序設(shè)計(jì)方法,為學(xué)生編寫大型程序提供借鑒。
二、采用問題驅(qū)動(dòng)教學(xué)模式,訓(xùn)練計(jì)算思維能力
計(jì)算思維是美國學(xué)者Jeannette M. Wing教授提出的一種先進(jìn)的教學(xué)理念,Wing教授認(rèn)為:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解的涵蓋了計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。計(jì)算思維就如同“讀、寫、算”能力一樣,是每一個(gè)人為了在現(xiàn)代社會(huì)中發(fā)揮職能所必須掌握的根本技能。[2]計(jì)算思維的本質(zhì)是“抽象”和“自動(dòng)化”,這是計(jì)算機(jī)求解問題的過程,而程序設(shè)計(jì)課程的目標(biāo)之一就是讓學(xué)生學(xué)會(huì)通過編程解決問題,因此在該課程的教學(xué)活動(dòng)中結(jié)合具體案例訓(xùn)練學(xué)生的計(jì)算思維具有一定的實(shí)踐基礎(chǔ)。[3]
培養(yǎng)學(xué)生的計(jì)算思維,需要樹立以學(xué)生為主體的學(xué)習(xí)模式,變被動(dòng)接受為主動(dòng)學(xué)習(xí)。為此,教師在第一堂課就向?qū)W生展示一些生動(dòng)有趣的C語言程序,讓學(xué)生了解C語言的應(yīng)用領(lǐng)域,明確學(xué)習(xí)該課程的意義,激發(fā)探索研究的興趣。在授課時(shí)采用“問題驅(qū)動(dòng),建立數(shù)學(xué)模型,設(shè)計(jì)算法,程序?qū)崿F(xiàn),程序測試”的教學(xué)思路,由傳統(tǒng)的知識輸入型教學(xué)模式向能力培養(yǎng)型教學(xué)模式過渡,力圖把計(jì)算思維內(nèi)化為學(xué)生的思維習(xí)慣,啟發(fā)學(xué)生面對問題積極思考。問題驅(qū)動(dòng)的關(guān)鍵是找到能引發(fā)學(xué)生興趣的切入點(diǎn),使“抽象”和“形式化”有的放矢,如提出一些有趣的邏輯推理問題“誰做的好事”、“八皇后問題”、“青蛙過河”等。首先引導(dǎo)學(xué)生分析問題,歸納并抽象出數(shù)學(xué)模型;然后為解決此類問題引入窮舉法、遞歸等算法策略;最后在實(shí)現(xiàn)程序時(shí)介紹選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等知識點(diǎn)。學(xué)生在解決問題的過程中既學(xué)習(xí)了方法和思路,又掌握了語法知識,同時(shí)也訓(xùn)練了一種嚴(yán)謹(jǐn)?shù)乃季S方式和綜合運(yùn)用知識的能力。
計(jì)算思維是人類求解問題的一條途徑,程序設(shè)計(jì)的過程就是解決問題的過程,正確理解和運(yùn)用模塊化方法,是培養(yǎng)計(jì)算思維的內(nèi)容之一。教師在指導(dǎo)學(xué)生設(shè)計(jì)算法和編寫程序時(shí)遵循模塊化程序設(shè)計(jì)的基本原則,將問題分解為相對獨(dú)立的小任務(wù),引導(dǎo)學(xué)生建立程序的總體框架,幫助學(xué)生了解如何規(guī)劃和設(shè)計(jì)一個(gè)完整程序。由于閱讀程序可以幫助學(xué)生熟悉語法,拓展自己的編程思路,教學(xué)時(shí)增加了程序閱讀方面的內(nèi)容。在閱讀程序時(shí)打破了傳統(tǒng)的“提出問題,給出源程序,解釋程序”的教學(xué)思路,按照“自頂向下,逐步求精”的程序設(shè)計(jì)原則講解例題。同時(shí),為活躍課堂氣氛,促使學(xué)生積極思考,鼓勵(lì)學(xué)生對已有算法進(jìn)行完善,以模塊化的方式增加程序功能并上機(jī)調(diào)試,通過實(shí)驗(yàn)強(qiáng)化編程技能,加深對結(jié)構(gòu)化程序設(shè)計(jì)思想的理解。
采用問題驅(qū)動(dòng)教學(xué)方法,激發(fā)學(xué)生興趣,以經(jīng)典算法為基礎(chǔ),大量閱讀程序強(qiáng)化基礎(chǔ)概念的理解,樹立模塊化程序設(shè)計(jì)的思想,目的都是把計(jì)算思維能力的培養(yǎng)有效地融入到每一堂課中,使學(xué)生具備利用計(jì)算機(jī)求解問題的基本能力。
三、強(qiáng)化實(shí)踐環(huán)節(jié)和輔助教學(xué)手段,提升自主學(xué)習(xí)能力
程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,學(xué)生需要足夠的上機(jī)實(shí)踐來訓(xùn)練編程能力。課程的實(shí)踐包括兩個(gè)階段:一是按照課堂授課進(jìn)度適時(shí)安排基礎(chǔ)實(shí)驗(yàn)內(nèi)容,要求學(xué)生編程實(shí)現(xiàn)經(jīng)典算法,在上機(jī)過程中掌握語法規(guī)則和控制結(jié)構(gòu)的運(yùn)用,鍛煉調(diào)試程序、排錯(cuò)、修改、正確性測試等基本技能,基礎(chǔ)實(shí)驗(yàn)貫穿整個(gè)教學(xué)過程;[4]二是在課程結(jié)束時(shí),設(shè)置獨(dú)立的項(xiàng)目設(shè)計(jì)實(shí)踐環(huán)節(jié),要求學(xué)生針對一個(gè)實(shí)際問題,綜合運(yùn)用所學(xué)過的知識設(shè)計(jì)算法、實(shí)現(xiàn)程序,訓(xùn)練學(xué)生分析問題解決問題的能力、對知識的綜合運(yùn)用能力、創(chuàng)新能力和編程能力。項(xiàng)目設(shè)計(jì)實(shí)驗(yàn)在實(shí)施時(shí)以分組形式展開,把一個(gè)項(xiàng)目按功能劃分成若干模塊,組內(nèi)成員分工合作,每人根據(jù)自己的能力選擇一個(gè)模塊任務(wù)獨(dú)立完成,力圖使每個(gè)學(xué)生都能在自己原有的基礎(chǔ)上有所收獲和進(jìn)步。實(shí)驗(yàn)中碰到的問題可以在組內(nèi)討論解決,成員之間互相幫助,增強(qiáng)個(gè)體之間的溝通能力,形成一個(gè)良好的學(xué)習(xí)氛圍,有助于學(xué)生的自我管理和自主學(xué)習(xí)。實(shí)驗(yàn)環(huán)節(jié)注重過程管理,從實(shí)驗(yàn)預(yù)習(xí)、實(shí)驗(yàn)操作、記錄審簽、實(shí)驗(yàn)報(bào)告、實(shí)驗(yàn)考核等方面隨時(shí)考查記錄學(xué)生的表現(xiàn)。[5]具體的過程管理方法為:學(xué)生在上機(jī)前就做好算法設(shè)計(jì)、編寫源程序以及設(shè)計(jì)測試用例的工作;上機(jī)時(shí)主要調(diào)試、修改程序;在每個(gè)模塊的程序完成后,教師檢查驗(yàn)收程序并記錄驗(yàn)收結(jié)果;學(xué)生在實(shí)驗(yàn)完成后提交實(shí)驗(yàn)報(bào)告,報(bào)告中重點(diǎn)分析闡述自己所承擔(dān)的模塊任務(wù);在驗(yàn)收考核階段,要求每位學(xué)生運(yùn)行演示自己的程序并回答問題,教師根據(jù)學(xué)生在整個(gè)實(shí)驗(yàn)環(huán)節(jié)中的表現(xiàn)進(jìn)行考核。
為了方便學(xué)生在課余時(shí)間的學(xué)習(xí),筆者開發(fā)了程序設(shè)計(jì)教學(xué)輔助系統(tǒng),系統(tǒng)包括平時(shí)練習(xí)、上機(jī)考試、修改題目、試卷處理、學(xué)生平時(shí)練習(xí)統(tǒng)計(jì)五個(gè)功能模塊,教師利用此平臺可以錄入題目,供學(xué)生平時(shí)練習(xí)使用??紤]到學(xué)生對參加計(jì)算機(jī)等級考試的需求,筆者按照等級考試的題型和要求,提供難度相當(dāng)?shù)纳蠙C(jī)練習(xí)題,強(qiáng)化學(xué)生的實(shí)際動(dòng)手能力。在學(xué)生上機(jī)所使用的實(shí)驗(yàn)教材中,針對每個(gè)知識單元都給出了詳細(xì)的程序范例和課外上機(jī)的題目,希望在課外沒有指導(dǎo)老師的情況下,學(xué)生能按照教材的指導(dǎo)獨(dú)立完成上機(jī)實(shí)驗(yàn)。
強(qiáng)化實(shí)踐環(huán)節(jié)和輔助教學(xué)手段,規(guī)范實(shí)驗(yàn)過程管理,能夠督促學(xué)生重視平時(shí)的上機(jī)練習(xí),為學(xué)生的自主學(xué)習(xí)提供支持。學(xué)生通過動(dòng)手實(shí)踐真正掌握編程技能,從該課程的學(xué)習(xí)中有所收獲,避免了平時(shí)不努力,考試之前突擊復(fù)習(xí)應(yīng)付考試的不良現(xiàn)象。
四、結(jié)束語
對程序設(shè)計(jì)基礎(chǔ)課程進(jìn)行改革,目的是讓學(xué)生掌握程序設(shè)計(jì)的思想和方法,在以后的學(xué)習(xí)中能利用高級語言編寫程序來解決本專業(yè)領(lǐng)域中的問題,對提升學(xué)生的計(jì)算機(jī)應(yīng)用能力具有積極的促進(jìn)作用。課程改革在實(shí)際教學(xué)應(yīng)用中也取得了較好的效果,近年來學(xué)生在江蘇省計(jì)算機(jī)二級考試中達(dá)到了較高的通過率,并且在“藍(lán)橋杯”全國軟件設(shè)計(jì)大賽中獲得了一、二、三等獎(jiǎng)的好成績。以能力培養(yǎng)為導(dǎo)向,優(yōu)化教學(xué)內(nèi)容,編寫特色教材,采用啟發(fā)式教學(xué)模式,強(qiáng)化實(shí)踐環(huán)節(jié)和輔助教學(xué)手段,對程序設(shè)計(jì)類課程的教學(xué)改革做出了有益的探索,有利于學(xué)生對本專業(yè)課程的學(xué)習(xí),對提升學(xué)生的專業(yè)能力具有重要意義。
參考文獻(xiàn):
[1]丁海軍,金永霞, 景雪琴,等.程序設(shè)計(jì)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2013.
[2]Jeannette M. Wing.Computational Thinking[J].Communications of the ACM,2006,49(3):33-35.
[3]陳國良,董榮勝.計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J].中國大學(xué)教學(xué),2011,(1):7-11.
[4]王曉勇,肖四友,張文祥.基于能力培養(yǎng)的C語言項(xiàng)目化訓(xùn)練教學(xué)模式初探[J].計(jì)算機(jī)教育,2009,(10):60-62.
[5]朱昌平,劉銀恩,高遠(yuǎn),等.通信電子線路實(shí)驗(yàn)課程教學(xué)的“五環(huán)”過程管理辦法[J].實(shí)驗(yàn)室研究與探索,2005,24(8):11-13.
(責(zé)任編輯:王意琴)