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