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