【摘要】本文針對民族院校工科專業(yè)《C語言程序設(shè)計》課程教學(xué)中出現(xiàn)一些問題,諸如教師難教、學(xué)生難學(xué)、學(xué)習(xí)主動性不高、不能學(xué)以致用等,在教學(xué)內(nèi)容、教學(xué)方法、學(xué)業(yè)評價方式等方面進(jìn)行了全面改革探索。教學(xué)實踐表明,改革方案能較大幅度的調(diào)動學(xué)生學(xué)習(xí)積極性,增強(qiáng)學(xué)生的邏輯思維能力和編程能力,較大幅度提高了學(xué)生的學(xué)習(xí)成績。
【關(guān)鍵詞】C語言程序設(shè)計 教學(xué)改革 教學(xué)方式 學(xué)業(yè)評價
【中圖分類號】G642.0 【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2018)22-0236-02
1.引言
為了培養(yǎng)滿足社會需求的具備信息技術(shù)素養(yǎng)的復(fù)合型人才,高校畢業(yè)生不但要具備一定的計算機(jī)基礎(chǔ)知識,而且具備一定的計算機(jī)程序設(shè)計基礎(chǔ)。計算機(jī)程序設(shè)計語言種類較多,如匯編語言,BASIC、LOGO、PASCAL、FORTRAN、C、C++、Java等語言體系。由于C語言具有簡潔緊湊、靈活方便、運(yùn)算符和數(shù)據(jù)結(jié)構(gòu)較為豐富、結(jié)構(gòu)化程度高、程序執(zhí)行效率高、可移植性好、能對硬件直接操作等諸多優(yōu)點(diǎn),近年來備受人們青睞。目前大多數(shù)高校理工科專業(yè)的計算機(jī)程序設(shè)計語言課程,都把C語言程序設(shè)計作為首選。
C語言雖然具有諸多優(yōu)點(diǎn)和廣闊的應(yīng)用領(lǐng)域,然而,由于其語法靈活,運(yùn)算符非常豐富,學(xué)生普遍感到枯燥難學(xué),加之非計算機(jī)專業(yè)該課程課時明顯偏少,更增加了這門課的教與學(xué)的難度。針對這種現(xiàn)象,高校教育工作者在教學(xué)改革方面做了許多工作。盧向群(2007)[1]通過重點(diǎn)抓學(xué)生創(chuàng)新精神、自主及合作能力的培養(yǎng),靈活安排教學(xué)內(nèi)容等環(huán)節(jié),提高學(xué)生程序設(shè)計課程的創(chuàng)新能力;李學(xué)俊等(2010)[2]提出一種新的啟發(fā)式方法——問題誘導(dǎo)啟發(fā)式程序設(shè)計語言教學(xué)方法;祁昌平和高彩霞(2014)[3]將遷移理論應(yīng)用到該課程的教學(xué)中;曹惠雅和王峰(2014)[4]將計算思維的思想應(yīng)用到C語言教學(xué)中,給出了以計算思維為核心的教學(xué)模式;陳益等人(2014)[5]針對不同知識結(jié)構(gòu)采用多種教學(xué)方法靈活運(yùn)用教學(xué)相長,激發(fā)和挖掘?qū)W生的學(xué)習(xí)興趣和動力;薛冰冰和李敏(2014)[6]提出了在該課程教學(xué)中采取問題導(dǎo)向為主,逐層深入為輔,循序漸進(jìn)地轉(zhuǎn)換學(xué)生的學(xué)習(xí)目標(biāo),在潛移默化中培養(yǎng)學(xué)生的編程能力;楊柳和鐘誠(2014)[7] 從重視第一課堂,采用多樣化的教學(xué)手段以培養(yǎng)學(xué)生自主學(xué)習(xí)能力,強(qiáng)化算法以訓(xùn)練學(xué)生的編程思維能力等方面討論了C語言教學(xué)的新思路。
以上的研究成果在一定程度上豐富了C語言程序設(shè)計課程的教學(xué)實踐經(jīng)驗,為我們的教學(xué)改革提供的線索,給出了啟示。然而,可以發(fā)現(xiàn),以上研究成果有的是針對計算機(jī)專業(yè)的學(xué)生,有的雖然是針對非計算機(jī)專業(yè)的學(xué)生,但僅從問題的某一方面進(jìn)行改革探索,得到的經(jīng)驗普適性較差,對于我校這樣的民族院校不一定適用。
民族院校學(xué)生基礎(chǔ)普遍比較薄弱,學(xué)習(xí)積極性不高,工科學(xué)生數(shù)學(xué)基礎(chǔ)不太扎實,《C語言程序設(shè)計》課時普遍偏少(以我校為例,全部學(xué)時僅為48)。因此,針對民族院校的非計算機(jī)類工科專業(yè),有必要對該課程從教材、教學(xué)大綱、學(xué)時分配、課堂教學(xué)、上機(jī)實踐、學(xué)業(yè)評價等方面進(jìn)行系統(tǒng)地改革探索,找出一套合理的教學(xué)改革方案,調(diào)動學(xué)生學(xué)習(xí)的積極性,增強(qiáng)學(xué)生的編程能力,為后續(xù)有關(guān)課程的學(xué)習(xí)奠定基礎(chǔ)。
2.教學(xué)內(nèi)容改革
目前《C語言程序設(shè)計》課程的教材較多,其中以譚浩強(qiáng)所著的《C語言程序設(shè)計》[8]比較經(jīng)典,已經(jīng)過多次改編和再版,為大多數(shù)高校選用的教材。我校在教學(xué)中也選用這本教材。經(jīng)過多年的教學(xué)發(fā)現(xiàn),該教材雖然內(nèi)容豐富全面,注重實例引入,由淺入深,容易理解。然而,教材中所舉例子比較陳舊,有些例子過于繁雜,語法知識偏多,不完全適合于民族院校學(xué)生的特點(diǎn),特別是非計算機(jī)類工科專業(yè)。
因此,在教學(xué)中,對教學(xué)內(nèi)容進(jìn)行一定的改革探索,給出以下幾點(diǎn)建議:
(1)教學(xué)中要注意重點(diǎn)突出,詳略得當(dāng)
由于民族院校學(xué)生基礎(chǔ)相對比較薄弱,課時量不足,教學(xué)時切忌面面俱到,追求體系完整。否則教學(xué)中會出現(xiàn)蜻蜓點(diǎn)水、走馬觀花的現(xiàn)象,學(xué)生無法理解掌握所學(xué)的知識和編程技巧。教學(xué)中不必片面追求所教知識系統(tǒng)的完整性,應(yīng)該將精力放在核心內(nèi)容和知識點(diǎn)上,要求學(xué)生重點(diǎn)掌握基本的語法知識、算法思想和三種基本結(jié)構(gòu)的程序設(shè)計上,而對數(shù)組、函數(shù)和指針等內(nèi)容可以略講,有的內(nèi)容可以不講。
(2)替換一些與專業(yè)相關(guān)的例題和習(xí)題
教材中部分例題比較經(jīng)典,可以保留。但部分例題和習(xí)題比較陳舊或繁雜,與所學(xué)專業(yè)沒有任何聯(lián)系,應(yīng)該予以替換。但由于該課程一般放在大學(xué)一年級進(jìn)行,這時學(xué)生基本上還未接觸多少專業(yè)知識,因此只能設(shè)計一些專業(yè)領(lǐng)域比較淺顯易懂的題目,不宜過難,目的是增強(qiáng)學(xué)生的學(xué)習(xí)積極性。
(3)理論知識和上機(jī)編程并重
《C語言程序設(shè)計》是一門理論和實踐相結(jié)合的課程,教學(xué)中切忌片面強(qiáng)調(diào)理論知識或上機(jī)編程。教學(xué)時,理論和上機(jī)課時比例一般為1:1,如果選擇在機(jī)房上課,可以在上完一小節(jié)理論課后馬上讓學(xué)生動手練習(xí),或者一邊進(jìn)行理論教學(xué),一邊進(jìn)行上機(jī)編程,效果較好。因此,教學(xué)中應(yīng)該精心設(shè)計教學(xué)內(nèi)容,基本滿足一大節(jié)課(兩小節(jié))教學(xué)內(nèi)容(包括理論和上機(jī))的完整性。
(4)通過實例引入語法知識
C語言語法知識相對比較枯燥,如果一開始就講語法知識,然后講其應(yīng)用,無法引起學(xué)生的興趣。在教學(xué)中可先舉一個包含所講語法知識的實例,按照從算法設(shè)計、程序流程圖到上機(jī)編程的順序進(jìn)行講授,然后將用到的語法知識進(jìn)行講解,這樣會吸引學(xué)生的注意力,將所教的語法知識學(xué)好。
(5)重視算法在編程中的作用
諸多關(guān)于C語言方面的教材一般重視語法講授和編程實踐,但對算法缺乏足夠的重視。算法是程序的靈魂,編程時,尤其是編一個較為復(fù)雜的程序時,應(yīng)該先設(shè)計好算法,給出程序流程圖,然后再根據(jù)流程圖進(jìn)行編程。就如建一座高樓一樣,先應(yīng)該設(shè)計好圖紙,再進(jìn)行施工。因此,在教學(xué)內(nèi)容中,應(yīng)該給予算法相應(yīng)的比重,對于編程問題,應(yīng)該根據(jù)需要,先設(shè)計相應(yīng)的算法,如偽代碼、流程圖、N-S圖,讓學(xué)生養(yǎng)成先設(shè)計算法,再進(jìn)行編程的習(xí)慣。
3.教學(xué)方法改革
根據(jù)民族院校工科學(xué)生的特點(diǎn),結(jié)合《C語言程序設(shè)計》課程本身的一些特點(diǎn),并參考近年來關(guān)于該課程教學(xué)方法改革的一些文獻(xiàn)資料,在教學(xué)中采用了以下一些方法:
(1)分組討論法
將每班學(xué)生分成若干組,一般每組4-5人,每個小組選一名組長。課堂提問和上機(jī)編程時,每個小組內(nèi)部可進(jìn)行充分討論并互相分工協(xié)作,然后選一名代表進(jìn)行回答或上講臺將自己小組的程序進(jìn)行講解,并按小組記分。這樣,一方面培養(yǎng)學(xué)生的語言表達(dá)能力和編程能力,另一方面,也養(yǎng)成了學(xué)生分工協(xié)作和互相幫助的習(xí)慣,培養(yǎng)了學(xué)生的集體榮譽(yù)感。
(2)任務(wù)驅(qū)動法
在教學(xué)中,有意識的引入任務(wù)驅(qū)動法,可起到事半功倍的效果。如講解循環(huán)結(jié)構(gòu)程序設(shè)計時,可以給出以下任務(wù):
1+2+3+…+100.
先簡單介紹以下這個任務(wù)的背景:當(dāng)年數(shù)學(xué)家高斯在上小學(xué)時因為同學(xué)們淘氣惹惱了老師,老師隨即布置了以上任務(wù)給同學(xué)們,誰先完成,誰就可以先回家。當(dāng)年小高斯用技巧很快完成了這道題。然后,把上述任務(wù)重新展示給同學(xué)們,讓同學(xué)們利用計算機(jī)編程計算。
不同同學(xué)可能有不同的計算思路,有的同學(xué)可能利用等差數(shù)列求和公式計算,有的同學(xué)逐次求和進(jìn)行計算。提示:由于計算機(jī)是不怕重復(fù)計算的,后一種方法正好符合計算機(jī)的特點(diǎn)。但編程時,如果逐個求和,將以上式子全部寫出來,程序?qū)⒎浅H唛L,效率非常低。如何用簡潔的方法進(jìn)行計算?在此基礎(chǔ)上很自然引入循環(huán)語句。
算完上述式子后,再布置以下任務(wù):
1+3+5+…+99
200+198+197+…+100
1·2·3…·100
讓學(xué)生在不斷完成設(shè)定的任務(wù)中熟悉循環(huán)語句的用法。這樣,學(xué)生很自然的就會掌握了所學(xué)知識。
(3)情景教學(xué)法
每一個編程題目都應(yīng)該根據(jù)身邊的實際問題或者專業(yè)領(lǐng)域有關(guān)問題進(jìn)行設(shè)計,而不能照本宣科。如果僅將事先編好的程序在PPT上展示一下,講解一下就完事,這樣的教學(xué)效果是可想而知的。應(yīng)該根據(jù)問題先分析問題的解決辦法,設(shè)計算法,逐條編制程序,包括變量的類型定義、使用,數(shù)據(jù)的輸入輸出,關(guān)鍵語句的選用等等,都要在編制程序過程中予以介紹。只有這樣,才能讓師生身臨其境,一起來解決相關(guān)問題,感受到解決問題的快樂。以下舉例說明。
如人口增長預(yù)測問題。2005年末中國人口為130756萬人,如果人口的年增長率為1%,到哪一年中國人口將超過15億? 1000年以后中國的人口呢?
首先,指出這個問題是關(guān)于中國人口的問題,與同學(xué)們息息相關(guān),讓同學(xué)們不僅學(xué)習(xí)編程,更在得到計算結(jié)果后,對人口增長的現(xiàn)實問題有深刻的認(rèn)識。
其次,給出人口增長的計算公式。設(shè)原來人口為p0,年人口增長率為r,則n年后的人口為:
pn=p0(1+r)n
然后,根據(jù)上述計算公式設(shè)計算法流程圖(N-S圖)如下:
最后,上機(jī)編程。上機(jī)演示編程時,由于在機(jī)房授課,可讓同學(xué)們一起打開編程軟件(VC++), 和教師一起編程。(1)提示要輸入預(yù)編譯命令#include
4.學(xué)業(yè)評價改革
目前《C語言程序設(shè)計》課程學(xué)業(yè)評價體系的不合理,在一定程度上影響了學(xué)生的學(xué)習(xí)主動性和積極性。如重視理論考試,輕上機(jī)實踐,重視終結(jié)性考核,而輕視平時性考核。這就導(dǎo)致了學(xué)生平時不認(rèn)真上課和學(xué)習(xí),也不重視上機(jī)實踐,在考試前臨時突擊一下就行了。結(jié)果學(xué)生真正的編程能力并沒有培養(yǎng)起來。因此,針對民族院校工科學(xué)生的特點(diǎn),制定了合理的學(xué)業(yè)評價改革方案,把過程性評價和終結(jié)性評價放在同等重要的地位上。而過程性評價包括出勤、課堂表現(xiàn)、平時作業(yè)、平時測驗、實驗成績、自學(xué)報告、課程設(shè)計等方面,每一方面都予以量化。終結(jié)性評價包括理論考試成績。
我們在教學(xué)實踐中,加大了過程評價在整個學(xué)業(yè)評價中所占比例,其中過程評價和終結(jié)評價所占比例各占50%。過程評價成績(P)及終結(jié)評價成績(F)都按百分制計算(即滿分為100分),總評成績(T)= (P+F)/2。過程評價成績(P)由以下幾部分組成:
1)出勤(P1): 10分,主要包括課堂教學(xué)、作業(yè)輔導(dǎo)、上機(jī)實驗等的考勤,缺勤一次扣 1 分,遲到兩次扣 1 分,請假 4 次扣 1 分,扣完為止。
2)課堂表現(xiàn)(P2) :10 分,主要包括回答問題(6分),課堂紀(jì)律遵守情況(4分),如發(fā)現(xiàn)睡覺、玩手機(jī)、交頭接耳現(xiàn)象,發(fā)現(xiàn)一次扣1分,扣完為止。
3)作業(yè)成績(P3):15 分,主要考查書面作業(yè)完成情況,每次批改作業(yè)按完成情況給 A、B 、C 、D 四個等級,其中 D 為不交作業(yè)情形,最后匯總。
4)自學(xué)情況匯報(P4):5分,布置選學(xué)內(nèi)容,讓學(xué)生自學(xué)并提交學(xué)習(xí)報告,根據(jù)情況給分。
5)實驗成績(P5):40分,主要考查學(xué)生的編程能力能力,可分小組(每組4-5人)進(jìn)行2-4次編程測試,每組選一個代表進(jìn)行講解,根據(jù)講解情況當(dāng)場按小組打分。
6)平時上機(jī)測驗(P6):10分,每次在上機(jī)實驗課可根據(jù)同學(xué)們編程程度不同,給定給 A、B 、C 、D 四個等級,最后匯總。
7)學(xué)生互評(P7):10 分,組織學(xué)生進(jìn)行分組互評,在每個小組內(nèi)部給出A、B、C、D四個等級,然后根據(jù)等級給出合適的成績。
終結(jié)評價成績即為期末考試卷面成績。綜上,學(xué)業(yè)評價總評成績的計算方式為:
T=(P1+P2+P3+P4+P5+P6+P7+F)/2
5.結(jié)語
本文針對民族院校工科專業(yè)《C語言程序設(shè)計》課程,在教學(xué)內(nèi)容、教學(xué)方法、學(xué)業(yè)評價方式等方面進(jìn)行了全面改革探索,得到了比較系統(tǒng)的教學(xué)改革方案,并在本校2016級水利水電工程本科生中進(jìn)行實施。教學(xué)實踐表明,改革方案能較大幅度的調(diào)動學(xué)生學(xué)習(xí)積極性,增強(qiáng)學(xué)生的邏輯思維能力和編程能力能力,成績顯著。今后,將進(jìn)一步完善該課程的教學(xué)改革方案,將其推廣到民族院校其他非計算機(jī)類工科專業(yè)《C語言程序設(shè)計》的教學(xué)中。
參考文獻(xiàn):
[1]盧向群. 程序設(shè)計語言課程創(chuàng)新能力培養(yǎng)探析. 中央民族大學(xué)學(xué)報(自然科學(xué)版):2007,(2):185-188.
[2]李學(xué)俊,李龍澍,徐怡.問題誘導(dǎo)式程序設(shè)計語言教學(xué)方法. 計算機(jī)教育, 2010,(16):44-47.
[3]祁昌平, 高彩霞. 遷移理論在“C程序設(shè)計”教學(xué)中的應(yīng)用. 河西學(xué)院學(xué)報, 2014,(5):118-211.
[4]曹惠雅,王峰. 論C語言教學(xué)中計算思維的應(yīng)用. 教育教學(xué)論壇, 2014, (28): 278-279.
[5]陳益,楊曉艷,童亞拉. “721”人才培養(yǎng)模式下C語言程序設(shè)計學(xué)習(xí)興趣的構(gòu)建. 教育教學(xué)論壇, 2014,(6):271-272.
[6]薛冰冰,李敏. 基于問題導(dǎo)向的C語言程序設(shè)計教學(xué)改革與探索. 教育教學(xué)論壇, 2014, (45):142-144.
[7]楊柳,鐘誠.C語言教學(xué)新思路. 大眾科技,2014,(5):168-169.
[8]譚浩強(qiáng).C語言程序設(shè)計(第二版).北京:清華大學(xué)出版社, 2008.
作者簡介:
景何仿(1969,6-),男,教授,甘肅岷縣人,研究方向為計算流體力學(xué)。