摘 要:本文針對獨立學(xué)院學(xué)生C語言編程能力培養(yǎng)的問題進行了研究,以發(fā)揮學(xué)生的主動性、積極性為核心,從教學(xué)方法、后續(xù)教育、考核方式等方面進行了多樣化的嘗試與探索。
關(guān)鍵詞:編程能力 在線考試系統(tǒng) 后續(xù)教育
中圖分類號:G642 文獻標識碼:A 文章編號:1673-9795(2014)04(b)-0073-02
《C語言程序設(shè)計》課程作為大學(xué)通識教育計算機公共基礎(chǔ)的核心課程,是大學(xué)生學(xué)習(xí)程序設(shè)計知識的入門課程。這門課程的學(xué)習(xí)效果直接影響學(xué)生對其他專業(yè)課程的學(xué)習(xí),是許多后續(xù)課程的重要基礎(chǔ),更是各種工程專業(yè)綜合運用本專業(yè)知識、開展相關(guān)研究的重要表達工具和開發(fā)工具。例如,土木工程、機電一體化、自動化等專業(yè)。對于工程專業(yè)的學(xué)生,具備了C語言編程能力才能在以后的學(xué)習(xí)和研究中針對專業(yè)問題,建立數(shù)學(xué)模型,利用計算機這一工具,以及各種軟件更好地從事專業(yè)領(lǐng)域的創(chuàng)新研究。
目前,獨立學(xué)院學(xué)生C語言編程能力培養(yǎng)存在比較嚴重的問題,最主要體現(xiàn)在大學(xué)生編程應(yīng)用能力不足。造成這種問題的具體原因有以下幾個方面:
(1)教學(xué)模式落后。采用傳統(tǒng)的主教學(xué)法即提出概念——解釋概念——舉例說明。
(2)教學(xué)后續(xù)不繼。傳統(tǒng)的課堂教學(xué)對學(xué)生的引導(dǎo)不夠,學(xué)生的主體地位得不到保障。除課堂的編程教育外,其他時間主要靠學(xué)生個人自覺。但獨立學(xué)院學(xué)生自覺性普遍較差,即使課堂教育質(zhì)量再好,后續(xù)鞏固不夠,培養(yǎng)效果也不理想。
(3)考試方式不合理。《C語言程序設(shè)計》是一門實踐性非常強的課程,筆試不能反映學(xué)生理解、掌握、應(yīng)用C語言知識的實際情況,需要對考核內(nèi)容和形式做適當調(diào)整。
針對這些問題,我校啟動了一系列項目進行研究,設(shè)立了校級教改項目:《C語言在線考試系統(tǒng)》。C語言在線考試系統(tǒng)是“2013年度陜西民辦本科院校、獨立學(xué)院教學(xué)改革研究項目——獨立學(xué)院信息類專業(yè)學(xué)生編程能力培養(yǎng)研究”的子課題。該系統(tǒng)的設(shè)計主要是針對提高C語言編程能力進行的,其主要功能著重于編程題的練習(xí),對編寫正確的代碼進行代碼行統(tǒng)計以及在線考試。
以提升學(xué)生的編程能力為目標,以發(fā)揮學(xué)生的主動性、積極性為核心,從教學(xué)方法、后續(xù)教育、考核方式等方面對編程能力的培養(yǎng)進行了多樣化的嘗試與探索,取得了較好的效果。
1 提高教學(xué)質(zhì)量
1.1 推行“問題式”教學(xué)法
“問題式”教學(xué)法,是一種以教師設(shè)置問題為出發(fā)點,以學(xué)生思考解決問題,教師重點講解與點撥,使學(xué)生掌握新知識的教學(xué)法。按照“問題式”教學(xué)法的思想,教師在教學(xué)過程中要精心組織多種方式、多種目的、多種層次的問題。[1]教師可以自問自答,作為問題或一段內(nèi)容的引入,避免交代式的講解;還可以提出問題并要求學(xué)生作出判斷并回答,讓學(xué)生明白:新知識的提出是為了解決當前遇到的問題。
例如,學(xué)習(xí)結(jié)構(gòu)體時,利用6位同學(xué)的信息管理程序來闡述結(jié)構(gòu)體的知識點。這些內(nèi)容同學(xué)熟悉,比較感興趣,在此基礎(chǔ)上,逐漸增加該程序的難度,利用前面所學(xué)函數(shù)知識,進行學(xué)生成績的查詢、統(tǒng)計、求平均值等的管理;學(xué)習(xí)文件的應(yīng)用時,通過實現(xiàn)將學(xué)生的信息保存到磁盤文件以及從磁盤文件中讀入學(xué)生信息進行處理的程序,使學(xué)生掌握有關(guān)文件操作函數(shù)的使用[2]。相關(guān)內(nèi)容學(xué)習(xí)結(jié)束后,一個簡單的學(xué)生信息管理系統(tǒng)程序設(shè)計就完成了。
“問題式”教學(xué)法的正確使用對于強化學(xué)生學(xué)習(xí)的興趣,調(diào)動學(xué)生的主觀能動性,培養(yǎng)學(xué)生的創(chuàng)新能力有積極作用。
1.2 建設(shè)習(xí)題庫
提高編程能力首先是培養(yǎng)編程思維,即養(yǎng)成以程序的方式思考問題。正如我們?nèi)粘I钪杏谜Z言時不必去費心地組織表達方式一樣,C語言也是“語言”,是計算機語言,作為程序員對一些基本的程序邏輯應(yīng)該運用自如。[3]“程序設(shè)計是高強度的腦力勞動,不是聽會的、也不是看會的.而是練會的”。要養(yǎng)成編程思維,只有通過大量實際訓(xùn)練。開發(fā)的C語言在線考試系統(tǒng),可幫助學(xué)生進行大量的訓(xùn)練。學(xué)生登陸C語言在線考試系統(tǒng),可按章選擇題目。編譯、連接、運行正確后,系統(tǒng)自動統(tǒng)計該學(xué)生編寫程序的代碼行。
C語言在線考試系統(tǒng)的習(xí)題庫包含第一章至第十章習(xí)題以及二級C語言上機題。其中,每一章的習(xí)題含20個題目,每個題目均為編程題。期中考試自動組卷是從第一章至第五章選取試題,每章隨機抽取1個試題,考試時間為2小時;期末考試自動組卷是從第六章至第十章選取試題,每章隨機抽取1個試題,考試時間為3小時。
由于所有的試題均來自習(xí)題庫,學(xué)生為了考試能順利通過就必須把所有的習(xí)題做一遍,“逼”學(xué)生進行大量實際訓(xùn)練。
我校計算機信息與技術(shù)系學(xué)生編寫的正確代碼行達到4000行及其以上才能進行學(xué)校組織的期末考試,達到從量變到質(zhì)變的效果,從根本上提高學(xué)生的編程能力。
1.3 改革實驗教學(xué)內(nèi)容
《C語言程序設(shè)計》是一門實踐性很強的課程,既要掌握概念,又要動手編程,還要上機調(diào)試運行。在對學(xué)生進行《C語言程序設(shè)計》課程的教學(xué)中,實驗教學(xué)是整個教學(xué)過程的重要組成部分,它可以培養(yǎng)學(xué)生兩方面的能力:一是實際動手操作的能力;二是獨立獲取知識的能力。從某種意義上講,實驗課比理論課更為重要。筆者認為應(yīng)注意以下幾點:
(1)每次實驗課之前,教師都根據(jù)授課進度,有系統(tǒng)地布置實驗任務(wù),設(shè)置必做與選做題,以滿足各個層次學(xué)生的需要;要求學(xué)生認真準備實驗課內(nèi)容,在稿紙上編寫好程序。實驗過程中,學(xué)生應(yīng)快速進行編輯,并在調(diào)試中發(fā)現(xiàn)問題,同時解決問題,從而不斷提高自己。我們讓學(xué)生以自己的學(xué)號+姓名+題號作為程序文件名,調(diào)試成功后發(fā)送到指導(dǎo)教師的郵箱,課程結(jié)束后按完成程序的多少及優(yōu)劣來評定實驗成績。
(2)在實驗課中,教師將發(fā)現(xiàn)的問題有選擇性地進行講解。
(3)學(xué)生上實驗課時,教師多參與指導(dǎo),即勤轉(zhuǎn)、勤看、勤說、勤手把手操作。
2 改變考核方式
為了加強對學(xué)生學(xué)習(xí)的過程管理和督促作用,該課程的考核采用:平時成績+期中成績+期末成績的方式,比例分配為3∶3∶4。
學(xué)生的學(xué)習(xí)過程管理是教學(xué)中的重要一環(huán),對學(xué)習(xí)效果具有很大的影響。平時成績包括上課出勤、上機情況、平時作業(yè)等,由任課教師根據(jù)學(xué)生的情況作出評定。期中考試則在課程完成一半后進行,期末考試側(cè)重于對學(xué)生綜合能力的考核。
學(xué)生學(xué)習(xí)效果的檢驗方式直接決定了最終的教學(xué)效果。如果想讓學(xué)生真正學(xué)會獨立動手并寫出正確的程序就必須采用上機考試的方式。因此,期中考試和期末考試均采用上機考試的方式,要求學(xué)生針對問題寫出最終可以正確運行并能解決問題的程序。這樣做,可提高學(xué)生利用程序設(shè)計思想解決實際工程問題的能力。
3 加強后續(xù)教育
C語言編程能力的培養(yǎng)是一個長期的任務(wù),不能只靠教師單方面的努力。編程教育應(yīng)當具有持續(xù)性,并且需要充分發(fā)揮學(xué)生的主動性。
學(xué)生的自主學(xué)習(xí)是編程能力培養(yǎng)的重要途徑之一。然而,學(xué)生在自己學(xué)習(xí)編程的時候,編寫的代碼總出錯,似乎只有在老師的指導(dǎo)下才能完成學(xué)習(xí)。因此,有必要找到一種有效的自我提高的方法。筆者歸納為如下的學(xué)習(xí)編程方法。
讀代碼:注重學(xué)生閱讀程序能力的培養(yǎng)。要求學(xué)生將書上的例題看懂,了解程序的流程,了解作者的編程思路,了解代碼的優(yōu)點和缺點。
寫代碼:這是第二階段。要求學(xué)生自己動手將代碼從頭寫一遍,經(jīng)過編譯、連接、運行代碼后能得到正確的結(jié)果。如果遇到問題,可以通過對照樣例來發(fā)現(xiàn)原因。
改代碼:這是第三階段。要求學(xué)生將讀懂的代碼做一些小的局部修改或擴展,得到不同的結(jié)果,并能解釋原因。目的是使學(xué)生熟悉一些語句用法,把握解題思路、方法和步驟(即“算法”),從而讓學(xué)生明白如何分析并解決實際問題,逐漸培養(yǎng)學(xué)生進行程序設(shè)計的正確思維模式。
這種學(xué)習(xí)方法強調(diào)了學(xué)習(xí)的漸進性,降低了學(xué)習(xí)難度,學(xué)生能力逐步提高;同時,由于有現(xiàn)成的樣例程序為基礎(chǔ),碰到的大部分問題都可以對照樣例程序來發(fā)現(xiàn)與解決。
另外,教師應(yīng)當對學(xué)生的自學(xué)提供一定的指導(dǎo)與幫助,例如篩選一批經(jīng)典的參考書目或精選出一批知名的網(wǎng)絡(luò)技術(shù)組與博客等。讓學(xué)生能夠從中汲取到非常優(yōu)秀的編程思想與觀念,并領(lǐng)悟到行業(yè)與技術(shù)發(fā)展的方向。
有了一定編程基礎(chǔ)之后,研究一份優(yōu)秀的源代碼。在沒有看代碼前,先根據(jù)軟件的功能按照自己的思路進行設(shè)計,然后帶著問題去看代碼。與源代碼相比較,找出自己思路的不足或作者代碼的缺點,自己嘗試寫出比該代碼更優(yōu)秀的代碼,才能夠站在更高的角度上去分析和學(xué)習(xí),才能達到“通透”的境界。
實踐!實踐!再實踐!我們看代碼是為了更好地寫程序,要敢于把學(xué)到的先進知識、先進技術(shù)進行實踐應(yīng)用,只有用得多了,才能徹底理解和掌握。
4 結(jié)語
C語言編程能力的培養(yǎng)是一個值得長期研究與探討的問題。我們總結(jié)了幾種有效的方法,在日常教學(xué)中加以運用,學(xué)生編程能力得到很大的提高。因此,在今后的教學(xué)工作中我們還要繼續(xù)努力,勇于探索、善于總結(jié),不斷改進教學(xué)方法,進一步提高學(xué)生C語言的編程能力。
參考文獻
[1] 李暉,張世彤.如何在計算機教學(xué)中培養(yǎng)學(xué)生的編程能力[J].遼寧教育行政學(xué)院學(xué)報,2008,25(12):78-79.
[2] 邱力,郭小平.C語言程序設(shè)計案例教學(xué)探討[J].江西教育學(xué)院學(xué)報(綜合),2006,27(6):50-52.
[3] 翁健紅.提高學(xué)生編程能力的思考與實踐[J].科技信息,2007(17):217.