曹文平
摘 要: 為提高大學(xué)程序設(shè)計(jì)基礎(chǔ)的教學(xué)質(zhì)量,提出基于專題的教學(xué)方法。專題式教學(xué)方法首先培養(yǎng)學(xué)生的程序設(shè)計(jì)思維方法,以此為基礎(chǔ)進(jìn)行后續(xù)的語(yǔ)法及算法的教學(xué),使學(xué)生能在學(xué)習(xí)之初遠(yuǎn)離繁瑣的語(yǔ)法,掌握正確的計(jì)算思維方法。專題包括計(jì)算機(jī)工作原理、流程圖、基本語(yǔ)法、基本算法、模塊化編程等。該教學(xué)方法在實(shí)踐中取得了較好的效果。
關(guān)鍵詞: 程序設(shè)計(jì); 專題; 教學(xué); 計(jì)算思維
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)11-72-02
Teaching of program design based on theme
Cao Wenping
(Hubei university of arts and science, Xiangyang, HuBei 441053, China)
Abstract: To improve the quality of teaching of programming design basis, the teaching of programming based on theme is proposed. Teaching based on theme will cultivate thinking methods of students, with syntax and algorithm of teaching, which enable the students to stay away from the tedious grammar and master the correct way of computational thinking in the beginning of the study. The theme includes working principle of computer, flow chart, basic grammar, basic algorithm, modular programming, etc. The teaching method achieved good results in practice.
Key words: programming; theme; teaching; computational thinking
0 引言
針對(duì)高校程序設(shè)計(jì)基礎(chǔ)課程普遍存在學(xué)生難以掌握的情況,許多文獻(xiàn)提出了很多教學(xué)方法。文獻(xiàn)[1]闡述了計(jì)算思維方法在教學(xué)中的作用,并提出了在實(shí)踐中如何培養(yǎng)學(xué)生計(jì)算思維的方式;文獻(xiàn)[2]提出了從建立學(xué)生的興趣入手,通過(guò)興趣的培養(yǎng)來(lái)提高學(xué)生的學(xué)習(xí)效果;文獻(xiàn)[3]指出了教材在教學(xué)中的地位及作用。這些思想或方法在教學(xué)中都能起到重要的作用,但如果學(xué)生沒(méi)有思維方法作為基礎(chǔ),則興趣或教材也就無(wú)從談起。思維方法的培養(yǎng),應(yīng)該無(wú)人質(zhì)疑它的重要性,但實(shí)踐中卻收效甚微。究其原因,主要是把思維方法培養(yǎng)和語(yǔ)法教學(xué)合二為一,造成學(xué)生疲于應(yīng)付語(yǔ)法的繁瑣而無(wú)暇顧及思維方法的訓(xùn)練。而思維方法的訓(xùn)練由于要改變?cè)械乃季S方式,所以是該課程教學(xué)中的難點(diǎn)。本文提出以專題教學(xué)的方式將思維方法培養(yǎng)和語(yǔ)法教學(xué)分開,在實(shí)踐中取得了較好的效果。
1 專題教學(xué)
目前一般性的教學(xué)方法,學(xué)生會(huì)在學(xué)習(xí)的過(guò)程中出現(xiàn)這樣的情況:課堂上都能聽懂,課后無(wú)從下手。實(shí)際是學(xué)生沒(méi)有掌握正確的思維方式,無(wú)法站在計(jì)算機(jī)的角度來(lái)思考問(wèn)題。專題教學(xué)先從訓(xùn)練學(xué)生的思維方式入手,完成學(xué)生的思維方式轉(zhuǎn)變,在此基礎(chǔ)上進(jìn)行語(yǔ)法及算法的教學(xué)。整個(gè)教學(xué)包括六個(gè)專題:計(jì)算機(jī)工作原理、流程圖、基本語(yǔ)法、基本算法、模塊化編程、其他。思維方法的訓(xùn)練主要在前兩個(gè)專題中完成。
1.1 計(jì)算機(jī)工作原理專題
要訓(xùn)練程序設(shè)計(jì)思維方法,就必須站在計(jì)算機(jī)的角度思考問(wèn)題,必須了解計(jì)算機(jī)的運(yùn)行過(guò)程。這一部分不需要深入講解,特別是對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生來(lái)說(shuō),只需要知道計(jì)算機(jī)的運(yùn)算過(guò)程即可。專題中重點(diǎn)講解內(nèi)存及其和Cpu的關(guān)系,使得學(xué)生理解數(shù)據(jù)在計(jì)算機(jī)中的流動(dòng)過(guò)程。
這是讓學(xué)生將抽象的計(jì)算機(jī)思維具體化的過(guò)程,將計(jì)算機(jī)解題過(guò)程和現(xiàn)實(shí)生活結(jié)合起來(lái)的過(guò)程,使得學(xué)生在設(shè)計(jì)程序的過(guò)程中,自然而然地將問(wèn)題轉(zhuǎn)化為可計(jì)算問(wèn)題,同時(shí)也成為后續(xù)專題的基礎(chǔ)。
1.2 流程圖專題
流程圖專題是學(xué)生完成計(jì)算思維基礎(chǔ)的重要一環(huán)。該專題主要教授學(xué)生對(duì)一個(gè)具體的問(wèn)題的完整計(jì)算機(jī)解決方法。
在一般的教學(xué)方法中,流程圖僅僅被認(rèn)為是描述算法的一種工具,所以基本不被重視,特別是非計(jì)算機(jī)專業(yè)學(xué)生,可能根本不學(xué)。實(shí)際中,學(xué)生很少能用流程圖來(lái)描述自己的算法,一方面是因?yàn)閱?wèn)題比較簡(jiǎn)單,另一方面是學(xué)生無(wú)法用完整的計(jì)算思維來(lái)解決問(wèn)題,所以反映出來(lái)的是學(xué)生的思維方式有問(wèn)題。
該專題采用流程圖作為工具,迫使學(xué)生對(duì)一個(gè)問(wèn)題有一個(gè)完整的解決方案,從而養(yǎng)成正確的思維習(xí)慣。專題中需要解決的問(wèn)題有以下幾點(diǎn)。
⑴ 偽代碼編寫。由于學(xué)生沒(méi)有正式接觸編程,所以需要讓學(xué)生理解偽代碼的作用只是簡(jiǎn)化描述。這時(shí)的偽代碼可以忽略語(yǔ)法中的細(xì)微部分,例如不需要定義變量的類型。可以引入語(yǔ)法中容易理解的部分,例如數(shù)組的用法,這樣可以很好地和后續(xù)部分結(jié)合起來(lái)。
⑵ 結(jié)構(gòu)化設(shè)計(jì)。這是至關(guān)重要的問(wèn)題,也是后續(xù)程序設(shè)計(jì)的難點(diǎn)問(wèn)題。需要讓學(xué)生完全理解選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),這里的理解不是指概念的理解,而是細(xì)微處的完全理解。對(duì)這兩種結(jié)構(gòu)來(lái)說(shuō),需要把握結(jié)構(gòu)的進(jìn)點(diǎn)和出點(diǎn),以及這兩點(diǎn)的變量狀態(tài),只是循環(huán)結(jié)構(gòu)需要注意的是每次循環(huán)的進(jìn)出點(diǎn)的變量狀態(tài)。
⑶ 算法驗(yàn)證。由于算法沒(méi)有具體的程序,無(wú)法運(yùn)行,所以算法的驗(yàn)證需要人工進(jìn)行。可以根據(jù)計(jì)算機(jī)的運(yùn)行原理,人工進(jìn)行計(jì)算,完成驗(yàn)證。這一過(guò)程也是對(duì)學(xué)生計(jì)算思維的一個(gè)具體化過(guò)程,加深學(xué)生對(duì)計(jì)算機(jī)解決問(wèn)題方式的理解,同時(shí)也為后續(xù)的程序調(diào)試打下了基礎(chǔ)。
上述三個(gè)問(wèn)題如果解決得較好,則有助于學(xué)生的思維方式訓(xùn)練,有了基本的思維方法就等于拿到了進(jìn)入程序設(shè)計(jì)的敲門磚。學(xué)生若能應(yīng)用這些思維方法,在后續(xù)的學(xué)習(xí)中就能如魚得水,逐步完成整個(gè)思維方式的轉(zhuǎn)變。
1.3 基本語(yǔ)法專題
這個(gè)基本語(yǔ)法專題正式進(jìn)入程序設(shè)計(jì)實(shí)際操作階段。因?yàn)橛辛饲懊娴乃季S方法訓(xùn)練,這一部分變成了非常簡(jiǎn)單的內(nèi)容。而在一般的教學(xué)中,恰恰這個(gè)應(yīng)該是最容易的部分,卻花費(fèi)了學(xué)生大量的時(shí)間,使得學(xué)生僅僅局限于語(yǔ)法的細(xì)節(jié),而偏離了編程思維訓(xùn)練的主要內(nèi)容。
盡管如此,語(yǔ)法仍然是程序的載體,需要熟練地掌握。可以將語(yǔ)法專題分為多個(gè)層次來(lái)講解。第一個(gè)層次是基礎(chǔ),主要包括運(yùn)算符和表達(dá)式,特別是c語(yǔ)言,可以說(shuō)運(yùn)算符和表達(dá)式構(gòu)成了整個(gè)C語(yǔ)言編程的基礎(chǔ),需要學(xué)生深刻理解運(yùn)算符和表達(dá)式的深層次含義。第二個(gè)層次是結(jié)構(gòu),前面的流程圖訓(xùn)練有了結(jié)構(gòu)的基本知識(shí),這一部分需要加強(qiáng)理解,不管是讀還是寫程序,首先就是劃分程序的結(jié)構(gòu)改變以前大部分學(xué)生都沒(méi)有認(rèn)識(shí)到結(jié)構(gòu)的重要性的現(xiàn)象。第三個(gè)層次是運(yùn)算符和表達(dá)式的一些編程技巧,這也可以提高學(xué)生的學(xué)習(xí)興趣,讓學(xué)生感覺到自己的創(chuàng)造性,體會(huì)到編程也是一種很快樂(lè)的事情。
1.4 基本算法專題
在掌握了基本的程序設(shè)計(jì)思維方式和基本的語(yǔ)法后,一些常用的算法是提高編程層次的必要知識(shí)。這一部分內(nèi)容不能太難,否則有可能打擊學(xué)生的自信心。對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生,不需要掌握太難的算法;對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生,后續(xù)也還會(huì)有數(shù)據(jù)結(jié)構(gòu)的課程。
1.5 模塊化編程專題
這一部分僅僅是對(duì)前面知識(shí)的一個(gè)拆解,將一個(gè)較大的程序分解為幾個(gè)相對(duì)完整的小部分,所以本質(zhì)上沒(méi)有什么新知識(shí)。主要講授特定語(yǔ)言對(duì)于拆解的一些常用做法和語(yǔ)法細(xì)節(jié)。對(duì)于C語(yǔ)言來(lái)說(shuō),就是函數(shù)原型的設(shè)計(jì)問(wèn)題。這一部分需要訓(xùn)練學(xué)生的整體設(shè)計(jì)方法,模塊的劃分方法及考慮因素,同時(shí)也為后續(xù)的軟件工程課程提供必要的實(shí)踐基礎(chǔ)。
1.6 其他專題
前面的專題基本完成了程序設(shè)計(jì)的主要方面,本專題講授與程序設(shè)計(jì)相關(guān)的一些內(nèi)容。以C語(yǔ)言為例,包括:頭文件概念、結(jié)構(gòu)體概念、文件概念等一些擴(kuò)充內(nèi)容。
2 實(shí)踐效果
實(shí)際應(yīng)用中,本文方法相對(duì)一般的教學(xué)方法是一個(gè)很大的轉(zhuǎn)變,主要體現(xiàn)在最初的教學(xué)上。學(xué)生的初始學(xué)習(xí)很容易迷失方向,不知如何進(jìn)入狀態(tài),需要老師有較強(qiáng)的掌控能力,讓學(xué)生能夠領(lǐng)會(huì)計(jì)算思維和編程本質(zhì)之間的聯(lián)系,同時(shí)需要進(jìn)行大量的課外練習(xí),完成第一階段即思維方式的轉(zhuǎn)變階段,這一階段是最重要的,同時(shí)也是最難的部分。通過(guò)了這一階段,可以說(shuō)程序設(shè)計(jì)基礎(chǔ)就完成了大部分內(nèi)容,后續(xù)內(nèi)容的教與學(xué)都會(huì)非常順利。
3 結(jié)束語(yǔ)
實(shí)踐中,本文方法和一般教學(xué)方法相比較來(lái)看,學(xué)生的反映普遍較好,對(duì)編程知識(shí)的理解明顯較為深刻,成績(jī)有較大提高,所以該方法在實(shí)際教學(xué)中具有可行性。本教學(xué)方法仍有許多需要改進(jìn)的地方,例如專題的劃分是否合理,老師的能力是否能支撐該方法,課外練習(xí)的設(shè)計(jì)是否合理等等。后續(xù)工作應(yīng)該對(duì)基于專題的教學(xué)方法進(jìn)行更加系統(tǒng)的研究,形成合理完整的教學(xué)體系結(jié)構(gòu)。
參考文獻(xiàn):
[1] 張昱,李封,高克寧,李金雙.程序設(shè)計(jì)基礎(chǔ)課程計(jì)算思維方法研究與
實(shí)踐[C].第三屆教學(xué)管理與課程建設(shè)學(xué)術(shù)會(huì)議論文集,2012.8.
[2] 欒好利,楊政.基于興趣的“程序設(shè)計(jì)基礎(chǔ)”課程教學(xué)策略的研究與實(shí)
踐[J].計(jì)算機(jī)教育,2008.2.
[3] 秦玉平,馬靖善.“C語(yǔ)言程序設(shè)計(jì)”課程教材建設(shè)與教學(xué)方法研究[J].
計(jì)算機(jī)教育,2010.4.