摘 要: 傳統(tǒng)的C語言程序設(shè)計教學存在不足,不僅影響了本門課程的教學質(zhì)量,還影響了后續(xù)語言類課程的學習。為了改善該課程的教學效果,提出從教學質(zhì)量控制、教學互動、代碼規(guī)范和考試等方面進行改革的措施。實踐結(jié)果表明,這些改革措施明顯改善了C語言程序設(shè)計課程的教學效果。
關(guān)鍵詞: 軟件工程; C語言; 教學改革; 考試改革
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2015)06-68-03
Abstract: There are drawbacks in the traditional teaching of C language programming, which not only affect this course teaching quality, but also have negative effect on the following language courses. In order to improve the teaching effect, this paper proposes the reform measures to teaching quality control, interactive teaching, programming specification and testing. The practical results show that the reform measures improve the C language programming teaching effect significantly.
Key words: Software engineering; C language; teaching reform; Examination reform
0 引言
軟件工程專業(yè)是一門實踐要求非常高的專業(yè),該專業(yè)的學生要求在畢業(yè)時即可達到軟件從業(yè)人員所需的軟件開發(fā)、項目管理的能力,因此,軟件工程的教學質(zhì)量必須得到控制和保證。為此,教學人員從多個方面探討提高教學質(zhì)量的途徑。鄧澤林提出建立教學團隊來提高語言類系列課程的教學效果,并深入探討了教學團隊的創(chuàng)建、教學團隊的提升等問題[1],同時,他提出從大型軟件項目實踐、項目管理等方面提高軟件工程專業(yè)學生的實踐能力[2]。周波提出了本科院校學生軟件工程能力的評價標準,更好地評估學生的實踐能力[3]。
軟件工程專業(yè)學生的實踐能力主要體現(xiàn)在應(yīng)用程序設(shè)計語言進行軟件開發(fā)的能力,而C語言程序設(shè)計是軟件工程專業(yè)所有語言課程的基礎(chǔ),該課程的教學效果影響到Java語言程序設(shè)計、C++語言程序設(shè)計、C#語言程序設(shè)計等課程的教學質(zhì)量,最終關(guān)系到了軟件工程專業(yè)學生的專業(yè)素養(yǎng)和求職就業(yè)。本課程的教學人員對提高C語言教學效果進行了研究,鐘美提出以培養(yǎng)應(yīng)用人才為目標的C語言教學方法[4],但志平提出改善地方高校C語言教學的改革措施[5]。這些方法和措施尚未探討教學質(zhì)量控制、編碼規(guī)范等方面,對于提高學生的專業(yè)素質(zhì)意義有限。為此,我們提出了教學過程質(zhì)量控制、師生互動、編碼規(guī)范和上機考試等多個方面的教學與考試改革措施,以提高C語言教學質(zhì)量和學生的動手能力,并為后續(xù)課程的學習打下良好的基礎(chǔ)。
1 教學中的問題
1.1 教學只注重課程的講解,不注重教學過程的質(zhì)量控制
傳統(tǒng)的教學以課程內(nèi)容的講解為主,通過講解變量、循環(huán)、數(shù)組、指針等內(nèi)容,并結(jié)合一定的教學案例來推進教學過程的實施。這種傳統(tǒng)的教學方法沒有考慮到本階段學生的特點,往往造成教學效果差,教學質(zhì)量難以控制。C語言程序設(shè)計課程在大一新生中開設(shè),許多學生缺乏程序的思維和一定的動手能力,學生難以跟上教學進度,造成一定數(shù)量的學生對學習語言失去興趣,從而影響整個專業(yè)課程的學習。
1.2 教學過程缺乏有效的互動
C語言程序設(shè)計的教學過程中主要使用PPT來講解,案例程序也通過PPT展示,甚至包括程序運行結(jié)果也以截圖的形式在PPT中顯示。雖然在PPT中可以添加很多的動作,動態(tài)地標注、顯示程序的運行過程,但這種方法以投影為中心,缺少與學生交流的環(huán)節(jié),加上程序類課程相對枯燥,以致學生難以集中精力做到全程聽課。
1.3 代碼編寫規(guī)范強調(diào)不夠
編碼規(guī)范是軟件專業(yè)學生必須要牢記并遵守的,良好的編碼規(guī)范不僅能體現(xiàn)軟件從業(yè)人員的素質(zhì),而且使代碼有更好的可讀性,更容易被別人所理解和交流。該課程的講解主要以編寫簡單邏輯來解決一些日常問題、數(shù)學問題,編程的環(huán)節(jié)側(cè)重于算法的實現(xiàn),往往忽略了編碼規(guī)范。
1.4 考試以筆試為主,難以檢驗學生的動手能力
傳統(tǒng)的C語言程序設(shè)計課程考試以筆試為主,考查學生對C語言基本的語法、簡單邏輯編寫的掌握情況。這種考試機制脫離了程序語言的實現(xiàn)介質(zhì),即計算機。雖然在試卷中也可以用編程題目來考查學生的編程能力,但在紙上寫程序與在計算機上寫程序有本質(zhì)的不同。在紙上寫程序只需要寫出大致的邏輯即可,而在計算機上寫程序不僅要寫出正確的代碼,而且需要調(diào)試和跟蹤代碼,最終保證程序的正確執(zhí)行。因此,筆試并不能很好地檢驗學生的動手實踐能力。
2 教學改革措施
2.1 加強教學過程的質(zhì)量控制
C語言程序設(shè)計課程是一門實踐性強的課程,僅通過做一些常規(guī)練習無法達到教學質(zhì)量監(jiān)控的目的。為了更好地控制教學質(zhì)量,需要從學生語法規(guī)則的掌握到動手編程這一系列環(huán)節(jié)進行掌握和跟蹤。為此,我們開發(fā)了一套在線作業(yè)系統(tǒng)用于教學質(zhì)量的控制。
⑴ 作業(yè)題庫的建設(shè)
C語言程序設(shè)計的任課教師根據(jù)自己的經(jīng)驗和理解來搜集和設(shè)計C語言題目,包括基礎(chǔ)知識的題目和編程實踐的題目?;A(chǔ)知識的題目主要用于C語言知識點的訓練,包括填空題、選擇題、判斷題和程序閱讀題;編程實踐的題目主要用于編程能力的訓練,這類題目需要學生對問題進行正確分析、設(shè)計算法、編程并運行,最終得到結(jié)果。教師在給出題目時,需要提供測試數(shù)據(jù)和對應(yīng)的結(jié)果。
⑵ 作業(yè)的布置與批改
教師可以根據(jù)每次課的教學大綱、課程內(nèi)容,從作業(yè)題庫中選擇一些填空題、選擇題、程序閱讀題、編程題來建立課程作業(yè)供學生在課外完成。學生在規(guī)定的時間之內(nèi)完成作業(yè)后提交作業(yè),系統(tǒng)根據(jù)教師預(yù)先設(shè)定的答案進行自動批改,形成每個學生的作業(yè)記錄。如果學生在規(guī)定的時間之內(nèi)沒有完成作業(yè)并提交則失去本次作業(yè)的記錄。教師通過查閱部分學生的解答來掌握學生對相關(guān)知識的掌握情況,特別是需要整理學生所犯的共性問題,并有針對性的開設(shè)習題課進行解答。
⑶ 配套政策
為了使學生重視平時作業(yè)的完成,課程的期末成績將考查平時作業(yè)的情況。如果學生沒有提交作業(yè)的次數(shù)在30%以上,則平時成績計0分,其他情況按照提交作業(yè)次數(shù)和作業(yè)得分根據(jù)一定的公式進行計算得到學生的平時成績。這種策略的主要目的在于督促學生跟著教學進度進行學習和訓練,不至于嚴重滯后于教學進度而失去學習的興趣,可有力地保證教學質(zhì)量。
2.2 加強教學過程中的互動
課堂教學應(yīng)該在一定程度上脫離PPT的教學,這樣才可以調(diào)動學生的積極性。加強師生之間的互動可以結(jié)合本課程特點進行。在講解課程知識點后,配以適合的案例進行教學,這些案例都是需要編寫C語言程序來實現(xiàn)的。此時,編程實現(xiàn)的環(huán)節(jié)不要通過PPT展示,而要在教師的計算機上動手編寫并運行得到結(jié)果,這樣可以改變教學節(jié)奏,吸引學生的注意力。C語言課程案例程序的一大特點是代碼量少,一般在20~30行之間,適宜在課堂上完成。
教師在編寫程序的過程中,可以向?qū)W生展示編程中需要注意的問題,同時,進一步講解C語言的語法和基本知識點。教師在編寫程序的過程中難免會犯小錯誤,或者是有針對性的故意犯一些學生經(jīng)常犯的錯誤,在編程后的編譯運行時會有錯誤報出,這時對于提高師生交互是很好的機會。從學生的角度來說,他們的編程往往會有很多錯誤,編譯時會出現(xiàn)大量的錯誤提示。此時,學生可能就比較迷茫,不知道如何定位并解決錯誤。因此,當老師也出現(xiàn)錯誤,而且是學生經(jīng)常遇到的錯誤時,學生往往是比較興奮的,希望能知道老師是如何處理錯誤的。從老師的角度來說,真實地反映程序編寫、編譯的過程,展示程序錯誤的發(fā)現(xiàn)、定位、解決的方法,能夠更快地提高學生的動手實踐能力。面對錯誤,教師還可以引導學生參與程序錯誤的解決,消除學生對程序錯誤的恐懼感。
在解決程序錯誤時可以參考以下步驟。首先,教師要把所有錯誤信息讀出來給學生聽,因為一般編譯出來的錯誤是用英文寫的,而且有些單詞學生不熟悉,因此,老師需要指出錯誤是變量重定義、變量沒有定義、還是其他錯誤;然后,指出核心錯誤的位置,教師要告訴學生程序報出很多錯誤信息往往是由一個小錯誤導致的,因此,老師要指導學生學會確定引起其他錯誤的核心錯誤;最后,在源程序中找到錯誤的位置,修改錯誤并重新編譯,得出運算結(jié)果。
這個錯誤處理過程是針對簡單語法錯誤的處理方法,如果程序中出現(xiàn)了邏輯錯誤,即程序編譯正確,但運行結(jié)果不是預(yù)期結(jié)果,此時,錯誤的處理方法更為復(fù)雜,可能需要重新檢查程序邏輯,并使用編譯環(huán)境進行程序中可疑變量的監(jiān)視,通過觀察變量中的數(shù)值在程序運行過程的變化來確定錯誤。
通過實地編寫程序并調(diào)試,發(fā)現(xiàn)和解決程序錯誤,最終得到正確的計算結(jié)果,不僅能使同學更好地掌握程序編寫的方法,而且還能更好地與學生進行互動,提高教學效果。
2.3 強調(diào)代碼規(guī)范
有些老師在教學的過程中特別是演示程序時,注重于解決問題而忽視代碼規(guī)范,甚至是自己寫程序也是這樣,沒有代碼規(guī)范。雖然遵守代碼規(guī)范并不能改善程序的性能,但遵守代碼規(guī)范能夠使程序具有更好的可讀性、可維護性,是軟件代碼實施過程中軟件從業(yè)人員良好素質(zhì)的重要體現(xiàn)。改善代碼規(guī)范可以從以下幾個方面進行。
⑴ 適當?shù)目s進
每一行代碼不要頂格書寫,而要根據(jù)情況縮進。具有良好縮進格式的代碼不僅能少犯語法錯誤,還能夠使閱讀者快速掌握程序內(nèi)容。
⑵ 適當?shù)目招?/p>
函數(shù)與函數(shù)之間增加必要的空行,使得程序構(gòu)成一目了然。
⑶ 適當增加代碼注釋
程序中函數(shù)的開頭最好加上注釋說明該函數(shù)的作用、參數(shù)的意義,在函數(shù)中重要邏輯的部分加入注釋說明該邏輯的主要思路、算法。
⑷ 代碼塊要用花括號界定
代碼塊盡量使用花括號來界定代碼范圍,即使代碼塊里只有一行代碼,這樣可以提高代碼的可閱讀性,防止閱讀者誤解程序。
⑸ 變量和函數(shù)的命名
盡量使用多個字母來命名變量和函數(shù),使得程序閱讀者通過名稱即可大致了解變量的意義、函數(shù)的作用,提高程序的可讀性。
通過編碼規(guī)范的強調(diào)和實施,使學生認識到軟件開發(fā)的專業(yè)素質(zhì),對于提高學生的專業(yè)素養(yǎng)具有潛移默化的作用。
2.4 上機考試
上機考試采用在線考試的方式進行,考試環(huán)節(jié)包括如下幾個部分。
⑴ 試題庫的建設(shè)
C語言程序設(shè)計的任課教師負責組建上機試題庫,試題庫中的題目都是編程的題目,用于考核學生的編程能力。教師在組建試題庫時,標明每個試題的知識點和大致難度,并提供測試案例和對應(yīng)的答案。題庫負責人負責查看、重新編輯每個題目,從題庫整體的角度更新每個試題的難度。
⑵ 上機考試的實施
為單次考試準備7個知識點和1個綜合知識點的題目,教師在考試之前為每個知識點選定難度相當?shù)?個題目。每個學生登錄系統(tǒng)后,系統(tǒng)自動建立考卷,具體策略是從為每個知識點準備的5個題目中隨機選擇1題組成一個考卷,因此,該考卷包含8個題目,這8個考題要求學生在4小時內(nèi)完成編程??荚嚂r間一般定為上午8:00至中午12:00點。
學生根據(jù)隨機組成的考卷題目進行解答,為每道題目編程求解,并在學生機上利用示例測試用例檢驗代碼的正確性。如果在本地沒有通過檢測,則進行邏輯檢查,修改程序;如果本地通過測試,學生需要將代碼提交到服務(wù)器。服務(wù)器接收到代碼后,自動調(diào)用教師提供的更多的測試用例來檢測程序運行結(jié)果是否與預(yù)先設(shè)置的結(jié)果匹配,進行代碼邏輯黑盒測試。如果全部通過,則說明學生的編程邏輯是正確的,此時將學生成績記錄中對應(yīng)的題目標為通過,并回顯“通過”給學生,學生繼續(xù)做下一道題目;如果其中有的用例運行結(jié)果不正確,則返回“錯誤”給學生,學生可以接著做本道題目,也可以選做另外一道題目,同時,在學生成績記錄中對應(yīng)的題目標為錯誤。
教師在考試現(xiàn)場調(diào)取并查看所有學生成績記錄信息,如果發(fā)現(xiàn)異常信息,如在很短的時間內(nèi)完成了過多的題目,則可能學生在作弊。此時,根據(jù)異常學生信息中的IP地址找到該學生,進行現(xiàn)場查證,如果確認為作弊則立即處理。如果學生正確完成了8道題中的5道題,則學生通過上機測試,否則,學生沒有通過上機測試。為了減輕學生的壓力,上機考試可以分兩次進行,如果第一次沒有通過上機考試,還可以組織學生進行第二次考試,取這兩次考試的較高分作為學生成績。
3 結(jié)束語
C語言程序設(shè)計是軟件工程專業(yè)的一門重要的基礎(chǔ)課程,其教學效果直接影響后續(xù)語言類課程的教學效果。
傳統(tǒng)的C語言程序設(shè)計在教學過程難以進行質(zhì)量控制;師生之間缺少良好的交互,沒有強調(diào)編碼規(guī)范,沒有進行機試測試,導致教學效果難以保證。為此,本文提出了一系列改革措施,這些措施包括:利用在線練習系統(tǒng)來保障學生的課程作業(yè)得到及時的完成;通過課程程序的現(xiàn)場編寫、編譯等措施,加強與學生的互動交流;強調(diào)編碼規(guī)范提高學生的專業(yè)素養(yǎng);通過在線考試提高學生的程序思維能力和動手實踐能力。
通過這些措施,學生學習C語言的進度基本能夠得以保證。由于學生平時就被要求在作業(yè)系統(tǒng)中進行程序的編寫并在線評判,從而具有了良好的編程能力,而且所編寫程序有較好的編碼風格,最終大多數(shù)學生能夠通過機試考試。實踐表明,本文所提出的改革措施提高了本專業(yè)學生的專業(yè)素養(yǎng)和動手實踐能力,有力地保證了后續(xù)語言課程的教學質(zhì)量。
參考文獻:
[1] 鄧澤林,謝中科.教學團隊在軟件工程系列課程教學中的改革實踐[J].
計算機教育,2014.12(15):103-106
[2] 鄧澤林,謝中科.軟件工程專業(yè)實踐教學改革的研究與探討[J].中國
電力教育,2014.30(8):176-177
[3] 周波,劉興麗,喬付等.應(yīng)用型本科院校學生軟件工程能力評價研究[J].
中國電力教育,2013.29(23):18-19
[4] 鐘美.培養(yǎng)應(yīng)用型人才為目標的C語言教學改革[J].計算機教育,
2013.11(16):55-58
[5] 但志平,任東,王安慧等.地方高校C語言教學改革的探討與分析[J].
教育教學論壇,2014.6(20):56-58