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