梁廣瑞,鐘國文
(廣西機電職業技術學院,廣西 南寧 530007)
淺談全國大學生電子設計大賽與《C語言程序設計》教學改革
梁廣瑞,鐘國文
(廣西機電職業技術學院,廣西 南寧 530007)
C語言是電子電氣各專業都開設的一門重要的專業基礎課,它涉及知識點多,概念復雜,語法表達靈活,學生掌握起來有困難。文章闡述了C語言傳統教學方法的弊端,并介紹了我系在全國大學生電子設計大賽的推動下對《C語言程序設計》課程進行的教改措施。
電子設計大賽;C語言教學改革;項目教學法;AVR單片機
全國大學生電子設計競賽已成為全國電子信息類專業學生規模和影響最大的賽事之一。該賽的特點是與高等學校相關專業的課程體系和課程內容改革密切結合,以推動其課程教學、教學改革和實驗室建設工作。由于該賽的挑戰性、趣味性、公平性和對學生就業的促進性,吸引了大量的相關專業學生參與。如何利用該賽的影響力及指導作用推動相關課程的教學改革一直是我校重點關注的一個課題。論文以《C語言程序設計》課程為例,介紹我校電子電氣類專業圍繞該賽事所進行的教學改革及效果。
《C語言程序設計》是電子電氣各專業都開設的一門非常重要的專業基礎課,而由于當前嵌入式技術的飛速發展以及廣泛應用,C語言作為其最重要的開發工具更加凸顯該門課程的重要性。但是,由于C語言知識點多,概念復雜,語法表達靈活,學生掌握起來有困難。出現最多的問題是學了不知道有什么用,程序看得懂但是自己寫不出來,沒有養成良好的編程習慣,缺乏寫出可復用代碼的意識,無法理解C語言的精髓,比如指針、模塊化編程、可移植性等。這些問題必須通過教學內容、教學方法的改革來解決。
隨著計算機技術、嵌入式技術的發展,計算機基礎技術的內容也在逐步地產生變化,當前《C語言程序設計》教學內容、教學方法必須依據專業特點、技術熱點、企業的技術要求、發展趨勢進行改革,以適應新的形勢和要求。傳統的教學內容和方法存在很大的弊端,主要有下面幾點:
(1)以普通PC機作為C語言運行的主要硬件平臺
對于電子電氣類專業的學生,畢業后從事開發PC機的C語言程序的情況是非常少的,C語言功能的強大及廣泛應用在于它既是高級語言又接近底層,所以被稱為“中級語言”。它不同于目前流行的C#、Java等語言,它主要活躍于單片機、嵌入式微處理器、DSP等嵌入式系統,這些也正是電子設計大賽主要考核的內容。以PC為平臺,學生不理解C語言有什么用,缺乏學習的動力,因為當前所接觸到的PC上林林總總、令人眼花繚亂的軟件基本不是用C語言直接開發的,學生產生了很大的疑惑。另外,以PC為平臺編寫的例子程序一般比較抽象,由于X86體系的處理器比較復雜,內存的映射關系不容易理解,造成學生難以理解指針等C語言的重要概念。
(2)教學內容過于注重語法細節,忽視語言應用
教學內容重點放在語言要素講解上,過于重視語法細節,現有教材提供的例子只重視語法講解,不注重風格,在變量名稱、注釋、習慣用法上不符合規范,代碼質量不高。作為模塊化編程基礎的函數、C語言的精髓指針、文件的組織與安排等重要內容的引入過慢。另外在一些習題上出現一些或許是正確的但是卻不可能出現或很少有這種用法的程序表達,誤導了學生。還有一些基于項目教學法所引入的項目,由于基于PC平臺,而C語言不擅長做windows程序界面設計,以DOS界面為主,學生認為知識過時,提不起興趣。
(3)教學方法單調,手段不多
教學方法主要采用講授法和實驗法,近年來也開始推廣采用項目教學法。對于講授法和實驗法,學生只是被動接受,缺乏主動參與,他們更多地關注計算機等級考試,不能切實體會C語言在實際應用中的強大。對于項目教學法,關鍵在于選擇合適的項目,但是由于以PC為運行平臺,難以設計一個同時具備實用性、趣味性、新穎性、可操作性并覆蓋了大多數知識要點的題目。
電子設計大賽中,單片機或各種嵌入式微處理器的使用是非常重要的知識點,由于比賽時間短、題目靈活,對單片機的開發必須要采用C語言編程。因此,為了取得更好的成績,優秀的隊伍還必須在比賽準備期間做好各個基本模塊,采用模塊化編程、考慮程序的移植性,以企業項目開發的標準來做準備。而由于以上幾點弊端,學生在參加電子設計大賽的過程中,感覺學與用之間鴻溝很大,指導教師需要給他們補充很多內容。比如:課堂上C語言和單片機的課程是分開獨立的,而單片機的教學為強調對計算機原理的理解,課堂上主要運用的是匯編語言,而C語言課堂也沒有很好地結合單片機來講解,造成了銜接上的困難。
上面的分析中知道,C語言運行的平臺是一個關鍵的選擇,針對專業上需求的特點及目前電子設計大賽的要求,選擇了以單片機或嵌入式處理器為主、PC機為輔的平臺方案。通過分析比較了51、AVR、stm32、ARM7微處理器等幾個常見微控制器,從處理器的結構、對標準C支持的程度、易學易用性、是否滿足電子大賽要求等幾個方面考慮,最終確定了AVR單片機作為C語言運行平臺。在教學內容上,重點放在模塊化編程、常見控制程序分析、指針的操作等內容,強調編程良好的風格,一開始就要求學生寫規范的代碼。由于引入了AVR單片機,而學時上是不增加的,經過我們教學實踐發現,即使沒有對AVR單片機這部分做詳細的講解,學生也能夠理解并應用,這個跟學C語言而不需要知道PC機的原理是一樣的。只需要告訴學生,如何通過指針操作單片機的寄存器,而不同的寄存器有什么功能或效應,學生就可以快速應用。
1.教學方法的改進
參加電子設計大賽,就是在短短的三天時間里完成一個小型項目。因此,在教學方法上,主要采用項目驅動法。課程由淺入深設計了流水燈、步進電機控制、DS18B20溫度檢測控制、智能循跡小車等幾個項目。并在課程實訓階段組織學生進行智能小車比賽,比賽成績作為課程成績的參考。由于這些項目具有趣味性,貼近實際,學生產生了濃厚的興趣,由以前的教師督促著學、灌輸著學改為現在的主動學、要求學。在教學時間安排上,使用3+3模式,即每周的6節課安排為3節理論加3節上機實踐。在具體的教學實施過程中,注意抓住幾個要點:一是弱化語法細節,重視算法及其實現。通過突出算法,進而帶動基本語法的學習,可以更加合理地分配學習時間,提高學習效率。二是指導學生閱讀“好”的代碼。不可否認,不少教材在這一方面做得遠遠不夠,代碼例子不重視編程風格,變量命名、函數命名不符合規范,缺乏注釋,縮進混亂等等,這需要教師在平時的備課、科研項目中收集優秀的代碼范本,讓學生去模仿。三是將常見的編程調試錯誤收集整理,以文本形式讓學生閱讀。實踐證明,由于學生初學編程,犯的錯誤很多是相同的,而且往往是語法上的簡單錯誤,因此在實驗上機操作課上,讓學生提前閱讀典型錯誤的信息,可以大大提高課堂效率,并培養了學生閱讀文檔的好習慣。
2.考試模式改革
C語言傳統的考試模式主要采用筆試的模式,試卷內容一般為語法的基礎知識(主要以填空題或選擇題為主)、閱讀程序、程序設計等幾種類型,答案比較固定、唯一。這份試卷可以評估學生掌握基礎知識的能力,但是這種方法不能全面了解學生的能力,并且容易使學生以為C語言水平的高低就是簡單一份基礎知識試卷的成績高低,而沒有意識到C語言關鍵是應用,真正實際工作中要完成一個項目不是簡單地運用C語言的基礎知識就足夠的。另外,在教學過程中采用3+3的模式,而考試只有理論筆試,不利于提高學生參與項目教學法的積極性。因此,考核應采用理論筆試+項目機試的方法,其中每項的比重各占50%,最終成績并入期考成績項。
項目機試就是以一個包含多個知識點的小項目為題目,要求學生在規定的時間內完成編程、調試。考試過程中可以參考課本、參考書等紙質資料,但是不可以上網查閱。如何出好題目是關鍵,必須要考慮到各個層次學生的能力并要有區分度。一個典型的題目設計方法是將一個項目題目分成功能上相對獨立的幾塊,每塊難度逐漸增加,這樣可以保證不同水平的學生都能拿到一定的成績。
通過兩屆學生的教學實踐,證明以上教學的轉變是積極有效的。學生不但完成了C語言課程的學習,而且對單片機技術有了一定的掌握,還學習了電子設計大賽經常出現的一些基本功能模塊,因此在后續的單片機學習和電子設計大賽準備中起了很好的銜接作用。
[1]鄒海榮.非計算機專業《C語言程序設計》課程教改探析[J].福建電腦,2010,(5).
[2][美]Kenneth A.Reek.C和指針[M].北京:人民郵電出版社,2008.
[3]于華.應用型本科院校C語言教學改革的探討[J].山西大同大學學報(自然科學版),2009,(6).
[4]宋楚平,李少芹.C語言教學改革的思考[J].職業教育研究,2005,(2).
[5]劉賢鋒.高職“C語言程序設計”課程整體教學設計探討[J]].中國電力教育,2009,(8).
G642
A
1673-0046(2011)11-0151-02