張靜華
文章編號:1672-5913(2009)08-0072-03
摘要:本文以“C++程序設計”課程為對象,探討了大學編程語言課的實例教學方法,進行了C++程序?qū)嵗O計,并提出構(gòu)建一個基于Web的程序?qū)嵗詫W系統(tǒng),彌補了課堂教學實例數(shù)量不足的問題,同時在系統(tǒng)中提供了自適應實例學習控制策略作為學生實例學習的指導。
關鍵詞:實例教學;實例設計;自適應;實例學習策略
中圖分類號:G642
文獻標識碼:B
1引言
在編程語言課的教學中,程序?qū)嵗哂蟹浅V匾囊饬x。好的實例設計有助于學生對內(nèi)容的理解;大量實例的累積可以達到量變到質(zhì)變的作用,使學生從看懂到領悟。在教學過程中,實例的選擇和對學生實例學習的指導都將對編程語言課的學習有很大幫助。本文以“C++程序設計”課程為例探討了實例教學方法。首先確定基于實例教學的總的思想和方法,然后重點探討實例的設計和一個基于Web的自適應實例自學系統(tǒng)。
2基于實例的教學
C++課程基于實例的教學從兩方面入手。其一為教學中恰當?shù)膶嵗x擇運用;其二為課余時大量的實例提供與自學指導。具體包括:
(1) 實例運用上注意實例的連貫性,若知識點相關,則采用同一系列實例進行擴展,即題目內(nèi)容相近,但針對不同知識點做局部改變擴展,使能快速理解實例,并專注于教學點。
(2) 適當采用實例的歸納、對比、類比等方法。如窮舉法,通過多種實例類比,說明什么問題可以用窮舉法解決;又如面向?qū)ο蟪绦蚣軜?gòu)與程序設計思想,通過對同一問題進行結(jié)構(gòu)化設計和面向?qū)ο笤O計的對比。
(3) 伴隨教學進度分解一個復雜的綜合實例,逐步講解程序設計方法思想。采用問題引導的方法,由綜合實例的某個步驟提出問題,引出新知識點,改進程序,層次推進至最終完成問題。
(4) 每講完一次課程后,為學生總結(jié)本次課程的語法知識點和程序設計思想。提示下堂課將會涉及的前序知識點,以及與下堂課有直接關系的前序?qū)嵗?,并提出預備問題。布置與課堂實例的算法相似的程序作業(yè),學生能通過知識的直接遷移來完成作業(yè)。
(5) 要求學生在課余根據(jù)相應知識點通過實例自學系統(tǒng)學習并練習相應實例來達到進一步的練習和提高,系統(tǒng)會根據(jù)學生在實例庫中的學習情況進行相應的控制指導。
3C++程序?qū)嵗O計
程序?qū)嵗脑O計是實例教學的重點,通過對領域知識點的分析總結(jié),有針對性的進行實例設計。同時實例之間并不是孤立的,有意識的設計了有聯(lián)系的各種實例組,形成系統(tǒng)的全面的實例庫。
3.1領域知識點總結(jié)
對于“C++程序設計”課程,領域知識點涉及兩個方面,其一為C++語法理解與應用,其二為如何應用程序設計思想解決實際問題。
首先從語法角度開始,每個語法考察點都是一個領域知識點。如:各種基本數(shù)據(jù)類型的長度、文字常量表示、符號常量表示、變量定義和類型轉(zhuǎn)換等。
從程序設計角度講,程序設計相關理論方法技巧都是一個領域知識點。程序設計思想涉及遞歸、迭代、窮舉和分治等。程序設計方法與技巧包括數(shù)據(jù)設計、算法設計和程序架構(gòu)設計。數(shù)據(jù)設計包括簡單數(shù)據(jù)設計、數(shù)組數(shù)據(jù)結(jié)構(gòu)應用和結(jié)構(gòu)體應用等;算法設計包括分支算法、循環(huán)算法、循環(huán)嵌套和循環(huán)與條件語句的嵌套等多種程序設計技巧;程序架構(gòu)設計包括函數(shù)設計和程序架構(gòu)組織。面向?qū)ο蟪绦蛟O計思想包括類的抽取與設計(屬性設計、方法設計、構(gòu)造方法設計、訪問控制設計)、應用類屬性與類方法解決問題,應用類的聚合解決相應問題和應用類間的消息連接解決相應問題等。
3.2基于領域知識點的實例設計
將C++程序?qū)嵗譃槿齻€層次:
(1) 純語法實例:用于演示基本語法,可以沒有實際含義;
(2) 算法實例:有一定實際意義的算法思想實例,用于演示程序設計思想和方法技巧;
(3) 綜合實例:需要多個知識點的綜合設計實例,重點演示解決問題的思維方式和程序架構(gòu)。
純語法實例設計中,為每個語法知識點都設計若干相應的語法實例程序,一個實例會涉及多個語法知識點,但會有重點演示的語法知識點。將設計好的程序進行題目設計,通過總結(jié)學生作業(yè)、考試中的問題,找出相應語法容易出錯的形式,設計了相應的問題形式,如讀程序?qū)懡Y(jié)果,程序填空,錯誤辨析等。
算法實例一般都是解決實際問題的題目,針對每個程序設計方法知識點設計算法實例。每個實例涉及一個或多個重點演示的設計知識點。如雞兔同籠問題,水仙花數(shù)問題應用的是雙重循環(huán)技巧,也是窮舉設計思想。
綜合實例都是有一定意義的較復雜的實際問題,如我們設計的學生成績分析系統(tǒng),模擬停車場輔助系統(tǒng),模擬選課系統(tǒng)等。綜合實例只給出問題描述,而不是具體要求設計哪些類,哪些函數(shù),鍛煉學生對復雜問題的整體分析設計能力。每個實例都盡量將多個知識點應用進來。如學生成績分析系統(tǒng)涉及類、對象、類的組合、模板、排序算法、文件操作和運算符重載等。模擬停車場系統(tǒng)也涉及類對象、繼承、多態(tài)、類的組合、數(shù)組和搜索算法等。并且將每個綜合實例分解為若干階段,多個子問題,隨著教學進度不斷擴展引入新問題,通過不斷修改程序來解決新的問題。
3.3實例的組織
在實例設計中,每個知識點都設計若干個實例。除了針對知識點外,還根據(jù)知識點之間的相關關系,遞進關系,有意識的設計有各種聯(lián)系的實例,創(chuàng)建多種形式的實例組。如:類比實例組(題目不同,算法相同);對比實例組(題目相同,算法不同);擴展實例組(基于知識點的遞進關系,不斷擴展的系列實例)等。
4基于Web的自適應實例自學系統(tǒng)
課余時大量的實例提供與自學指導是實例教學設計的一個重點。如何能達到這個目的,我們探討了一個基于Web的實例自學系統(tǒng),根據(jù)目標知識點,教學進度,實例的難易程度,實例之間的關聯(lián),以及學生的學習情況為學生選擇實例,指導學生對實例的學習。
實例學習的指導策略為:由語法到算法,由易到難;根據(jù)學習情況優(yōu)先選擇擴展實例,若當前實例不理解則選擇類比實例,若還不理解選擇前序知識點實例,若實例理解選擇知識點的其他實例,適當選擇對比實例,達到一定程度增加難度;追蹤一個綜合實例。保證選擇的任何實例都不含未學習的知識點。
4.1創(chuàng)建程序?qū)嵗龓?/p>
實例庫不是實例的簡單集合,為了與教學順序和教學目標配合,并且在學生進行實例學時時提供相應的控制,需要設計實例庫的組織形式。
首先保存設計好的所有實例。三種程序?qū)嵗枰幚淼膬?nèi)容不同,故分別構(gòu)建語法實例表(實例編號,題目描述,題目內(nèi)容,問題講解,難度等級)、算法實例表(實例編號,題目描述,分析,程序,講解,難度等級)、綜合實例表(實例編號,題目描述,實例分解步驟)以及綜合實例步驟表(實例編號,步驟編號,問題描述,程序,講解,難度等級)。
保存總結(jié)出來的領域知識點。由語法知識點表(知識點編號,標題,語法描述)和設計方法知識點表(知識點編號,標題,算法思想描述)描述。
構(gòu)造實例與領域知識點之間的關系。每個實例都涉及一個或多個語法知識點,語法實例一般會有一個(或多個)主語法知識點,算法實例與綜合實例的分步實例會有一個(或多個)主設計知識點。建立實例與知識點之間的關系表(實例類型,實例編號,相關知識點編號,相關知識點類型,是否主知識點),標識出實例涉及的所有語法知識點,并標出語法實例的主語法知識點,和其他實例的主設計知識點。表結(jié)構(gòu)為。
建立實例之間的關系。由實例關系表(關系類型,關系編號,實例編號,備注)構(gòu)建不同的實例組。
一般教學領域知識點間有固定的前序關系。但程序?qū)嵗g卻沒有先序關系,每個實例都是獨立的。但一個實例一般會涉及多個語法知識點,雖然許多語法之間是沒有先序關系的,但教學進度卻使這些知識點有了先序關系。故實例使用的先后順序與教學順序有關。為了能正確的提供學生適宜的實例,除盡量提供一些僅涉及當前知識點的實例外,還要將每個實例涉及的知識點都詳細指出,同時構(gòu)建教學進度表,在學生自主學習過程中屏蔽沒學過內(nèi)容的相關知識點。教學進度表將相應的學習目標知識點表的知識點按教學進度標識出順序關系,可直接在教學目標相關的兩個表中增加一個字段標識順序號。
4.2學生信息庫
課程的每個學生都是系統(tǒng)允許的用戶,為每個學生提供學習狀況記錄,這里稱為學生模型。學生模型由三個表組成,分別記錄學生的能力程度、學習過程和學生當前追蹤的綜合實例及當前步驟。根據(jù)學生的學習過程情況浮動學生的能力值。學習過程記錄所學的實例編號,實例類型,實例難度等級,實例關系編號,學習狀況。學習能力程度記錄當前的能力,用一個0~100之間的數(shù)表示。
4.3自適應學習控制策略
學生學習過程中,若讓學生隨意選擇實例學習,那么眾多的實例會使學生無所適從,故系統(tǒng)設計了自適應學習控制策略,其結(jié)合教學順序,教學目標,實例難度,實例關系,并根據(jù)學生的學習狀況提供適于學生的實例建議。其控制流程如圖1所示。根據(jù)學生模型選中恰當實例,學生學習一個實例時,學習完后由學生選擇對實例的學習情況:不理解,理解,能編程。記錄學生模型,從新計算學生能力值,然后根據(jù)學生能力和學生在當前實例的學習情況,根據(jù)約定的策略推薦下個實例(屏蔽掉當前不適于學習的實例)。
圖1 自適應學習控制流程
(1) 實例選擇策略。
將學生能力分為5個等級,分別為(bad,lower,low,middle,high)。若學生能力為lower則選擇語法實例,否則進入算法實例與綜合實例;若學生能力為low,則選擇初級實例;若學生能力為middle,則選擇中級實例;若學生能力為hign,則選擇高級實例;若學生能力為bad,則回溯?;厮莘椒椴榭串斍八胁焕斫獾膶嵗?,根據(jù)實例包含的知識點,找出使用最多的知識點,選擇其教學實例,若有與本實例呈系列的實例優(yōu)先選擇。
若學生當前實例學習狀況為不理解,且能力沒降級,則選擇類比實例,若能力降級則選擇低一級難度實例。若當前學習狀態(tài)為理解,則選擇類比實例(并專注設計程序),若能力升級也可選擇高一級實例。若學習狀態(tài)為會編程,且能力沒升級,則進入其他實例,否則提供更高一級實例。
(2) 學生能力計算。
學習過程中,初次進入系統(tǒng)學習能力程度設為50,每學習一個實例,若狀況為不理解則能力程度降低,若為理解則能程度上升,若為可編程則上升幅度更大,能力程度升降分值具體如表1所示。依據(jù)量變到質(zhì)變的原理,能力值累積到一定程度,在學生的能力進入新的等級。學習能力值與能力等級的關系通過一個映射關系描述:<50,能力等級為bad,50~60之間lower,60~70直接low,70~90之間middle,90以上為high。
系統(tǒng)當然也允許學生自主控制策略選擇。尤其在課程學完進行總復習的時候。提供了多種查詢方式。如查詢包含某知識點的所有實例??梢园床襟E查看綜合實例,按系列查看相關實例等。
5結(jié)束語
在編程語言課教學中很多學生反映,課堂上的有些例子來不及細想就過去了,有些內(nèi)容僅用了一個例子講解印象不夠深刻,多數(shù)學生表示希望多看一些實例,只是沒有來源,也有些學生看了很多參考書的實例,但反映還是不懂或不會編程序。程序?qū)嵗詫W系統(tǒng)的形式可以提供大量實例,并指導學生慢慢體會,逐步深入。在有限的學時下,課堂教學實例需要精心設計,同時要提供大量實例供學生課下自學,本文正是針對此問題探討的解決方法。
參考文獻:
[1] Yuji Yoneyamaa,Kotaro Matsushitab,Kenneth J. Mackinb, et al. Puzzle Based Programming Learning Support System with Learning History Management[A]. 16th International Conference on Computers in Education[C],2008, 623-627.
[2] 程靜,楊明,邱玉輝. 基于知識點對象的個性化學習系統(tǒng)實施[J]. 西南師范大學學報,自然科學版,2006,31(5):120-123.
[3] 劉偉,付璐,余英良. 個性化CAI中教學策略的設計與實現(xiàn)[J]. 河南科技大學學報,自然科學版,2007,28(2):44-49.
[4] Natalia Stash,Alexandra Cristea,Paul De Bra. Learning Styles Adaptation Language for Adaptive Hypermedia[A]. AH 2006[C],2006.323-327.
Discussion about Example Teaching for Programming Language Course
ZHANG Jing-hua
(School of Computer Science of Technology, North China Electric Power University, Baoding, 071003, China)
Abstract: This paper based on C++ Program design course, discussed the example teaching method for programming language course, gave the program example design method and designed a web based program example self-learning system, which remedied the shortage of example in classroom teaching, and instructed the students studying examples on the system by providing a adaptive learning control strategy.
Key words:example teaching; example design; adaptive; example learning strategy