邢旭峰,謝仕義,彭小紅,陳有英
(廣東海洋大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院,廣東湛江 524088)
2016年5月,國(guó)務(wù)院辦公廳印發(fā)了《關(guān)于建設(shè)大眾創(chuàng)業(yè)萬眾創(chuàng)新示范基地的實(shí)施意見》,指出:“把創(chuàng)業(yè)精神培育和創(chuàng)業(yè)素質(zhì)教育納入國(guó)民教育體系,實(shí)現(xiàn)全社會(huì)創(chuàng)業(yè)教育和培訓(xùn)制度化、體系化。加快完善創(chuàng)業(yè)課程設(shè)置,加強(qiáng)創(chuàng)業(yè)實(shí)訓(xùn)體系建設(shè)”[1]。2017年9月,中共中央辦公廳、國(guó)務(wù)院辦公廳印發(fā)的《關(guān)于深化教育體制機(jī)制改革的意見》指出,“不同類型的高等學(xué)校要探索適應(yīng)自身特點(diǎn)的培養(yǎng)模式,著重培養(yǎng)適應(yīng)社會(huì)需要的創(chuàng)新型、復(fù)合型、應(yīng)用型人才。把創(chuàng)新創(chuàng)業(yè)教育貫穿人才培養(yǎng)全過程,建立健全學(xué)科專業(yè)動(dòng)態(tài)調(diào)整機(jī)制,完善課程體系,加強(qiáng)教材建設(shè)和實(shí)訓(xùn)基地建設(shè),完善學(xué)分制,實(shí)施靈活的學(xué)習(xí)制度,鼓勵(lì)教師創(chuàng)新教學(xué)方法?!盵2]。相關(guān)政策的出臺(tái),對(duì)本科教學(xué)模式的改革提出了新的要求,順應(yīng)新要求的教學(xué)模式改革研究勢(shì)在必行。
C語言程序設(shè)計(jì)課程是普通高校計(jì)算機(jī)教育的專業(yè)基礎(chǔ)課程,對(duì)其掌握的程度直接影響到學(xué)生對(duì)后續(xù)課程的學(xué)習(xí)和今后的編程思維。C語言具有自身數(shù)據(jù)類型和表達(dá)形式豐富多樣、程序設(shè)計(jì)靈活的特點(diǎn),加上各高校學(xué)生生源不同,總體文化基礎(chǔ)有較大差異,因而此門課成為學(xué)生公認(rèn)的比較難學(xué)的課程之一[3]。如何提高C語言程序設(shè)計(jì)課程的教學(xué)效果,增強(qiáng)學(xué)生學(xué)習(xí)此門課程的自信心,一直是研究的熱點(diǎn)。
C語言是由美國(guó)貝爾實(shí)驗(yàn)室開發(fā)的,該語言具有以下優(yōu)點(diǎn):豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu);可直接訪問內(nèi)存的物理地址,進(jìn)行“位(bit)”運(yùn)算;可移植性好,使用靈活方便。目前許多本科院校計(jì)算機(jī)相關(guān)專業(yè)或非計(jì)算機(jī)專業(yè)普遍開設(shè)此門課程[4]。
對(duì)于計(jì)算機(jī)相關(guān)專業(yè)來說,C語言程序設(shè)計(jì)課程是數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、面向?qū)ο蟪绦蛟O(shè)計(jì)、數(shù)據(jù)庫原理及應(yīng)用等其他計(jì)算機(jī)專業(yè)課的基礎(chǔ)。通過該門課程的學(xué)習(xí),學(xué)生可以利用計(jì)算機(jī)語言表達(dá)自己的思維,運(yùn)用計(jì)算機(jī)語言求解實(shí)際問題,為今后利用計(jì)算機(jī)技術(shù)實(shí)現(xiàn)本專業(yè)的程序開發(fā)和創(chuàng)新奠定堅(jiān)實(shí)的基礎(chǔ)[5]。顯然,C語言程序設(shè)計(jì)課程在計(jì)算機(jī)專業(yè)教學(xué)中具有重要作用。
C語言程序設(shè)計(jì)的教學(xué)內(nèi)容包括運(yùn)算符、變量、數(shù)據(jù)類型、數(shù)組、程序控制結(jié)構(gòu)、函數(shù)、結(jié)構(gòu)體、指針、預(yù)處理命令和文件等,存在理論性強(qiáng)、內(nèi)容量大、較為抽象的特點(diǎn),這使得很多高校在教學(xué)過程中普遍面臨課程內(nèi)容多課時(shí)少的問題。現(xiàn)階段,關(guān)于C語言程序設(shè)計(jì)課程的學(xué)時(shí)數(shù),各高校一般都安排為48~64個(gè)學(xué)時(shí),理論學(xué)時(shí)和上機(jī)學(xué)時(shí)各為24~32小時(shí)。在有限的理論學(xué)時(shí)內(nèi),要把所有的知識(shí)都講透難度相當(dāng)大。另外由于高校擴(kuò)招,學(xué)生規(guī)模增加,多為合班上課,上課人數(shù)可達(dá)70~110人;再者,該課程是計(jì)算機(jī)本科專業(yè)后續(xù)課程的基礎(chǔ),一般安排在大學(xué)一年級(jí)的第一個(gè)學(xué)期,生源基礎(chǔ)參差不齊,這也使確保大部分學(xué)生在有限的課時(shí)內(nèi)掌握這門語言的難度相當(dāng)大[6]。
由于C語言程序設(shè)計(jì)課程的重要性及教學(xué)過程中存在諸多問題,承擔(dān)這門課程的高校教師都致力于面向本校學(xué)生特點(diǎn)的教學(xué)模式改革研究與實(shí)踐,旨在把這門課傳授好,培養(yǎng)學(xué)生的編程能力和創(chuàng)新能力。
檢索中國(guó)知網(wǎng)2002-2017年期間國(guó)內(nèi)關(guān)于C語言程序設(shè)計(jì)課程的教學(xué)論文,共檢出相關(guān)論文3183篇。圖1給出了此期間該門課程在教學(xué)模式、實(shí)踐方法、教學(xué)手段等方面每年發(fā)表的教改論文數(shù)量。2006年之前關(guān)于C語言程序設(shè)計(jì)課程的教改論文維持在100篇以下,此后逐年增加,2005-2009年期間增幅最高,后處于相對(duì)平穩(wěn)的狀態(tài),表明C語言程序設(shè)計(jì)課程教學(xué)改革已成為相關(guān)教育工作者關(guān)心的熱點(diǎn)之一。
圖1 2002-2017年C語言程序設(shè)計(jì)課程教改論文發(fā)表數(shù)量分布圖
C語言程序設(shè)計(jì)課程教學(xué)改革方法主要有翻轉(zhuǎn)課堂、微課教學(xué)、案例式教學(xué)、SPOC模式、CDIO工程教育模式、BOPPPS有效教學(xué)模型、慕課(MOOC)等,表1給出了這些教學(xué)方法的主要特點(diǎn)。
如前所述,各高校普遍將C語言程序設(shè)計(jì)課程安排在大學(xué)一年級(jí)的第一學(xué)期,一些教學(xué)方法(表1)對(duì)剛從高中進(jìn)入大學(xué)校門的學(xué)生來說還需要一個(gè)較長(zhǎng)的適應(yīng)過程。因此,探索出適用于一年級(jí)新生的C語言程序設(shè)計(jì)教學(xué)模式非常必要。
表1 C語言程序設(shè)計(jì)課程教學(xué)主要教學(xué)模式一覽表
問題驅(qū)動(dòng)模式(Problem-Based Learning,PBL)教學(xué)方法,主要理論依據(jù)是人本主義的教學(xué)理念,以學(xué)生為主體,讓學(xué)生圍繞提出的問題進(jìn)行討論,尋求解決方案,有助于提高學(xué)生學(xué)習(xí)的主動(dòng)性和在教學(xué)過程中的參與度。采用這種教學(xué)方法要求教師必須具備較強(qiáng)的課堂掌控能力和引導(dǎo)能力。
譬如,在講解C語言程序設(shè)計(jì)課程的while循環(huán)結(jié)構(gòu)知識(shí)點(diǎn)時(shí),可給出以下問題,
#include
int main()
{
int y=10;while(y--);
printf("y=%d ",y);
return 0;
}
提供四個(gè)選項(xiàng),分別是:(A)y=0;(B)y=-1;(C)y=1;(D)while構(gòu)成無限循環(huán)。引導(dǎo)學(xué)生根據(jù)所學(xué)知識(shí)點(diǎn),選擇這個(gè)程序運(yùn)行的結(jié)果應(yīng)該是哪個(gè)答案。首先通過采用增加平時(shí)分的激勵(lì)機(jī)制調(diào)動(dòng)學(xué)生回答和討論問題的積極性;其次要求回答問題的學(xué)生闡述選擇這個(gè)答案的理由,然后讓有其它不同意見的學(xué)生說出自己的選項(xiàng)并闡述理由。對(duì)于這個(gè)問題,初學(xué)者很容易選擇A、C或D這3個(gè)錯(cuò)誤答案。此時(shí)任課教師不要急于把標(biāo)準(zhǔn)答案告訴學(xué)生,而要將例題程序代碼在系統(tǒng)中運(yùn)行輸出,最后再給學(xué)生分析為什么是這樣的結(jié)果。
問題驅(qū)動(dòng)式教學(xué)一方面加強(qiáng)了學(xué)生對(duì)以前章節(jié)學(xué)習(xí)內(nèi)容的(自增和自減運(yùn)算符)理解,另一方面使得學(xué)生對(duì)while循環(huán)語句的結(jié)構(gòu)有了清晰的認(rèn)識(shí)。采用問題驅(qū)動(dòng)式教學(xué),可獲得以下教育效果:有效地暴露出學(xué)生學(xué)習(xí)過程中誤區(qū)的認(rèn)知,從而對(duì)學(xué)習(xí)難點(diǎn)和容易混淆的概念有更清晰的認(rèn)識(shí);各抒己見的討論方式,增加了學(xué)生學(xué)習(xí)的自信心和成就感。
C語言程序設(shè)計(jì)作為基礎(chǔ)課程,目的是使學(xué)生建立起程序設(shè)計(jì)的概念,在較短時(shí)間內(nèi)初步學(xué)會(huì)用C語言編寫程序,因此講授概念和語法多一些,程序演示范例較為簡(jiǎn)單。程序運(yùn)行的結(jié)果多是在DOS命令提示符窗口下顯示幾個(gè)數(shù)字或一串字符,由此學(xué)生會(huì)感覺較為單調(diào)、枯燥。再者,由于課程體系的安排所需,計(jì)算機(jī)相關(guān)專業(yè)學(xué)生對(duì)硬件的接觸比電子類專業(yè)的學(xué)生要晚,在“雙創(chuàng)”競(jìng)賽中往往也只能是大二以后才能拿得出作品,且多是軟件類參賽作品而不是實(shí)物,這會(huì)加深學(xué)生認(rèn)為這門課沒有什么實(shí)際應(yīng)用價(jià)值的想法。
針對(duì)上述問題,采用應(yīng)用驅(qū)動(dòng)教學(xué)模式引導(dǎo)學(xué)生把所學(xué)的知識(shí)加以應(yīng)用,可以激發(fā)學(xué)生的學(xué)習(xí)興趣。Arduino是一種以AVR單片機(jī)為核心的單片機(jī)控制板,初學(xué)者不需要太多的單片機(jī)基礎(chǔ)就可以快速上手;而且Arduino語法與C語言在變量類型、語法、邏輯判斷等方面都是一樣的,C程序稍加修改就可以在Arduino開發(fā)板上運(yùn)行[15]。為此,教師可在課堂上引入Arduino開發(fā)板來輔助教學(xué)。
以講授C語言中的for語句實(shí)現(xiàn)循環(huán)為例。教材中例題的演示效果是在DOS命令窗口輸出一行字符串或一個(gè)簡(jiǎn)單的圖型,而用Arduino開發(fā)板輔助教學(xué)。將一個(gè)LED燈和一個(gè)100Ω電阻等硬件接到Arduino開發(fā)板中,然后將下列程序代碼錄入到開發(fā)板就可以實(shí)現(xiàn)LED的循環(huán)間歇閃爍。學(xué)生們看到簡(jiǎn)單的C程序?qū)懭氲接布芯湍苤笓]硬件工作,就不會(huì)再覺得這門課學(xué)完沒有用了。
int ledPin=10;
void etup()
{pinMode(ledPin,OUTPUT);}
void loop()
{for(int x=0;x<3;x++)
{
digitalWrite(ledPin,HIGH);
delay(150);
digitalWrite(ledPin,HIGH);
delay(100);
}
}
Arduino開發(fā)板還有很多外圍功能模塊,如電機(jī)驅(qū)動(dòng)、無線通訊、音樂播放、環(huán)境感知等,這些功能模塊都能很容易連到Arduino開發(fā)板上。學(xué)生只要將C語言編寫的程序移植到Arduino開發(fā)板上,就可以實(shí)現(xiàn)所需的功能。通過這種實(shí)際應(yīng)用代碼的編寫,讓學(xué)生學(xué)以致用,彌補(bǔ)課堂演示枯燥單調(diào)的不足。應(yīng)用驅(qū)動(dòng)教學(xué)模式可以激發(fā)學(xué)生的創(chuàng)新能力,為其今后的專業(yè)學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
在C語言程序設(shè)計(jì)課程教學(xué)中,引入問題驅(qū)動(dòng)和應(yīng)用驅(qū)動(dòng)混合模式,可更加注重學(xué)生動(dòng)手能力和創(chuàng)新能力的培養(yǎng),使學(xué)生在學(xué)習(xí)過程中能發(fā)揮創(chuàng)新精神,真正把所學(xué)的程序設(shè)計(jì)知識(shí)融會(huì)貫通,成為社會(huì)所需要的應(yīng)用型人才。對(duì)于比較難的知識(shí)點(diǎn),學(xué)生可利用Arduino實(shí)驗(yàn)開發(fā)板輔助完成。應(yīng)用驅(qū)動(dòng)教學(xué)模式能夠有效地激發(fā)學(xué)生的學(xué)習(xí)興趣和創(chuàng)作靈感,加深對(duì)專業(yè)知識(shí)的認(rèn)知。
[參考文獻(xiàn)]
[1]中華人民共和國(guó)中央人民政府.國(guó)務(wù)院辦公廳印發(fā)《關(guān)于建設(shè)大眾創(chuàng)業(yè)萬眾創(chuàng)新示范基地的實(shí)施意見》[EB/OL].(2016-05-12)[2017-11-13].http://www.gov.cn/xinwen/2016-05/12/content_5072748.htm.
[2]中華人民共和國(guó)中央人民政府.中共中央辦公廳 國(guó)務(wù)院辦公廳印發(fā)《關(guān)于深化教育體制機(jī)制改革的意見》[EB/OL].(2017-09-24)[2017-11-24].http://www.gov.cn/xinwen/2017-09/24/content_5227267.htm.
[3]朱利民,侯志勇.關(guān)于高?!禖語言程序設(shè)計(jì)》課程改革的探討[J].甘肅科技,2016(8):51-52.
[4]徐英慧,周淑一.《C語言程序設(shè)計(jì)》課程“三位一體式”教學(xué)模式研究[J].軟件導(dǎo)刊,2017(4):221-223.
[5]曾慶尚,高慧,梁振軍,等.C語言程序設(shè)計(jì)的實(shí)踐教學(xué)改革與探索[J].大學(xué)教育,2014(12):116-117.
[6]陳娟.從錯(cuò)誤中學(xué)習(xí):計(jì)算機(jī)程序設(shè)計(jì)課程改革實(shí)踐[J].計(jì)算機(jī)教育,2017(12):54-58.
[7]方勇.基于翻轉(zhuǎn)課堂的C語言程序設(shè)計(jì)課程教學(xué)改革初探[J].電腦知識(shí)與技術(shù),2017(15):92-93.
[8]肖巍,別梅.大學(xué)翻轉(zhuǎn)課堂教學(xué)模式實(shí)踐探索[J].長(zhǎng)春師范大學(xué)學(xué)報(bào),2017(2):112-114.
[9]胡秋霞,田杰,王娟勤,等.基于微課的“C語言程序設(shè)計(jì)”課程教學(xué)改革初探[J].教育現(xiàn)代化,2017(10):35-36.
[10]韋霞.案例教學(xué)法在C語言程序設(shè)計(jì)課程教學(xué)中的應(yīng)用——以梧州職業(yè)學(xué)院為例[J].廣西教育,2017(31):145-146.
[11]范莉莉,劉濤.SPOC模式下探索程序設(shè)計(jì)類課程省略學(xué)研究——以C語言程序設(shè)計(jì)為例[J].皖西學(xué)院學(xué)報(bào),2017(2):25-28.
[12]于延,周國(guó)輝,李紅宇,等.CDIO模式下C語言程序設(shè)計(jì)實(shí)踐教學(xué)改革[J].計(jì)算機(jī)教育,2016(2):122-126.
[13]劉斌,李書琴,韓宏.基于BOPPPS模型的C語言課程教學(xué)設(shè)計(jì)[J].教育教學(xué)論談,2017(44):248-250.
[14]王春暉,劉志國(guó),俞宗佐,等.基于MOOC平臺(tái)的混合式教學(xué)模式探索——以C語言程序設(shè)計(jì)公共課為例[J].內(nèi)蒙古師范大學(xué)學(xué)報(bào):教育科學(xué)版,2015(7):144-146.
[15]武玉升.基于Arduino的高職單片機(jī)課程教學(xué)改革[J].交通職業(yè)教育,2014(1):21-23.