摘 要:文章闡述了國內高校Visual C++程序設計課程傳統教學中存在的問題,根據Visual C++程序設計課程的特點,并結合自身的教學實踐,將啟發式理念引入到教學環節中,提出一種基于啟發式的程序設計教學改革方案,在教學實踐中取得較好效果。
關鍵詞:啟發式教學;Visual C++程序設計;教學方法;教學改革
1 背景
Visual C++(簡稱VC++)程序設計是國內許多高校都開設的計算機專業學生的必修課程,也是理工類非計算機專業本科生開設的公共基礎必修課程。江蘇科技大學開設本門課程作為理工類非計算機專業大一學生的計算機公共基礎課,其目的是使學生掌握一門高級程序設計語言,了解面向對象程序設計的基本概念與方法,初步具有分析和解決問題的能力,進而學會利用計算機解決一般應用問題,為后續課程的學習和研究打下夯實基礎。然而,隨著當代信息社會的發展,如何培養具有信息素養與能力滿足社會需求的大學生,對傳統的程序設計的教學模式提出了新挑戰,改革VC++的教學方法破在眉睫。
2 研究現狀
目前高校的VC++程序設計教學中存在著許多不可忽視的問題,亟需加以認真研究和探索,尋求行之有效的教學改革方案。
2.1 教學模式單一
傳統的教學以課本為主,注重語句、語法的講解,對于問題的求解過程一筆帶過,缺乏以算法為核心的教學過程,學生只知其然而不知其所以然,容易陷入語法細節的泥潭,又容易產生畏難心理,失去學習興趣,只能通過死記硬背來應付考試[1-2]。多媒體技術
的發展使“計算機+大屏幕”代替了傳統“黑板+粉筆”教學模式[3],但多媒體教學并沒有帶來實質性的改變,只是把教學內容從黑板搬到PPT,省去了板書的時間,加快的講課進度。沒有板書,學習內容隨著PPT一張張地被翻過,沒有留下任何痕跡,學生無法做筆記,也來不及思考,只是一味的忙著記憶,不利于學生自主思維能力的培養[4]。
2.2 程序代碼枯燥難懂,學生不感興趣
VC++程序設計課程的學習比較枯燥、難懂,知識點分散,各章節內容的連貫性不強,重點難點不突出,學生在學習過程中不能有效把握課程的脈絡,無法建立起課程的整體架構,很難理解和把握課程核心內容,導致學生學習熱情不高[5]。教學對象面向的是大學一年級學生,他們對計算機編程一無所知,更加深了學習的難度,要在有限的學時內使其掌握VC++編程方法,具有一定的編程能力,更是難上加難,迫切需要改革教學方法,提高學生的學習興趣。
2.3 上機實踐環節薄弱,學生動手編程能力不強
目前高校多采用先理論后實踐的教學模式,即多媒體教室教學與機房上機實踐交替進行,這種方法的缺陷是實踐和理論的教學過程是分別在不同的時間和空間完成,學生上機時早忘記了理論內容,教學效果較差[6]。在編程過程中,學生只是充當了輸入程序代碼的工具,根本不理解算法的核心思想和程序實現
作者簡介:孫娜,女,助教,研究方向為數據挖掘與語義網。
過程,不利于學生自主編程能力及創新能力的培養。遇到程序調試出錯時,又出現浮躁情緒,不愿意獨立思考和分析,急切找老師尋求幫助,沒有掌握獨立調試錯誤的方法。
2.4 教材的內容過于陳舊,實用性不強
計算機技術發展非常快,內容更新也快,教學計劃往往落后于主流技術。VC++程序設計的同類教材有很多,普遍更新比較慢,大學生正在學習的可能是已過時陳舊的內容,無法跟上時代主流的步伐。如實驗室中安裝辦公軟件Office2007,主流的辦公軟件已出現Office2010版甚至是Office2011版本,計算機課程的發展特點決定了計算機的教學與傳統學科略有不同,應更注重學生自主學習能力的培養,要“授之以漁”而不是“授之以魚”,掌握學習能力或方法遠遠比學會知識本身更重要,具有自主學習能力,就可以用已學的方法或技術來獲取未知的新知識解決遇到的新問題。
2.5 學生學習評價體系不完善[7]
1) 考核方式單一,通常以閉卷的形式進行考核,考試命題僅能反映學生的記憶能力,無法反映學生分析和解決問題的綜合能力。2)過于注重終結性的評價,通常以期末考試成績作為總評成績,或期末考試成績的在總評成績中占比重過大,通常考核方法是平時成績20%,期末80%,而實驗成績、平時作業、課堂表現、小測驗等形式的考核結果很難與總評成績掛鉤,不能對學生的學習狀態做客觀的評價,忽視了學生的學習實踐過程。
3 基于啟發式的VC++程序設計教學改革方案
針對VC++程序設計教學中存在的缺陷問題,積極尋求切實可行的教學改革方案,教學過程最好在配有幻燈設備的機房完成,實現理論與上機實踐的同步,同時將啟發式教學理念引入到程序設計的教學環節,積極引導學生的求知欲,形成以學生自主學習為主體,教師做適當引導的良好互動氛圍,培養了學生自主學習能力和分析解決問題能力。對學生成績考核方式進行改革,實現對學生綜合素質全面的考評。
3.1 啟發式教學內涵
啟發一詞最早源于論語中的“不憤不啟,不悱不發”,是孔子論述啟發式教學的重要名言。啟發式教學(Heuristic Method),是指教師根據教學目標,遵循教學規律,在教學過程中依據學習過程的客觀規律,通過引導、指導、開導、啟示、激發學生的學習興趣,使學生主動地、自覺地、積極地學習和思考,并主動實踐的一種教學方法[8]。啟發式教學法不是指某種具體的教學方法,而是一種指導思想和原則,有問題啟發、對比啟發,發散啟發,圖示啟發等多種形式[9]。其中,問題啟發是一種最常用的教學方法,它從具體問題出發,通過巧設懸念,激發學生興趣,引導學生積極思考,讓學生在一種成就感的情景下尋求解題方法,從而達到教學任務的目的。
3.2 問題啟發式教學實現過程
在對學生進行教學時,將問題啟發的理念引入教學環節,采用提出問題→分析問題→解決問題的啟發式思維過程,每個環節通過巧設懸念,引導學生積極思考,尋找解決方法。下面以一道編程題為例,說明具體實現過程。
3.2.1 問題的提出
給定一組數據,初始狀態為3,7,4,1,8,0,5,9,7,1,如何實現其目標狀態0,1,3,4,5,7,8,9,1,7?
3.2.2 分析問題
首先讓學生認真審題,對比分析初始數據與結果數據的差別,即初始狀態的數據是無序的,而目標狀態的數據是有序的,按照從小到大順序排列,且末兩位的數據1和7分別與序列中第2和6個數據相同。由此得解題思路:該題意為將初始數據按從小到大順序排序,如果有重復數據,就將其放到整個排序結果的后面。再次提出子問題1:這些數據該怎么表示呢?部分同學會想到用數組,答案正確,這些數據都是整型的,存放多個相同數據類型的數據用數組是很好的選擇。子問題2:需要用到哪些知識點來解決該問題呢?學生能想到的是數組元素排序。教師引導學生思考,從小到大排序后的結果是0,1,1,3,4,5,7,7,8,9,那如何將相同數據1和7放到數組的末尾呢?答案是移動數組元素。本題考查的知識點是數組元素排序和數組元素移動。給學生10分鐘思考和實踐的時間。然后由教師分別講解排序算法和數組元素依次向前移動一位的算法,讓學生理解每個算法的核心內容。給學生10~20分鐘時間來實現該題編程。
3.2.3 解決問題
根據學生的編程情況,找出學生存在的共性問題,給予糾正和解決,教師通過凌波多媒體演示,學生跟著老師的思路,一起完成編程過程,教師總結該解題過程需注意的細節問題。最后學生自己獨立完成編程任務。該題的部分程序代碼如下:
void SelectSort(int