張白+吳國強+韋海成+肖明霞
摘 要 基于CDIO教育模式,構建項目驅動與任務驅動相結合的C語言教學方法,以綜合項目為總體目標,以語法知識為主線,通過函數封裝教學過程成果,通過綜合項目集成學生教學過程成果,提高學生學習成就感。并以數學分析軟件項目為例,闡述如何實施基于CDIO的C語言程序設計教學改革。
關鍵詞 CDIO;項目驅動;數學分析軟件項目;任務驅動
中圖分類號:G642.0 文獻標識碼:B
文章編號:1671-489X(2017)22-0098-03
Research on Application of CDIO Mode in C Language Teaching//
ZHANG Bai, WU Guoqiang, WEI Haicheng, XIAO Mingxia
Abstract The CDIO teaching mode based on project driven is intro-
duced in this paper, C language teaching method combining with task
driven method and project driven method is constructed, it has a
comprehensive project as the overall goal, and grammar knowledge
as the main line, through the packaging function of teaching process
achievements, then integrated students teaching process achieve-ments into the comprehensive project, finally improved students learning achievement by these way. Taking the mathematical analy-sis software project as an example, this paper expounds how to im-plement the teaching reform of C programming language based on CDIO.
Key words CDIO; project driven; mathematical analysis software project; task driven
1 引言
C語言程序設計是測控技術與儀器專業的一門重要專業基礎課,是所有程序設計相關課程的基礎,如單片機、智能儀器、測控電路等重要專業課程。當前以數據類型、運算符、選擇結構、循環結構等基本語法知識為邏輯的教學方法在C語言傳統教學中廣泛采用[1]。這種線性教學模式可以循序漸進地把教學內容傳授給學生,但是很難鍛煉學生的邏輯思維和解決實際問題的能力。傳統以語法知識點為主的理論教學,學生普遍反映知識點零散繁多,解決實際問題困難。同時,C語言常常采用筆試為主的考核方式,注重語法知識等記憶性內容的考核,卻忽視了對學生實踐編程能力的考核,造成很多學生會閱讀程序但不會編程[2]。因此,改進C語言教學方式,提高學生學習興趣,促進學生對理論知識的掌握與實際編程能力的提高,培養學生邏輯思維,成為任課教師的研究重點。
CDIO(Conceive,構思;Design,設計;Implement,實現;Operate,運作)作為一種新的工程教育理念,在教學過程中貫徹項目開發的思路,旨在重點培養學生熟練運用專業基礎知識的能力、工程分析和解決問題的能力、團隊協作和交流的能力[3]。借鑒CDIO工程教育模式,通過項目驅動教學法與任務驅動教學法的結合,宏觀教學過程采用項目驅動教學方式,微觀教學過程采用任務驅動教過方法,充分結合項目驅動教學的明確目標性與任務驅動教學的清晰邏輯性的優勢,并對C語言程序設計課程教學內容進行精簡,期望調動學生的學習熱情,提高學生的實際編程能力,達到C語言課程的教學目標。
2 C語言教學現狀
學習興趣低 由于當前JAVA、C++、C#等高級程序設計語言的流行與就業需求,學生對于學習C語言這類基礎性編程語言的興趣越來越低。特別是學習主動的學生,他們對于當前軟件開發中常見的快速界面開發平臺的興趣遠遠高于C語言;而學習被動的學生,枯燥的語法知識也難以提升他們的學習興趣。
學習主動性差 當前學生學習積極性偏低,以北方民族大學測控技術與儀器班級為例,課前預習與課后復習寥寥無幾;課前預習的空白是造成課堂教學效果削弱的主要原因之一,課后復習的缺失是造成學生語法知識薄弱的關鍵因素之一。
過度注重語法 C語言教學中以語法為中心開展教學,往往造成重語法而輕算法的問題。筆者在以往的教學過程中發現,部分學生雖然對語法基本掌握,但就是無法編寫實際程序。這與英語教學中存在的單詞量足夠而無法實際應用的問題極其相似。事實證明,編程實踐是掌握語法細節的關鍵途徑。
注重卷面考試 現行C語言考試以筆試考試為主,忽略實際編程能力,這直接造成學生考試前突擊復習的現象。大量通過死記硬背的方式通過考試的學生基本不具備實際編程能力,這對于C語言課程以及基于C語言的其他專業課教學帶來極大隱患。
3 教學探索與實踐
分組教學模式 由于C語言程序設計的靈活性,同樣的問題可以有多種多樣的實現方式,這就為開展分組教學提供了良好的條件。將教學班級分為若干小組,通過小組討論交流的方式提高學生的參與度。為實現鍛煉同組學生的邏輯思維能力,要求每組學生設計不同的程序實現任務要求,通過組成小組討論完成學習任務,相互學習、相互監督、相互借鑒。同時,為避免學習能力弱的小組成員抄襲他人程序,允許無法獨立設計不同程序的學生在認真分析小組其他學生的程序的基礎上,對程序進行詳細注釋,加深其理解,提高學習質量。endprint
項目驅動教學模式 傳統以語法知識為重點的C語言教學過程以例題為依托,闡述相關算法,講授相關語法知識。但演示例題多且相對陳舊,例題之間關聯性差,往往都是獨立題目,難以實現代碼的復用,難以增加學生的學習成就感。同時,當前學生普遍存在的課前不預習、課后不復習的學習問題,也造成傳統教學效果越來越差。因此,引入項目式教學,打破以語法為中心的傳統教學,設計綜合性項目,以任務涵蓋語法知識點,以多任務函數構建綜合性項目。
1)項目的選擇及任務設定,單純的項目式教學法難以適用于C語言教學,過大的教學項目難度過大,學生難以接受,過小的教學項目又難以起到項目驅動教學的目的。而任務驅動教學適合通過小型項目或任務講授理論知識與編程技巧。因此,通過結合項目驅動教學與任務驅動教學,宏觀上采取項目驅動,微觀上采取任務驅動,靈活開展教學。由于C語言知識點散,一個項目難以覆蓋所有知識點,為此,首先將教學內容劃分為若干個項目子任務,每個子任務覆蓋主要語法知識點,并以函數實現封裝。
如循環結構項目任務,設計奇數和與偶數和的求取,要求分別采用while、do-while和for實現。在進行理論教學時,由教師先對任務進行算法分析與設計,在講解過程中引入若干問題,以問題引導學生思維,重點闡述算法邏輯思路,讓學生在上機實驗中加深語法知識點認識與建立算法邏輯思維。
C語言教學綜合項目設計為數學分析軟件項目,項目包含的功能函數由運算功能、選擇功能、數據排序、數據求和、平均值計算、面積體積計算、矩陣計算等。學生在練習的過程中,不斷積累數學分析軟件的函數,完善數學分析軟件功能,并在項目子任務綜合過程中加深對原有學習內容的認識,增加學生的成就感。
2)項目的實施,項目以函數的形式予以實施,教師在教學過程中仍然按照現有教材的組織順序進行教學,但將每章內容中的語法嵌入項目子任務中,例如:運算功能通過函數封裝實現C語言支持的所有運算符,要求不同小組實現不同運算符的運算;選擇功能實現不同輸入下選擇不同的功能,要求不同小組實現不同結構的選擇;數據排序功能通過函數封裝實現數組數據的排序,要求不同小組實現不同循環結構、不同數據結構的排序;平均值計算功能通過函數封裝實現數組的平均值計算,要求不同小組實現不同數據類型、不同數組結構的平均值計算;面積體積計算功能通過函數封裝實現幾何體的面積與體積計算,要求不同小組實現不同幾何體的面積與體積計算;矩陣計算功能要求通過函數封裝實現矩陣的簡單運算,如矩陣的和、差、乘積、逆與行列式等。
項目采用開放性任務,對任務本身不做過多約束要求。同時,小組可以提出自己的任務題目,充分發揮學生的創造性與主動性,增強學生的學習效果。最終,學生可將教學過程中設計的各函數集成在一起,構建一個綜合數學分析軟件,通過選擇結構實現不同功能的調用,使得學生有充分的學習成就感。
任務驅動教學模式 傳統的理論教學過程以教師講授為主,學生參與不積極,學習興趣不高,教學效果難以達到教學目標[4]。特別是C語言程序設計涉及龐雜的語法規則與靈活多變的算法設計,傳統的課堂教學更難提升學生的興趣與學習欲望[5]。因此,根據學生的學習基礎,調整教學內容與例題,以最精練的教學例題展現語法知識與算法設計思路,通過問題引入知識點,通過知識點構建項目子任務,并在小組實踐中運用并鞏固理論知識點。
如選擇結構中,首先提出在軟件設計中常常面臨二元選擇或者多元選擇的問題,如教務系統登錄時的身份選擇就是典型的選擇結構。課堂教學示例以項目驅動教學采用的教學綜合項目為目標,各子功能的經典結構作為教學實例,引導學生使用語法知識點與設計算法。并且學生獨立實施子功能時,進一步練習語法知識點,鍛煉邏輯思維能力與實踐應用能力。對于學生遇到的瓶頸問題,通過小組討論,發揮學生的積極性與創造性;對于小組無法解決的問題,教師幫助梳理思路,學生負責編程并驗證結果;對于學生共同存在的問題,通過討論群或者課上有針對性的系統講解,加深學生算法設計與編程實現的能力。
4 考核方式
C語言程序設計注重學生的實踐編程能力,傳統的筆試評價難以充分反映學生的實踐編程能力。為此,本課程注重過程評價,加強實踐能力考核,弱化筆試考試。考核方式包含平時成績10%、上機考試20%、實驗成績20%和期末成績50%四部分。其中,平時成績包括上課出勤與作業;上機考試與實驗主要考核學生的實際編程與調試能力,而為了提高學生對于項目的重視程度,上機考試內容來源于數學分析軟件項目中的子任務,采用隨機抽取的方式進行考核。
5 結論
本文借鑒CDIO工程教學模式,構建項目驅動與任務驅動相結合的C語言教學方法,形成以綜合項目為總體目標,語法知識為主線,通過函數封裝教學過程成果,通過綜合項目集成學生教學過程成果,提高學生學習成就感。精簡教學內容,通過任務驅動實現項目子任務的內容,通過綜合教學項目提升學生學習的成就感,梳理繁多的語法知識點,通過開放的任務要求激發學生的創造性和積極性。筆者通過這些教學方法和評價方法的改進,學生學習的積極性有顯著改觀,實踐編程能力較往屆有明顯增強,綜合應用知識的能力得到了提升。
參考文獻
[1]張蕾.基于項目化教學的“C語言程序設計”課程改革[J].計算機教育,2013(2):17-20.
[2]于延,周國輝,李紅宇,等.CDIO模式下C語言程序設計實踐教學改革[J].計算機教育,2016(2):122-126.
[3]姜大志,孫浩軍.基于CDIO的主動式項目驅動學習方法研究:以Java類課程教學改革為例[J].高等工程教育研究,2012(4):159-164.
[4]張白,周春艷.CDIO模式在智能儀器教學中的應用研究[J].中國教育技術裝備,2015(22):92-93,97.
[5]王重英.C語言程序設計教學改革與實踐[J].軟件,2012(5):111-112,118.endprint