

摘要:本文針對C語言程序設計課程教學中難點多、語法知識點多、學生學習興趣不高等問題,提出將加涅的教學設計原理應用于該課程的教學中,克服傳統“填鴨”式教學模式的弊端,充分發揮學生的主觀能動性。實踐表明將加涅提出的教學設計原理應用于C語言程序設計課程的教學中,教學效果良好。
關鍵詞:教學設計原理;教學目標;九步教學事件;教學測量與評估
C語言程序設計課程是很多高校理工科非計算機專業本科生必修的計算機基礎課,C語言程序設計課程本身對教學要求比較高,學生不僅僅學習C語言程序設計的語法知識,更重要的是掌握程序設計方法。在以往的教學實踐中,我們發現很多學生認為C語言程序設計課程是一門比較難的課程,特別對一些大學新生,C語言程序設計的先修課程為計算機基礎,學生普遍認為跨度大,有畏難情緒,教師由于課時緊、內容多,而過多關注C語言語法知識的講解,算法講得比較少,且知識點比較分散,學生對知識的把握沒有一個整體的概念。如何提高教學質量,如何能使學生盡快入門,激發學生的興趣,如何培養學生的計算機邏輯思維能力,如何提高課堂效率,這都是教學中要思考的問題。在C語言程序設計課程教學中充分考慮大學生的學習心理,引入先進實用的教學設計思想是非常必要的。我們將美國著名教育心理學家加涅提出的教學設計原理應用于該課程的教學中,取得了良好的效果。
1教學設計理論
加涅是美國著名的教育心理學家,他的《教學設計原理》代表了20世紀末科學心理學與學校教育相結合的最高成就。他提出的核心思想是“為學習設計教學”[1],教是為了學,他認為教學應考慮影響學習的全部因素,即學習的發生要同時依賴內部條件和外部條件,教學就是要通過安排適當的外部條件來影響和促進學習者的內部心理過程,使之達到理想的學習效果。他提出教學設計的基本任務是闡明教學目標、教學過程、教學方法和教學結果的測量與評價。
教學目標。把教學目標分為五種學習結果:言語信息、智慧技能、認知策略、動作技能和態度,這五種學習結果分為認知、情感和動作三個領域。教學目標應是面向學生預期的學習結果。
教學過程。加涅將教學階段分為九個教學事件:引起注意、告知目標、提示回憶先前的知識,呈現教材、提供學習指導、引出作業、提供反饋、評估作業、促進保持和遷移。
教學方法包含教材呈現方式、師生的相互作用方式、教學媒體的選擇運用。
教學結果的測量和評價。教學是一種目標導向的活動,要求教師在實施教學活動前,對學習的預期結果做出陳述,教師在這個明確目標指導下,安排教學順序,組織師生的雙方活動,根據教學目標對學生的學習進行測量和評估,如果評估的結果表明教學目標已經達到,則教學進入下一個循環。
這樣的教學設計原理在教學活動中成為既能發揮教師主導作用,又能充分體現學生認知主體的教學模式。在此模式下,教師有時處于中心地位,起主導作用,在此期間,學生有時也處于傳遞-接受的學習狀態,但更多的時候是在教師的幫助下進行主動思考、主動探索和主動發現。
2C語言程序設計課程教學設計研究
依照加涅的教學設計原理,根據C語言程序設計課程的特點,在教學實踐中對C語言程序設計課程進行系統的教學設計,主要包括設計教學目標,教學過程的組織,教學方法的探討,以及教學結果的測量與評估。
2.1學生特征分析
學生是學習的主體,只有了解學生,教師才能制定出符合學生實際能力的教學目標,學生特征信息的來源主要是一些問卷調查,它主要了解學生的編程基礎和學習程序設計的愿望。調查分析顯示,大約10%的學生在高中學過編程,50%左右接觸過編程,40%左右從沒有接觸過編程,C語言程序設計的先修計算機課程為計算機基礎,大部分同學對編程比較感興趣。我校很多理工科專業的學生在工作中必須使用程序設計語言這個工具,這類學生學好程序設計語言的愿望非常強烈,而一些專業使用程序設計語言較少,學生的學習熱情不高。
2.2確定教學目標
教學目標作為教學活動中學習者要預期達到的學習效果,對教學活動起著導向、激勵、調節、檢測和評價的作用,這有利于教學目的明確化、應用能力培養的具體化,是教學活動的出發點和歸宿,其行為主體是學生,而不是教師。教學目標的陳述要從學生的角度出發。我們把C語言程序設計課程的教學目標分為“認知、理解、應用,綜合”四級水平,每級水平又劃分為若干子類,并為每一級水平的教學目標配置適當數量的有代表性的測試題。“認知”水平主要解決對C語言知識點的知與不知的問題,“理解”水平是指掌握概念、算法等知識,能用自己的算法語言和邏輯思想敘述和解釋概念、算法等知識?!皯谩彼绞侵冈诶斫庵R的基礎上,通過練習,形成基本技能,能夠用它去解決一些問題,主要考查學生將所學的C語言知識點和算法應用于實踐中?!熬C合”水平是指能夠綜合運用知識解決問題,并達到熟練、靈活的程度,從而形成能力。教師首先研究教學大綱,然后再分析教材內容,在對學生的學習結果有了比較清晰的概念以后,對C語言程序設計課程的每個知識點列出學習水平的具體要求。
2.3教學內容的組織
為了達到上述教學目標,教師必須對傳統的課程內容進行改進,傳統的教材是以高級語言的自身體系的脈絡來展開的,過于注重語句語法的細節,沒有把編程解題思路放在主體地位[2],如何分析問題和解決問題的思路講得少,部分學生學完后,往往還停留在紙上談兵的階段,遇到本專業領域的問題,也無法用學過的知識來解決實際問題,但教學內容的改進也要考慮學生的接受能力,非計算機專業的理工科學生不能按計算機專業的學生的要求來培養。
2.3.1理論教學內容的改進
改進的方法是對教學內容做一些精簡和添加,精簡的內容主要是一些過多過細的語法點,如輸入輸出函數中對格式控制符的介紹很詳細,可精簡一些不常用的格式控制符的講解,留待學生在用到時再通過查資料去獲得。增加一些算法實例,特別是增加一個或幾個完整的項目設計的實例和對實例的分析,使學生對C語言的知識的運用有一個完整的知識體系,另外對重要知識點要精講多練[3]。
2.3.2實踐教學內容的改進
實踐教學的改進除了常規的編程訓練外,還要在實踐期間分出兩個星期,要求學生分小組完成一個小型項目的開發,開展討論教學。學生在老師的指導下完成項目的分析、設計、實現,每一組都要交一個研究報告,老師對小組的實習進行考評。
2.4教學方法探討
2.4.1分階段組織教學,教學方法多樣
我們在教學實踐中發現,程序設計的教學要循序漸進,該課程有自身的特點,學生聽不會,也看不會,只能練會[4],在教學中我們按培養學生的閱讀程序能力,再培養學生的編寫簡單程序的能力,到開發小項目能力三個階段來組織教學。
第一階段培養學生的閱讀程序能力。讀程序能力的訓練非常必要,它是學好程序設計的最好方法,與寫作文類似,要寫好作文,必須要有大量的閱讀訓練,程序設計的目的是根據實踐應用的需求,用計算機編程來解決實際問題,但編程不可能一蹴而就,必須循序漸進[5],首先要進行一定量的閱讀程序訓練,特別對一些知識難點,如循環、數組、指針、函數、結構體等重要知識點。在訓練中,學生不僅學習了程序設計語言的語法,更重要的是學會了編程者將數據的描述和算法結合起來的方法,學習了別人的經驗和方法。在此階段,教師主要是引導學生入門,教會學生分析問題的方法,學生能模擬程序在計算機內運行的狀態,如學習循環時,教師請學生關注循環時變量的變化情況,教師可以先講解循環前幾次變量的值的變化,然后請學生講述循環后幾次變量的變化情況,這樣學生能真正理解循環的執行過程。
第二階段是編寫一些簡單程序的訓練,閱讀的程序多了,學生模仿能力很強,他們就能編寫一些簡單程序在計算機上練習,如果實習得出正確結果,學生就有成就感,對程序設計會越來越感興趣,這是學生學好程序設計的條件,而興趣是最好的老師。在這個階段,教師要激發學生學習程序設計的興趣,可安排講解一些經典的算法,如查找(順序查找、二分查找)、排序(冒泡法、選擇法、插入法),歸并算法、經典的數值算法等,并精選一些有趣的習題,如猴子分桃、雞兔同籠、打印圖形、數列求和等給學生作為上機題,使學生的編程能力在潛移默化中得到了提高。
第三階段是培養學生開發小項目的能力,上述兩個階段一般按高級語言的脈絡來展開,學生只有一些分散的知識點,還不能把C語言的知識綜合起來使用,所以進行一個課程設計很有必要,在這個階段,教師可先用一個實例引導學生分析,進行數據設計和算法的設計,再給出具體的程序代碼讓學生學習,并了解如何在這個實例中將以前所學的數組、函數、指針、結構體、文件和各種流程控制語句等結合起來使用。然后,教師選擇一些比較貼近學生生活的小項目,如學生成績管理系統、圖書管理系統,通信錄等 ,學生以小組為單位,學生獨立選題、分析、設計、實現,要求學生應用軟件工程的思想和方法來開發這些項目,并寫出研究報告。研究過程以學生為主體,教師為學生答疑解惑。在這些項目的實施過程中鞏固和提高前面的知識,并將編程的技能技巧滲透其中。
經過這樣的訓練,學生不但學會了從簡單到復雜的程序編寫,也養成了良好的編程風格,為以后的學習和研究打下扎實的基礎[6]。
2.4.2按九步教學事件組織課堂教學,提高效率
課堂教學的目的在于培養學生分析問題、解決問題的能力,教是為了學,教師應在了解學生學習心理的基礎上組織教學,而構成教學的每一個特定事件,其作用在于幫助或支持學習者對所學內容的獲得和保持,使學習者取得適度的進步。各種教學事件都應與學生的內部事件活動有一定的明確關系。在很多情況下,教學事件必須由教學設計者做出審慎的安排,加涅提出了九步教學事件[1], 我們在教學中應用他的理論,取得了較好的教學效果。
以循環嵌套知識點為例 ,循環嵌套是學生普遍認為的一個難點,循環嵌套沒有學好,將影響后續二維數組、排序算法等知識點的學習,所以,循環嵌套是循環這一章的重點和難點。
接
實踐證明,這樣的教學設計充分考慮了學生的學習心理,充分發揮了學生的學習主動性,教學效果良好,便于學生掌握知識難點。
2.5教學結果的測量和評估
我校C 語言程序設計課程教學結果的測量分筆試和上機考試兩部分,筆試部分我校已連續幾年實現統一出卷、統一考試的方法??荚噧热輳念}庫中抽取,試卷命題由課題組指定老師出卷,試卷統一批改,試卷批改后教師進行試卷分析和評估,幾年實踐下來,非計算機專業學生的C語言編程能力有了較大的提高,很多同學通過了“二級C語言程序設計”計算機等級考試。
在期末的上機考試中,利用開發的實驗教學平臺進行上機考試,隨機從試題庫中抽取試題,然后由系統自動評判。由于考試題目與平時訓練的題目類似,平時認真的同學可取得好成績,抄襲別人程序的同學上機考試不能通過。這樣可以促使學生在平時實驗中獨立分析問題、解答問題。
3結語
教學設計是為了實現一定的教學目標,包括對學生學習方法和學習能力的培養、對學生學習興趣的培養、對學生合作精神的培養以及使學生懂得學以致用。通過 C語言程序設計課程的教學實踐,在理論教學環節中學生分析問題和解決問題的能力得到了進一步提高。在實踐教學環節,學生的學習興趣有了很大提高,學生的動手能力有了明顯的進步。在加涅的教學設計理論指導下,教師的教學設計水平也有了較大提高。
參考文獻:
[1] 加涅 R M, 布里格斯 L J,韋杰 W W,等.教學設計原理[M].皮連生,龐維國,等譯.上海:華東師范大學出版社,1999.
[2] 吳文虎. 精心鑄精品 理念須先行-談“程序設計基礎”課程改革[J]. 計算機教育,2008(13):46-49.
[3] 羅建軍,馮博琴,劉路放. 非計算機專業程序設計語言的教學改革[J]. 高等工程教育研究,2002(4):82-84.
[4] 吳文虎. 計算機程序設計基礎課程改革[J]. 中國大學教學,2004(2):13-14.
[5] 孫克泉. 計算機語言類課程的教學探討[J]. 計算機教育,2008(16):103-104.
[6] 何欽銘,顏暉.“C 程序設計基礎及實驗”國家精品課程的建設經驗[J]. 計算機教育,2008(19):28-31.
Instructional Design and Application in C Programming Language Teaching
HUANG Qun
(Institute of Computer and software, Nanjing University of Information Science Technology, Nanjing 210044, China)
Abstract: This article discusses the application of the Gagne’s principles of instructional design in C programming language teaching in order to overcome the drawbacks of the traditional teaching mode which merely focuses on grammar knowledge and ignores the student’s interest cultivation. Practice proves the application of the principles is rather effective.
Key words: principles of instructional design;instructional goal;nine events of instruction; instructional measure and evaluation
(編輯:郭小明)