馬燕 李順寶 徐曉鐘 李魯群 張玉萍
摘要:本文提出一種螺旋上升式任務(wù)驅(qū)動(dòng)模式,并將其應(yīng)用于大學(xué)程序設(shè)計(jì)類課程的教學(xué),分析了該模式與傳統(tǒng)的任務(wù)驅(qū)動(dòng)法的區(qū)別。為配合該教學(xué)法的具體實(shí)施,以C語(yǔ)言為例,對(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語(yǔ)言程序設(shè)計(jì)》、《Java語(yǔ)言程序設(shè)計(jì)》等是高校計(jì)算機(jī)專業(yè)的基礎(chǔ)課程,在講授程序設(shè)計(jì)語(yǔ)言語(yǔ)法、程序設(shè)計(jì)基本方法等之外,應(yīng)注重培養(yǎng)學(xué)生利用計(jì)算機(jī)語(yǔ)言求解實(shí)際問(wèn)題的計(jì)算思維能力,而該能力的培養(yǎng)正是在實(shí)際教學(xué)環(huán)節(jié)中所欠缺的。傳統(tǒng)的教學(xué)往往過(guò)度強(qiáng)調(diào)語(yǔ)法知識(shí)的掌握,而忽視對(duì)于學(xué)生實(shí)際編程能力和計(jì)算思維能力的培養(yǎng),學(xué)生即使掌握了語(yǔ)法知識(shí),在遇到實(shí)際編程問(wèn)題時(shí)也會(huì)無(wú)從下手。另外,學(xué)生自身素養(yǎng)、理解能力的個(gè)性差異也較大,大部分學(xué)生在紛繁復(fù)雜的語(yǔ)法、枯燥的編程語(yǔ)言面前往往失去信心與興趣,從而對(duì)計(jì)算機(jī)語(yǔ)言產(chǎn)生畏懼心理。因此,本文以C語(yǔ)言程序設(shè)計(jì)課程為例,針對(duì)其教學(xué)內(nèi)容,提出一種螺旋式任務(wù)驅(qū)動(dòng)模式來(lái)實(shí)施程序設(shè)計(jì)語(yǔ)言類課程的教學(xué),使學(xué)生真正掌握編程的精髓和實(shí)質(zhì),從而提高計(jì)算思維能力。
二、螺旋上升式任務(wù)驅(qū)動(dòng)模式
“任務(wù)驅(qū)動(dòng)法”是一種建立在建構(gòu)主義理論基礎(chǔ)上的教學(xué)法,即在教學(xué)過(guò)程中,老師根據(jù)教學(xué)內(nèi)容、教學(xué)目標(biāo)、學(xué)生特點(diǎn)等綜合因素來(lái)組織、設(shè)計(jì)教學(xué)任務(wù),要求學(xué)生通過(guò)獨(dú)立探究完成任務(wù)。該方法的特點(diǎn)是:學(xué)生的學(xué)習(xí)過(guò)程必須與所給的任務(wù)或者問(wèn)題相結(jié)合,學(xué)生的學(xué)習(xí)動(dòng)機(jī)是在強(qiáng)烈的問(wèn)題驅(qū)動(dòng)下,通過(guò)問(wèn)題的探究進(jìn)行自主探索和互動(dòng)協(xié)作,使學(xué)生帶著真實(shí)的任務(wù)在探索中學(xué)習(xí)。
在C語(yǔ)言中采用“任務(wù)驅(qū)動(dòng)”教學(xué)法,就是將C語(yǔ)言中的教學(xué)內(nèi)容轉(zhuǎn)化為需要學(xué)生完成的編程“任務(wù)”,在這些“任務(wù)”驅(qū)動(dòng)下,由教師引導(dǎo)學(xué)生由易到難、循序漸進(jìn)地完成各項(xiàng)“任務(wù)”,從而完成教學(xué)任務(wù),并且在“任務(wù)”的完成過(guò)程中,不斷地培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題的能力,從而提高學(xué)生的獨(dú)立思考能力和計(jì)算思維能力,并且不斷激發(fā)學(xué)生學(xué)習(xí)編程語(yǔ)言解決實(shí)際問(wèn)題的興趣,逐步形成學(xué)習(xí)—思考—進(jìn)步—再學(xué)習(xí)—再思考—再進(jìn)步的良性循環(huán)。在任務(wù)的設(shè)計(jì)中,可以結(jié)合C語(yǔ)言自身特點(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)模式來(lái)完成大學(xué)程序設(shè)計(jì)類課程的教學(xué)。
三、程序設(shè)計(jì)類課程教學(xué)內(nèi)容的分析
為配合螺旋上升式任務(wù)驅(qū)動(dòng)教學(xué)法,課程內(nèi)容的分析與組織是關(guān)鍵之一。以C語(yǔ)言為例,可以把教學(xué)內(nèi)容簡(jiǎn)化為以下兩大階段。
第一階段包括C語(yǔ)言的基礎(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)淡化語(yǔ)法細(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í)例分析深入展開,通過(guò)由淺入深的任務(wù),將程序的三種基本結(jié)構(gòu)的執(zhí)行過(guò)程和特點(diǎn)一一呈現(xiàn)。通過(guò)任務(wù)的完成,讓學(xué)生理解并掌握三種基本結(jié)構(gòu)的執(zhí)行過(guò)程,在三大結(jié)構(gòu)的學(xué)習(xí)中,貫穿基本數(shù)據(jù)類型、運(yùn)算符、輸入、輸出、條件、循環(huán)和轉(zhuǎn)移語(yǔ)句等相關(guān)語(yǔ)法知識(shí)的學(xué)習(xí)。經(jīng)過(guò)第一階段的學(xué)習(xí),學(xué)生具備基本的程序設(shè)計(jì)能力,并初步具有計(jì)算思維能力,能獨(dú)立編寫具有初等難度、幾十行的程序,并能夠較順利地完成程序調(diào)試與測(cè)試。
第二階段包括C語(yǔ)言的高層次內(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é)法來(lái)設(shè)計(jì)前后貫通、不斷提升的各項(xiàng)任務(wù)。圖1對(duì)數(shù)組、指針和函數(shù)三者的關(guān)系作了說(shuō)明,首先,數(shù)組是定義了一塊連續(xù)的內(nèi)存區(qū)域,這一連續(xù)的內(nèi)存區(qū)域中的首地址可以利用指針引用,而數(shù)組和指針最終是為模塊化程序設(shè)計(jì)服務(wù),最終,又可以通過(guò)函數(shù)來(lái)完成。圖1說(shuō)明了在第二階段的C語(yǔ)言學(xué)習(xí)中,是可以利用螺旋式任務(wù)驅(qū)動(dòng)教學(xué)法來(lái)完成的。經(jīng)過(guò)第二階段的學(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)系可以通過(guò)繪制知識(shí)點(diǎn)的結(jié)構(gòu)圖來(lái)完整表示出來(lái)。圖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)圖來(lái)設(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ǔ)句、分支語(yǔ)句以及邏輯運(yùn)算符和邏輯表達(dá)式等知識(shí)點(diǎn)。
2.遞進(jìn)式任務(wù)的設(shè)計(jì)。對(duì)于一些較大的知識(shí)點(diǎn),比如函數(shù)和模塊設(shè)計(jì),可以被認(rèn)為大任務(wù),通過(guò)大任務(wù)的完成,可以形成對(duì)函數(shù)比較系統(tǒng)與全面的認(rèn)識(shí),如果要求學(xué)生直接完成大任務(wù),由于學(xué)生的個(gè)體差異,則較難順利完成。我們可以按照大任務(wù)涉及到的知識(shí)點(diǎn),將其分解成二級(jí)甚至三級(jí)、四級(jí)子任務(wù)來(lái)完成,同時(shí),二級(jí)、三級(jí)和四級(jí)子任務(wù)間呈遞進(jìn)式關(guān)系,并注意新舊知識(shí)的聯(lián)系,子任務(wù)之間通過(guò)知識(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è)新的問(wèn)題,即100個(gè)數(shù)是無(wú)法再通過(guò)鍵盤輸入的,而學(xué)生要解決該問(wèn)題,只能采用for循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn),并且還需掌握隨機(jī)數(shù)生成函數(shù)。在任務(wù)3的基礎(chǔ)上,進(jìn)一步產(chǎn)生了任務(wù)4,要求對(duì)這100個(gè)數(shù)排序,這時(shí),學(xué)生僅掌握上述知識(shí)點(diǎn)顯然已捉襟見肘,待解決的問(wèn)題變成了變量存儲(chǔ)的問(wèn)題,可以順理成章地引入一維數(shù)組的定義,同時(shí),也可以讓學(xué)生了解冒泡排序法。在學(xué)生掌握了任務(wù)4以后,又面臨任務(wù)5,要求對(duì)4個(gè)班級(jí)學(xué)生的五門課程成績(jī)分別排序,學(xué)生如果還是延用上述方法的話,則分別要進(jìn)行20次的冒泡排序法,這顯然是行不通的,而模塊化設(shè)計(jì)正好可以解決該問(wèn)題,由此,引入了函數(shù)的知識(shí)點(diǎn)。
3.任務(wù)盡量貼近生活。程序類課程的學(xué)習(xí)本質(zhì)上是較枯燥的,可以通過(guò)設(shè)計(jì)與學(xué)生日常生活貼近的任務(wù),激起學(xué)生的好奇心,積極探索,主動(dòng)學(xué)習(xí),通過(guò)自主探索解決實(shí)際問(wèn)題,這樣就能給學(xué)生帶來(lái)成就感,并激發(fā)他們投入更大的熱情完成程序設(shè)計(jì)任務(wù)。
例如,圖4(見下頁(yè))中的任務(wù)4可以改為以下實(shí)例:?jiǎn)桃潦且晃贿h(yuǎn)近聞名的大胃王,這天他參加一項(xiàng)國(guó)際競(jìng)吃比賽,競(jìng)吃食品包括燒餅、熱狗、龍蝦、冰淇淋、烤雞等共10種,每種食品價(jià)格各不相同,比賽規(guī)定按10種食品價(jià)格從低到高依次品嘗,請(qǐng)您替喬伊列出按食品價(jià)格排序后的食品清單。通過(guò)這個(gè)實(shí)例可以看出,數(shù)的排序問(wèn)題被轉(zhuǎn)化為鮮活的實(shí)際生活問(wèn)題,巧妙的將枯燥的冒泡排序法等知識(shí)點(diǎn)融合在了需要學(xué)生解決的問(wèn)題中,從而讓學(xué)生體悟到編程的終極目標(biāo)不是為了掌握語(yǔ)法,而是為了解決實(shí)際問(wèn)題。
五、螺旋上升式任務(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ù)是由教師通過(guò)講授來(lái)完成的,而有的任務(wù)則是由學(xué)生通過(guò)實(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ì)簡(jiǎn)單,實(shí)例較短,教師可邊講解學(xué)生邊操作;而任務(wù)2,相對(duì)任務(wù)1更易出錯(cuò),教師可先不給提示,讓學(xué)生獨(dú)立完成,針對(duì)學(xué)生中出現(xiàn)的普遍問(wèn)題,可以出示反面樣例,從而起到事半功倍的作用。
2.教師應(yīng)具備較高的理論素養(yǎng)和實(shí)踐技能。要在大學(xué)程序設(shè)計(jì)類課程中運(yùn)用好螺旋上升式任務(wù)教學(xué)法,其核心在于具備較高理論素養(yǎng)和實(shí)踐技能的教師,理論教學(xué)不再是按傳統(tǒng)模式先講語(yǔ)法再舉例,而是由課前精心設(shè)計(jì)的任務(wù)自然引入新的知識(shí)點(diǎn),學(xué)生則是從一個(gè)較易解決的熟悉的內(nèi)容漸漸進(jìn)入到新知識(shí)點(diǎn)的學(xué)習(xí)。在課堂教學(xué)中,往往會(huì)出現(xiàn)教師無(wú)法預(yù)知的情況,比如,學(xué)生在完成任務(wù)過(guò)程中,會(huì)出現(xiàn)各種錯(cuò)誤,面對(duì)林林總總的錯(cuò)誤,需要教師迅速分析出帶有共性的錯(cuò)誤,并通過(guò)變例(包括正例和反例)的演示來(lái)加深學(xué)生對(duì)知識(shí)點(diǎn)的理解,學(xué)會(huì)獨(dú)立探究的方法。
六、結(jié)論
筆者針對(duì)大學(xué)程序設(shè)計(jì)類課程教學(xué)中面臨的實(shí)際問(wèn)題和特點(diǎn),提出螺旋上升式任務(wù)驅(qū)動(dòng)模式,將其用于大學(xué)程序設(shè)計(jì)類課程的教學(xué)中,如能較好地運(yùn)用這一方法,則可以使枯燥的計(jì)算機(jī)語(yǔ)言語(yǔ)法的“填鴨式”的傳授轉(zhuǎn)變?yōu)閷W(xué)生對(duì)實(shí)際問(wèn)題的探究,而在完成遞進(jìn)式任務(wù)的同時(shí),了解計(jì)算機(jī)語(yǔ)言語(yǔ)法,最終使學(xué)生由被動(dòng)接受知識(shí)轉(zhuǎn)變?yōu)橹鲃?dòng)獲取知識(shí),提高學(xué)生解決實(shí)際問(wèn)題的能力和計(jì)算思維能力。
參考文獻(xiàn):
[1]陳蓮君,朱晴婷.培養(yǎng)能力為主線的C語(yǔ)言程序設(shè)計(jì)教學(xué)研究[J].計(jì)算機(jī)教育,2011,(14):102-105.
[2]劉金月,楊永,倪紅梅,時(shí)貴英.任務(wù)驅(qū)動(dòng)法在《程序設(shè)計(jì)》課程中的應(yīng)用[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版)理工,2012,9(8):183-185.
[3]徐新海,林宇斐.注重計(jì)算思維的啟發(fā)式C語(yǔ)言語(yǔ)法教學(xué)[J].計(jì)算機(jī)教育,2014,(17):1-4.
[4]郭紹青.任務(wù)驅(qū)動(dòng)教學(xué)法的內(nèi)涵[J].中國(guó)電化教育,2006,(7):57.
[5]李薇,王磊.螺旋上升式教學(xué)模式的探討[J].高等理科教育,2009,(2):56-60.
[6]趙大偉.螺旋式項(xiàng)目教學(xué)法在《C語(yǔ)言程序設(shè)計(jì)》教學(xué)中的應(yīng)用[J].教育探索,2009,(11):80.
[7]左永文.案例教學(xué)法在《C語(yǔ)言程序設(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ì)過(guò)程[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