馬燕 李順寶 徐曉鐘 李魯群 張玉萍
摘要:本文提出一種螺旋上升式任務(wù)驅(qū)動(dòng)模式,并將其應(yīng)用于大學(xué)程序設(shè)計(jì)類課程的教學(xué),分析了該模式與傳統(tǒng)的任務(wù)驅(qū)動(dòng)法的區(qū)別。為配合該教學(xué)法的具體實(shí)施,以C語言為例,對(duì)程序設(shè)計(jì)類課程的教學(xué)內(nèi)容作了詳細(xì)分析,給出了在設(shè)計(jì)遞進(jìn)式任務(wù)時(shí)所遵循的若干原則,并要求做到理論教學(xué)與實(shí)踐教學(xué)的一體化,同時(shí),對(duì)任課教師需要具備的理論素養(yǎng)和實(shí)踐技能作了分析。
關(guān)鍵詞:螺旋上升式;任務(wù)驅(qū)動(dòng);遞進(jìn)式任務(wù);程序設(shè)計(jì)
中圖分類號(hào):G642.0 ? ? 文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1674-9324(2016)43-0162-04
一、引言
《C語言程序設(shè)計(jì)》、《Java語言程序設(shè)計(jì)》等是高校計(jì)算機(jī)專業(yè)的基礎(chǔ)課程,在講授程序設(shè)計(jì)語言語法、程序設(shè)計(jì)基本方法等之外,應(yīng)注重培養(yǎng)學(xué)生利用計(jì)算機(jī)語言求解實(shí)際問題的計(jì)算思維能力,而該能力的培養(yǎng)正是在實(shí)際教學(xué)環(huán)節(jié)中所欠缺的。傳統(tǒng)的教學(xué)往往過度強(qiáng)調(diào)語法知識(shí)的掌握,而忽視對(duì)于學(xué)生實(shí)際編程能力和計(jì)算思維能力的培養(yǎng),學(xué)生即使掌握了語法知識(shí),在遇到實(shí)際編程問題時(shí)也會(huì)無從下手。另外,學(xué)生自身素養(yǎng)、理解能力的個(gè)性差異也較大,大部分學(xué)生在紛繁復(fù)雜的語法、枯燥的編程語言面前往往失去信心與興趣,從而對(duì)計(jì)算機(jī)語言產(chǎn)生畏懼心理。因此,本文以C語言程序設(shè)計(jì)課程為例,針對(duì)其教學(xué)內(nèi)容,提出一種螺旋式任務(wù)驅(qū)動(dòng)模式來實(shí)施程序設(shè)計(jì)語言類課程的教學(xué),使學(xué)生真正掌握編程的精髓和實(shí)質(zhì),從而提高計(jì)算思維能力。
二、螺旋上升式任務(wù)驅(qū)動(dòng)模式
“任務(wù)驅(qū)動(dòng)法”是一種建立在建構(gòu)主義理論基礎(chǔ)上的教學(xué)法,即在教學(xué)過程中,老師根據(jù)教學(xué)內(nèi)容、教學(xué)目標(biāo)、學(xué)生特點(diǎn)等綜合因素來組織、設(shè)計(jì)教學(xué)任務(wù),要求學(xué)生通過獨(dú)立探究完成任務(wù)。該方法的特點(diǎn)是:學(xué)生的學(xué)習(xí)過程必須與所給的任務(wù)或者問題相結(jié)合,學(xué)生的學(xué)習(xí)動(dòng)機(jī)是在強(qiáng)烈的問題驅(qū)動(dòng)下,通過問題的探究進(jìn)行自主探索和互動(dòng)協(xié)作,使學(xué)生帶著真實(shí)的任務(wù)在探索中學(xué)習(xí)。
在C語言中采用“任務(wù)驅(qū)動(dòng)”教學(xué)法,就是將C語言中的教學(xué)內(nèi)容轉(zhuǎn)化為需要學(xué)生完成的編程“任務(wù)”,在這些“任務(wù)”驅(qū)動(dòng)下,由教師引導(dǎo)學(xué)生由易到難、循序漸進(jìn)地完成各項(xiàng)“任務(wù)”,從而完成教學(xué)任務(wù),并且在“任務(wù)”的完成過程中,不斷地培養(yǎng)學(xué)生分析問題、解決問題的能力,從而提高學(xué)生的獨(dú)立思考能力和計(jì)算思維能力,并且不斷激發(fā)學(xué)生學(xué)習(xí)編程語言解決實(shí)際問題的興趣,逐步形成學(xué)習(xí)—思考—進(jìn)步—再學(xué)習(xí)—再思考—再進(jìn)步的良性循環(huán)。在任務(wù)的設(shè)計(jì)中,可以結(jié)合C語言自身特點(diǎn),對(duì)教學(xué)內(nèi)容進(jìn)行重組,并從重組后的教學(xué)內(nèi)容出發(fā),重新設(shè)計(jì)各項(xiàng)任務(wù),使前續(xù)任務(wù)是后繼任務(wù)的基礎(chǔ)、引導(dǎo),后繼任務(wù)又是前續(xù)任務(wù)的擴(kuò)充、提高,使任務(wù)之間層層遞進(jìn),環(huán)環(huán)相扣,由此,本文提出螺旋上升式任務(wù)驅(qū)動(dòng)模式來完成大學(xué)程序設(shè)計(jì)類課程的教學(xué)。
三、程序設(shè)計(jì)類課程教學(xué)內(nèi)容的分析
為配合螺旋上升式任務(wù)驅(qū)動(dòng)教學(xué)法,課程內(nèi)容的分析與組織是關(guān)鍵之一。以C語言為例,可以把教學(xué)內(nèi)容簡化為以下兩大階段。
第一階段包括C語言的基礎(chǔ)內(nèi)容,如基本數(shù)據(jù)類型、運(yùn)算符、三大結(jié)構(gòu)(順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu))。這一階段的教學(xué)任務(wù)設(shè)計(jì)中,應(yīng)淡化語法細(xì)節(jié),強(qiáng)調(diào)三大結(jié)構(gòu)的理解與掌握,而順序、選擇和循環(huán)這三大結(jié)構(gòu)教學(xué)環(huán)節(jié)的設(shè)計(jì)可以由螺旋上升式任務(wù)方式完成教學(xué)內(nèi)容,以實(shí)例分析深入展開,通過由淺入深的任務(wù),將程序的三種基本結(jié)構(gòu)的執(zhí)行過程和特點(diǎn)一一呈現(xiàn)。通過任務(wù)的完成,讓學(xué)生理解并掌握三種基本結(jié)構(gòu)的執(zhí)行過程,在三大結(jié)構(gòu)的學(xué)習(xí)中,貫穿基本數(shù)據(jù)類型、運(yùn)算符、輸入、輸出、條件、循環(huán)和轉(zhuǎn)移語句等相關(guān)語法知識(shí)的學(xué)習(xí)。經(jīng)過第一階段的學(xué)習(xí),學(xué)生具備基本的程序設(shè)計(jì)能力,并初步具有計(jì)算思維能力,能獨(dú)立編寫具有初等難度、幾十行的程序,并能夠較順利地完成程序調(diào)試與測(cè)試。
第二階段包括C語言的高層次內(nèi)容,如數(shù)組、指針、函數(shù)。這三部分分別進(jìn)行單獨(dú)學(xué)習(xí)的話,較容易被學(xué)生理解和使用,真正的難點(diǎn)是如何將這三部分內(nèi)容靈活組合成具有通用性的程序,而要達(dá)到這一目標(biāo),首先要對(duì)數(shù)組、指針和函數(shù)這三部分的區(qū)別與聯(lián)系作一分析,如果這三者存在密切的關(guān)系,則可以利用螺旋式任務(wù)驅(qū)動(dòng)教學(xué)法來設(shè)計(jì)前后貫通、不斷提升的各項(xiàng)任務(wù)。圖1對(duì)數(shù)組、指針和函數(shù)三者的關(guān)系作了說明,首先,數(shù)組是定義了一塊連續(xù)的內(nèi)存區(qū)域,這一連續(xù)的內(nèi)存區(qū)域中的首地址可以利用指針引用,而數(shù)組和指針最終是為模塊化程序設(shè)計(jì)服務(wù),最終,又可以通過函數(shù)來完成。圖1說明了在第二階段的C語言學(xué)習(xí)中,是可以利用螺旋式任務(wù)驅(qū)動(dòng)教學(xué)法來完成的。經(jīng)過第二階段的學(xué)習(xí),學(xué)生可以獨(dú)立編寫數(shù)百行以上、功能較為復(fù)雜、具有一定可讀性和可擴(kuò)展性的程序。
上述兩個(gè)階段教學(xué)內(nèi)容中包含需要學(xué)生了解、掌握的知識(shí)點(diǎn),對(duì)于這些知識(shí)點(diǎn),要進(jìn)行全面分析與統(tǒng)籌,需要對(duì)知識(shí)點(diǎn)間的相互關(guān)系做出分析:知識(shí)點(diǎn)是獨(dú)立的還是并行關(guān)系,以及對(duì)于掌握某一知識(shí)點(diǎn)的支撐知識(shí)點(diǎn),所有這些關(guān)系可以通過繪制知識(shí)點(diǎn)的結(jié)構(gòu)圖來完整表示出來。圖2和圖3分別列出順序結(jié)構(gòu)和分支結(jié)構(gòu)的知識(shí)點(diǎn)結(jié)構(gòu)圖,其中,箭頭表示概念的走向。
四、螺旋上升式任務(wù)的設(shè)計(jì)原則
螺旋上升式任務(wù)驅(qū)動(dòng)模式的關(guān)鍵在于任務(wù)的設(shè)計(jì),而在教學(xué)任務(wù)設(shè)計(jì)時(shí)所遵循的原則決定著整個(gè)教學(xué)任務(wù)的成敗,下面就螺旋上升式任務(wù)驅(qū)動(dòng)模式的任務(wù)設(shè)計(jì)所遵循的幾條原則進(jìn)行探討。
1.按教學(xué)內(nèi)容設(shè)計(jì),要求覆蓋盡可能多的知識(shí)點(diǎn)。任務(wù)的設(shè)計(jì)可以緊扣知識(shí)點(diǎn)的結(jié)構(gòu)圖來設(shè)計(jì),做到盡可能多地涵蓋教學(xué)內(nèi)容的絕大多數(shù)知識(shí)點(diǎn)。例如,在分支結(jié)構(gòu)程序設(shè)計(jì)任務(wù)中,可以設(shè)計(jì)兩個(gè)數(shù)比較大小的任務(wù),由學(xué)生輸入兩個(gè)10以內(nèi)的自然數(shù),計(jì)算機(jī)根據(jù)兩個(gè)輸入數(shù)的大小,輸出“大于”、“等于”或“小于”。在該任務(wù)中,需要學(xué)生掌握輸入輸出語句、分支語句以及邏輯運(yùn)算符和邏輯表達(dá)式等知識(shí)點(diǎn)。
2.遞進(jìn)式任務(wù)的設(shè)計(jì)。對(duì)于一些較大的知識(shí)點(diǎn),比如函數(shù)和模塊設(shè)計(jì),可以被認(rèn)為大任務(wù),通過大任務(wù)的完成,可以形成對(duì)函數(shù)比較系統(tǒng)與全面的認(rèn)識(shí),如果要求學(xué)生直接完成大任務(wù),由于學(xué)生的個(gè)體差異,則較難順利完成。我們可以按照大任務(wù)涉及到的知識(shí)點(diǎn),將其分解成二級(jí)甚至三級(jí)、四級(jí)子任務(wù)來完成,同時(shí),二級(jí)、三級(jí)和四級(jí)子任務(wù)間呈遞進(jìn)式關(guān)系,并注意新舊知識(shí)的聯(lián)系,子任務(wù)之間通過知識(shí)點(diǎn)加以貫穿,在完成新的子任務(wù)的同時(shí)不斷復(fù)習(xí)鞏固舊知識(shí)點(diǎn)。圖4列出了5個(gè)遞進(jìn)式子任務(wù)的設(shè)計(jì),任務(wù)1與上述例子一致,任務(wù)2則在任務(wù)1中兩個(gè)數(shù)的基礎(chǔ)上,修改為三個(gè)數(shù)比大小,要完成該項(xiàng)任務(wù),則需用到多分支嵌套結(jié)構(gòu)。任務(wù)3進(jìn)一步將三個(gè)數(shù)改為100個(gè)數(shù),這時(shí),向?qū)W生拋出一個(gè)新的問題,即100個(gè)數(shù)是無法再通過鍵盤輸入的,而學(xué)生要解決該問題,只能采用for循環(huán)語句來實(shí)現(xiàn),并且還需掌握隨機(jī)數(shù)生成函數(shù)。在任務(wù)3的基礎(chǔ)上,進(jìn)一步產(chǎn)生了任務(wù)4,要求對(duì)這100個(gè)數(shù)排序,這時(shí),學(xué)生僅掌握上述知識(shí)點(diǎn)顯然已捉襟見肘,待解決的問題變成了變量存儲(chǔ)的問題,可以順理成章地引入一維數(shù)組的定義,同時(shí),也可以讓學(xué)生了解冒泡排序法。在學(xué)生掌握了任務(wù)4以后,又面臨任務(wù)5,要求對(duì)4個(gè)班級(jí)學(xué)生的五門課程成績分別排序,學(xué)生如果還是延用上述方法的話,則分別要進(jìn)行20次的冒泡排序法,這顯然是行不通的,而模塊化設(shè)計(jì)正好可以解決該問題,由此,引入了函數(shù)的知識(shí)點(diǎn)。
3.任務(wù)盡量貼近生活。程序類課程的學(xué)習(xí)本質(zhì)上是較枯燥的,可以通過設(shè)計(jì)與學(xué)生日常生活貼近的任務(wù),激起學(xué)生的好奇心,積極探索,主動(dòng)學(xué)習(xí),通過自主探索解決實(shí)際問題,這樣就能給學(xué)生帶來成就感,并激發(fā)他們投入更大的熱情完成程序設(shè)計(jì)任務(wù)。
例如,圖4(見下頁)中的任務(wù)4可以改為以下實(shí)例:喬伊是一位遠(yuǎn)近聞名的大胃王,這天他參加一項(xiàng)國際競(jìng)吃比賽,競(jìng)吃食品包括燒餅、熱狗、龍蝦、冰淇淋、烤雞等共10種,每種食品價(jià)格各不相同,比賽規(guī)定按10種食品價(jià)格從低到高依次品嘗,請(qǐng)您替喬伊列出按食品價(jià)格排序后的食品清單。通過這個(gè)實(shí)例可以看出,數(shù)的排序問題被轉(zhuǎn)化為鮮活的實(shí)際生活問題,巧妙的將枯燥的冒泡排序法等知識(shí)點(diǎn)融合在了需要學(xué)生解決的問題中,從而讓學(xué)生體悟到編程的終極目標(biāo)不是為了掌握語法,而是為了解決實(shí)際問題。
五、螺旋上升式任務(wù)驅(qū)動(dòng)模式的實(shí)施
在大學(xué)程序設(shè)計(jì)類課程的教學(xué)實(shí)踐中,要將螺旋上升式任務(wù)驅(qū)動(dòng)模式付諸實(shí)現(xiàn),需要對(duì)理論教學(xué)和實(shí)踐教學(xué)等各個(gè)環(huán)節(jié)進(jìn)行改革,并且也對(duì)教師提出了新的要求。
1.做到理論教學(xué)與實(shí)踐教學(xué)的一體化。螺旋上升式任務(wù)驅(qū)動(dòng)教學(xué)與一般的任務(wù)驅(qū)動(dòng)教學(xué)的最大區(qū)別是,教師圍繞任務(wù)展開理論教學(xué),學(xué)生在理解與掌握任務(wù)中涉及的知識(shí)點(diǎn)后,接受新的任務(wù),任務(wù)間層層遞進(jìn),學(xué)生學(xué)習(xí)的知識(shí)點(diǎn)循序漸進(jìn),螺旋式上升。為完成這一目標(biāo),需要對(duì)任務(wù)作一分類,有的任務(wù)是由教師通過講授來完成的,而有的任務(wù)則是由學(xué)生通過實(shí)踐自主完成,不同任務(wù)之間有可能是相互嵌套、互有關(guān)聯(lián),這時(shí)就要求在課堂教學(xué)中,做到理論教學(xué)與實(shí)踐教學(xué)的一體化。教師可以根據(jù)學(xué)生的實(shí)際情況和教學(xué)目標(biāo),或?qū)嵤├碚摻虒W(xué),或安排學(xué)生自主實(shí)踐,靈活安排各項(xiàng)任務(wù)。比如,圖4中的任務(wù)1相對(duì)簡單,實(shí)例較短,教師可邊講解學(xué)生邊操作;而任務(wù)2,相對(duì)任務(wù)1更易出錯(cuò),教師可先不給提示,讓學(xué)生獨(dú)立完成,針對(duì)學(xué)生中出現(xiàn)的普遍問題,可以出示反面樣例,從而起到事半功倍的作用。
2.教師應(yīng)具備較高的理論素養(yǎng)和實(shí)踐技能。要在大學(xué)程序設(shè)計(jì)類課程中運(yùn)用好螺旋上升式任務(wù)教學(xué)法,其核心在于具備較高理論素養(yǎng)和實(shí)踐技能的教師,理論教學(xué)不再是按傳統(tǒng)模式先講語法再舉例,而是由課前精心設(shè)計(jì)的任務(wù)自然引入新的知識(shí)點(diǎn),學(xué)生則是從一個(gè)較易解決的熟悉的內(nèi)容漸漸進(jìn)入到新知識(shí)點(diǎn)的學(xué)習(xí)。在課堂教學(xué)中,往往會(huì)出現(xiàn)教師無法預(yù)知的情況,比如,學(xué)生在完成任務(wù)過程中,會(huì)出現(xiàn)各種錯(cuò)誤,面對(duì)林林總總的錯(cuò)誤,需要教師迅速分析出帶有共性的錯(cuò)誤,并通過變例(包括正例和反例)的演示來加深學(xué)生對(duì)知識(shí)點(diǎn)的理解,學(xué)會(huì)獨(dú)立探究的方法。
六、結(jié)論
筆者針對(duì)大學(xué)程序設(shè)計(jì)類課程教學(xué)中面臨的實(shí)際問題和特點(diǎn),提出螺旋上升式任務(wù)驅(qū)動(dòng)模式,將其用于大學(xué)程序設(shè)計(jì)類課程的教學(xué)中,如能較好地運(yùn)用這一方法,則可以使枯燥的計(jì)算機(jī)語言語法的“填鴨式”的傳授轉(zhuǎn)變?yōu)閷W(xué)生對(duì)實(shí)際問題的探究,而在完成遞進(jìn)式任務(wù)的同時(shí),了解計(jì)算機(jī)語言語法,最終使學(xué)生由被動(dòng)接受知識(shí)轉(zhuǎn)變?yōu)橹鲃?dòng)獲取知識(shí),提高學(xué)生解決實(shí)際問題的能力和計(jì)算思維能力。
參考文獻(xiàn):
[1]陳蓮君,朱晴婷.培養(yǎng)能力為主線的C語言程序設(shè)計(jì)教學(xué)研究[J].計(jì)算機(jī)教育,2011,(14):102-105.
[2]劉金月,楊永,倪紅梅,時(shí)貴英.任務(wù)驅(qū)動(dòng)法在《程序設(shè)計(jì)》課程中的應(yīng)用[J].長江大學(xué)學(xué)報(bào)(自然科學(xué)版)理工,2012,9(8):183-185.
[3]徐新海,林宇斐.注重計(jì)算思維的啟發(fā)式C語言語法教學(xué)[J].計(jì)算機(jī)教育,2014,(17):1-4.
[4]郭紹青.任務(wù)驅(qū)動(dòng)教學(xué)法的內(nèi)涵[J].中國電化教育,2006,(7):57.
[5]李薇,王磊.螺旋上升式教學(xué)模式的探討[J].高等理科教育,2009,(2):56-60.
[6]趙大偉.螺旋式項(xiàng)目教學(xué)法在《C語言程序設(shè)計(jì)》教學(xué)中的應(yīng)用[J].教育探索,2009,(11):80.
[7]左永文.案例教學(xué)法在《C語言程序設(shè)計(jì)》課程中的應(yīng)用[J].科技創(chuàng)新導(dǎo)報(bào),2012,(18):175.
[8]王偉勤.基于任務(wù)的螺旋上升式教學(xué)模式探究[J].產(chǎn)業(yè)與科技論壇,2012,11(7):169-170.
[9]張世民,李琳琳.任務(wù)驅(qū)動(dòng)教學(xué)法在程序設(shè)計(jì)課程中的應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2008,(3):65-69.
[10]李軍.基于任務(wù)驅(qū)動(dòng)的《電工技術(shù)基礎(chǔ)》課程教學(xué)設(shè)計(jì)過程[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013,(16):241-242.
The Teaching Research of Programming Design Course in the University Based on Spiral Type Task-driven
MA Yan1, LI Shun-bao2,XU Xiao-zhong1, LI Lu-qun1,ZHANG Yu-ping1
(1.College of Information, Mechanical and Electrical Engineer,Shanghai Normal University,Shanghai200234 ,China;2.Mathematical Institute of Shanghai Normal University,Shanghai 200234,China)
Abstract:This paper presents that spiral type task-driven mode can be applied to the teaching of programming design course in the university. The difference between this mode and traditional task-driven has been analyzed. With the implementation of the proposed teaching method,C language is taken as example. The paper analyzes the teaching content of programming design course in detail,puts forward several rules to be followed in the design of progressive task. It is required to achieve the integration of theoretical teaching and practical teaching. This paper also analyzes the theoretical knowledge and practical skills for the teachers.
Key words:spiral mode;task-driven;progressive task;programming design