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