任淑美 李寧湘 陳杰
摘 要: 為提高C語言程序設(shè)計課程的教學(xué)質(zhì)量,讓學(xué)生更好地掌握核心技能,針對課程中教學(xué)難點多、語法知識多、學(xué)生重視程度不夠等問題進行了認真分析,同時結(jié)合筆者在長期的教學(xué)實踐過程中積累的經(jīng)驗,從教學(xué)目標、教學(xué)設(shè)計、教學(xué)內(nèi)容選取、教學(xué)方法應(yīng)用、考核方式等方面進行教學(xué)改革,提出了相關(guān)的解決方案,取得了較好的教學(xué)效果,教學(xué)質(zhì)量明顯提高。
關(guān)鍵詞: C語言程序設(shè)計; 教學(xué)改革; 教學(xué)方法; 教學(xué)設(shè)計
中圖分類號:TP311.11 文獻標志碼:A 文章編號:1006-8228(2014)07-65-03
Abstract: C language programming is a common core curriculum in software technical majors of vocational colleges and the software development knowledge essence. In order to enhance the teaching quality, the problems in teaching the C language programming in several years are studied. Based on the training objectives, a teaching reform plan is presented regarding to course contents, teaching material building, teaching methods and teaching results. Corresponding solutions are provided in this article. Teaching reform has obtained good effects and the teaching quality is progressed significantly.
Key words: C language programming; teaching reform; teaching methods; teaching design
0 引言
C語言課程通常在大學(xué)新生入校的第一學(xué)期開設(shè),是學(xué)生接觸程序設(shè)計的第一門課程,學(xué)習(xí)難度大,要取得好的成績相對比較困難。如何在較短的時間內(nèi)使學(xué)生掌握C語言的基礎(chǔ)知識,獲得編程能力,達到教學(xué)目標,是進行教學(xué)改革的重點。本文對實際存在的問題進行分析,結(jié)合作者近十年的C語言課程教學(xué)經(jīng)驗,在教學(xué)設(shè)計、課程內(nèi)容組織、教學(xué)形式、教學(xué)方法和考核方式上大膽嘗試改革,積累了一些實踐經(jīng)驗,取得了不錯的教學(xué)效果。
1 C語言程序設(shè)計課程教學(xué)現(xiàn)狀及問題分析
長期以來,在“C語言程序設(shè)計”課程的教學(xué)過程中,存在著諸多影響學(xué)生學(xué)習(xí)積極性,影響教學(xué)質(zhì)量的不利因素。從主觀上來說,如教學(xué)方法陳舊、教學(xué)手段單調(diào)、學(xué)生學(xué)習(xí)積極性不高等;從客觀上而言,C語言本身也有知識點多,概念抽象,編程算法使用靈活等特點。以下綜合分析現(xiàn)存的幾個具體問題。
1.1 教學(xué)方法沒有創(chuàng)新
教學(xué)方面仍沿用老一套的理論加實驗?zāi)J?,實踐訓(xùn)練與課堂教學(xué)未能很好地連貫,理論教學(xué)與實際應(yīng)用脫節(jié)。教師的講授照本宣科,忽視培養(yǎng)學(xué)生的實踐能力和創(chuàng)新能力,較少考慮學(xué)生的實際學(xué)習(xí)狀況,提供給學(xué)生主動思考的機會不多,重點和難點把握不好,引導(dǎo)學(xué)生積極思維方面欠缺。
1.2 教學(xué)手段相對單一
在教學(xué)安排上,理論課和實驗課分離,在多媒體教室上理論課,然后過幾天再在實驗室安排實驗課,這樣對學(xué)習(xí)基礎(chǔ)和自覺性稍差的高職學(xué)生來說很不合適。C語言程序設(shè)計這門課程需要實踐教學(xué),引入真實案例,培養(yǎng)學(xué)生分析問題和解決問題的能力,通過“教、學(xué)、做”達到對知識的深入理解和熟練應(yīng)用。
1.3 學(xué)生基礎(chǔ)知識薄弱
用C語言進行程序設(shè)計需要較為靈活的思維,而高職學(xué)生數(shù)學(xué)基礎(chǔ)和邏輯思維能力較弱,習(xí)慣于死記概念、硬背知識點。教學(xué)中應(yīng)訓(xùn)練他們思考問題、分析問題和解決問題的獨立性。進而,培養(yǎng)其主動性。
1.4 概念抽象,知識點多
C語言中有大量的難以記憶和理解的概念,名詞術(shù)語多、使用靈活、邏輯性強,在使用時容易出錯。部分學(xué)生對抽象的內(nèi)容始終難以掌握,甚至思維混亂,如++i,i--等。學(xué)生在學(xué)習(xí)中對一些復(fù)雜、靈活、綜合性的算法,感到太難接受,獨立編程時不知從何入手,漸漸失去學(xué)習(xí)的興趣。
1.5 對學(xué)習(xí)重視程度不夠
教師和學(xué)生均對本課程重視不夠。有很多學(xué)生認為,這只是一門基礎(chǔ)課,在以后的學(xué)習(xí)和實際工作中作用不大,在程序設(shè)計工作崗位中很少會使用到C語言,更愿意花較多的時間去學(xué)習(xí)C++、VB、JAVA等語言,從心理上抗拒這門課程的學(xué)習(xí)。而有的學(xué)校也對本課程重視不夠,少有安排具有豐富教學(xué)經(jīng)驗的教師承擔(dān)本門課程的教學(xué)。
2 教學(xué)設(shè)計及課程內(nèi)容組織的改革與實踐
為了探究適合高職軟件技術(shù)專業(yè)人才培養(yǎng)的C語言課程教學(xué)特點,筆者經(jīng)過多年的一線教學(xué)實踐研究與探索,重新進行教學(xué)設(shè)計,對課程的設(shè)計思路是:以學(xué)生為主體,以教師為主導(dǎo),基于實際工作任務(wù)精心構(gòu)建課程內(nèi)容,通過項目驅(qū)動、任務(wù)引領(lǐng)的模式培養(yǎng)學(xué)生的程序設(shè)計能力。
2.1 教學(xué)設(shè)計
從分析學(xué)生的基本特點入手,融入現(xiàn)代教育理念,重新進行課程的教學(xué)設(shè)計。本著“以學(xué)生為主體,以教師為主導(dǎo),以實際案例為主線”的教學(xué)基本原則,積極鼓勵學(xué)生通過“認知、理解、應(yīng)用、綜合”四個階段的學(xué)習(xí),達到使用C語言熟練編寫程序的學(xué)習(xí)目標。
2.1.1 以學(xué)生為主體
教學(xué)以學(xué)生為主體,變常規(guī)的“教學(xué)”為創(chuàng)新的“導(dǎo)學(xué)”。充分利用現(xiàn)代化的教學(xué)設(shè)備提供學(xué)習(xí)資源,發(fā)揮學(xué)生的主體作用,提出問題,引導(dǎo)學(xué)生分析問題和解決問題。
對于第一次接觸程序設(shè)計的學(xué)生,其編程訓(xùn)練應(yīng)從小程序和一些簡單問題起步,通過一些常用的經(jīng)典算法和相應(yīng)的案例學(xué)習(xí),逐步掌握編程方法,待有了一定的知識儲備后,再逐漸加大練習(xí)的難度,實現(xiàn)從算法到程序代碼的轉(zhuǎn)化,使學(xué)生能夠?qū)⒁粋€實際問題描述為一個計算機算法,然后再編寫相應(yīng)的程序代碼。
2.1.2 以教師為主導(dǎo)
教師課前要了解學(xué)生的基本學(xué)習(xí)情況,了解其已有的知識結(jié)構(gòu)和技能,根據(jù)學(xué)生的實際情況設(shè)計教學(xué)環(huán)節(jié),根據(jù)知識點設(shè)置可擴散思維的問題,有重點地講解,引導(dǎo)學(xué)生積極思維和主動學(xué)習(xí)。對于少數(shù)學(xué)習(xí)特別優(yōu)秀且自學(xué)能力強的學(xué)生,可適當加快教學(xué)引導(dǎo),增加學(xué)習(xí)難度和深度,這樣可以在學(xué)生中樹立榜樣,帶動其他學(xué)生自覺利用所學(xué)知識解決相關(guān)問題,提高學(xué)習(xí)質(zhì)量[1]。
從第一次課開始,教師就要引導(dǎo)學(xué)生主動學(xué)習(xí)。選取的素材可以是當前最熱門的IT話題,也可以從不同的專業(yè)角度和實際應(yīng)用為學(xué)生介紹學(xué)習(xí)本課程的意義和作用,同時介紹一些歷屆學(xué)生參加省級和國家級的程序設(shè)計競賽所取得的成績,列舉一些學(xué)生被選拔到知名企業(yè)實習(xí)的例子,如微軟實習(xí)生等,引導(dǎo)學(xué)生對學(xué)習(xí)本門課程產(chǎn)生較大的興趣。
2.1.3 以實際案例為主線
教學(xué)中引入實際案例,根據(jù)解決案例中的問題需要的知識結(jié)構(gòu)選取教學(xué)內(nèi)容,以實際編寫解決問題的程序代碼作為學(xué)習(xí)的主線。選用的案例如:“計算機三角形的周長和面積”、“計算機模擬抽獎”、“競賽現(xiàn)場評分統(tǒng)計”等,選擇案例的難度要形成一個梯度,隨著學(xué)習(xí)的深入,學(xué)生的編程能力增強,逐漸形成系統(tǒng)化的程序設(shè)計思維。
常規(guī)的程序設(shè)計課程通常都注重語句、語法,以程序設(shè)計語言自身的體系展開,學(xué)生學(xué)習(xí)時難免會感覺枯燥難學(xué),學(xué)過后又少有用來解決實際問題。而以實際案例貫穿整個教學(xué)過程,訓(xùn)練學(xué)生像程序員一樣思考問題,使之邏輯思維更加嚴密,有利于學(xué)生整體素質(zhì)的提高,更有利于程序設(shè)計課程整體教學(xué)水平的提高[1]。
2.2 課程內(nèi)容組織
2.2.1 課程內(nèi)容選取的基本原則
教學(xué)改革首要任務(wù)是教學(xué)內(nèi)容的選擇,如何選取教學(xué)內(nèi)容是改革的第一步?!癈語言”的語法結(jié)構(gòu)復(fù)雜,對初學(xué)者學(xué)習(xí)難度大。高職學(xué)生雖然學(xué)習(xí)基礎(chǔ)比本科生略差,卻樂于動手、可塑性較強?;诖耍n程內(nèi)容選取的原則是:根據(jù)學(xué)生情況、課程特點以及后續(xù)課程對知識結(jié)構(gòu)的要求,從實際工作需要出發(fā),按所學(xué)知識夠用好用的標準,確定本課程的必修內(nèi)容。
2.2.2 課程內(nèi)容的選取
本課程選擇具有實際應(yīng)用的典型案例作為具體的教學(xué)內(nèi)容。將多個小項目按照編寫程序的難易程度漸次推出,使學(xué)生把所學(xué)內(nèi)容緊密結(jié)合實際應(yīng)用,在基于工作過程的學(xué)習(xí)中獲得職業(yè)能力。本課程具體內(nèi)容的選取如表1[2]。
3 教學(xué)形式及教學(xué)方法的改革與實踐
3.1 教學(xué)形式
⑴ 根據(jù)C語言知識結(jié)構(gòu)的內(nèi)在聯(lián)系,依次安排教學(xué)內(nèi)容。以各個小項目的開發(fā)工作主導(dǎo)教學(xué)過程,將課堂學(xué)習(xí)和工作過程學(xué)習(xí)融為一個整體。
⑵ 運用項目導(dǎo)向、任務(wù)驅(qū)動的方式,設(shè)計課程引入、啟發(fā)、講解、討論、實訓(xùn)等過程,采用教學(xué)做一體化的形式帶動學(xué)生自主學(xué)習(xí),通過工作任務(wù)進行能力訓(xùn)練。
⑶ 在每個學(xué)習(xí)單元中均將應(yīng)掌握的知識融入項目開發(fā)任務(wù)中,進而轉(zhuǎn)化為學(xué)習(xí)任務(wù),激發(fā)學(xué)生的學(xué)習(xí)興趣,讓學(xué)生在主動學(xué)習(xí)中完成各個任務(wù)。學(xué)習(xí)過程中注重教、學(xué)、做相結(jié)合,從講解、演示、練習(xí)、討論,遞進到學(xué)生自主學(xué)習(xí)、獨立完成任務(wù)。
⑷ 教學(xué)過程中注重學(xué)生能力的培養(yǎng)。如自主學(xué)習(xí)能力及獨立思考、分析問題、解決問題的能力等。
3.2 教學(xué)方法
為確保課程教學(xué)目標的實現(xiàn),讓學(xué)生通過學(xué)習(xí)高級編程語言的知識,能夠使用C語言編寫應(yīng)用程序,同時培養(yǎng)學(xué)生程序設(shè)計的思維能力以及探索創(chuàng)新的能力,我們在教學(xué)中引入了多種方法進行改革,取得了不錯的教學(xué)效果。
3.2.1 分析案例,啟發(fā)引導(dǎo), 增強學(xué)習(xí)興趣
每一次上課都引入一個實際案例。教師對案例進行分析,講解案例中涉及的知識點,然后提出相關(guān)問題,給出初步解決方案。比如遞歸算法一直是C語言教學(xué)中的難點,通過分析如“掃雷游戲”這樣學(xué)生比較有興趣的問題來講解算法的構(gòu)造, 學(xué)生較容易理解遞歸算法的工作框架及流程。講解二維數(shù)組也是通過“學(xué)生成績計算與統(tǒng)計”這個項目來完成的。通過具體的案例分析, 既能把抽象問題具體化,又可以調(diào)動學(xué)生的學(xué)習(xí)興趣,較快接受新知識[3]。
3.2.2 知識講解與應(yīng)用并重,訓(xùn)練程序設(shè)計思維模式
講解C語言的知識點時,不能只側(cè)重于簡單的語法知識介紹,還應(yīng)注重知識的連貫,同時輔以相應(yīng)的應(yīng)用技能訓(xùn)練,以免學(xué)生死記語法而忽略了程序設(shè)計方法。強化“自頂向下、逐步細化分解”的程序設(shè)計思維訓(xùn)練,培養(yǎng)學(xué)生在編寫復(fù)雜代碼之前能將復(fù)雜的問題分解為若干個邏輯結(jié)構(gòu)合理的簡單算法的能力,探索解決問題的方法。
3.2.3 “教、學(xué)、做”一體化
“教、學(xué)、做”一體化的教學(xué)方法,符合學(xué)生的認知規(guī)律,適合運用于項目導(dǎo)向式的案例教學(xué)。課堂上教師注重把握好“應(yīng)用為主線,減少抽象理論描述”的原則,將“精講多練,以教師為主導(dǎo),以學(xué)生為主體”的教學(xué)設(shè)計理念貫穿于整個教學(xué)過程。注重調(diào)動學(xué)生的學(xué)習(xí)積極性,啟發(fā)學(xué)生勤思考、多動手,充分利用好學(xué)生的“聽、思、做、練”各個階段,及時檢查思和練的效果,培養(yǎng)學(xué)生求真務(wù)實的科學(xué)精神[4]。
3.2.4 分組討論,培養(yǎng)團隊協(xié)作能力
對于難度不大的學(xué)習(xí)內(nèi)容,可安排學(xué)生自學(xué),而對于綜合性較強的學(xué)習(xí)內(nèi)容,則可以安排學(xué)生分組進行討論。自學(xué)和討論的結(jié)果由學(xué)生在課堂上向同學(xué)講述,讓每個學(xué)生都有積極參與的興趣,這樣既能活躍課堂氣氛,又能培養(yǎng)學(xué)生的自學(xué)能力和團隊協(xié)作精神[5]。
3.2.5 課內(nèi)外訓(xùn)練相結(jié)合,培養(yǎng)學(xué)生綜合應(yīng)用能力
課內(nèi)教師進行引導(dǎo)教學(xué),通過典型案例講解程序設(shè)計的基本方法、程序測試方法、程序調(diào)試和排錯糾錯方法,并為每次課設(shè)計相應(yīng)的實訓(xùn)項目。課內(nèi)時間有限,鼓勵學(xué)生課外進行自主學(xué)習(xí),將課堂上學(xué)習(xí)過的內(nèi)容融會貫通,充分地消化和吸收。安排有一定挑戰(zhàn)性的實訓(xùn)項目,鼓勵學(xué)生課外多訓(xùn)練,倡導(dǎo)學(xué)生課后以寢室為單位,組成學(xué)習(xí)小組,進行討論、分析和解決問題。鼓勵學(xué)生積極參加各類程序設(shè)計比賽,以賽促學(xué)。如參加廣東省舉辦的“高校杯”程序設(shè)計比賽,進一步提高學(xué)生程序設(shè)計的興趣,提升綜合應(yīng)用能力。
4 考核方式的改革與實踐
考核采用閉卷上機編程和實訓(xùn)項目答辯相結(jié)合的形式。
4.1 閉卷上機考試
上機測試占總成績的70%,考核基本知識的掌握情況。主要考核基本語法、常用算法、編寫小型程序、測試小型程序和解決一般問題的能力。
教師根據(jù)考核要求給出7個編程題,讓學(xué)生任選5個。題目涵蓋基礎(chǔ)知識的80%以上,對每個編程題提出具體要求,如使用冒泡法排序、使用選擇法排序、使用函數(shù)、使用指針等非常具體的要求,以較為全面的考核學(xué)生對知識的掌握情況。
4.2 實訓(xùn)項目答辯
實訓(xùn)項目答辯占總成績的30%,考核學(xué)生運用知識的能力、綜合程序設(shè)計的能力、分析問題和解決問題的能力,以及團隊合作能力。以下給出具體實施方法。
⑴ 教師給出8-10個實訓(xùn)項目,供學(xué)生任意選擇一項。
⑵ 學(xué)生5-6人為一組,在給定的項目中選擇一項,也可以自行擬定其他的項目。
⑶ 成立答辯小組。答辯小組由任課教師、課代表和各小組指派的一名同學(xué)組成。
⑷ 答辯時,先由各小組指派一名同學(xué)對他們的項目設(shè)計進行講解,然后小組其他成員接受答辯小組的提問。
⑸ 成績由答辯小組各成員現(xiàn)場打分,分數(shù)統(tǒng)計后去掉最高分和最低分,取平均值記入小組每個成員的成績表。
這樣的考核方式,有利于學(xué)生靈活運用所學(xué)知識,有利于創(chuàng)新思維的培養(yǎng)。
5 結(jié)束語
通過改進課程教學(xué)方法、重新序化教學(xué)內(nèi)容、不斷完善教學(xué)手段、改進考核方式等教學(xué)改革,有效提高了學(xué)生主動學(xué)習(xí)的積極性。以往不及格率最高的C語言課程,近三年的及格率均在90%以上,30%以上的學(xué)生獲得了優(yōu)秀,對于課程設(shè)計絕大多數(shù)學(xué)生都完成得很好。我校大一學(xué)生在2013年的“藍橋杯”全國軟件專業(yè)人才設(shè)計與創(chuàng)業(yè)大賽中取得了一、二等獎的好成績,這從一個側(cè)面驗證了教學(xué)改革是卓有成效的。
雖然高職院校對基礎(chǔ)核心課程不斷提高重視程度,但C語言程序設(shè)計課程的教學(xué)方法、教學(xué)內(nèi)容、考核方式的研究和改革是一個長期的課題,必須與時俱進,在教學(xué)實踐中不斷探索新思路。
參考文獻:
[1] 魯紅英,肖思和,孫淑霞.“C/C++語言程序設(shè)計”課程教學(xué)改革與實踐[J].計算機教育,2013.7:95-98
[2] 康玉忠,甘宏,段傳林.C語言程序設(shè)計項目教程(第1版)[M].中國商業(yè)出版社,2010.
[3] 李杰,劉延嶺,蘇建華.C程序設(shè)計課程教學(xué)方法的實踐與探索[J].計算機與網(wǎng)絡(luò),2014.1:127
[4] 董淑娟.高職“C#程序設(shè)計”課程教學(xué)方案研究[J].教育與職業(yè),2012.20:125-127
[5] 袁學(xué)倩.《C語言程序設(shè)計》課程教學(xué)改革的探討[J].職校論壇,2012.21:137-138