趙軍富 徐 揚 胡 勇 王 猛
(內蒙古科技大學 工程訓練中心,內蒙古 包頭 014010)
“C 語言程序設計”是本科院校工科專業的計算機技術公共基礎課,通過C語言的學習可以培養非計算機專業本科生的計算思維能力,利用計算機來解決實際問題的系統分析、設計和編程能力。然而大多數學生在學習C語言的過程中,仍然是“老師講,學生聽”的模式,不能很好地掌握C語言。學生被動學習,為了考試而學習,很少有學生主動地、創造性地去解決問題。學生用C語言編程解決實際專業問題的能力沒有得到重視。在新工科背景下培養學生運用計算機解決問題的獨特思維方式,在后續的專業課程中再由專業課教師指導學生進一步應用實踐,不僅能提高學生全面分析問題、解決問題的能力,養成良好的學習習慣和思維方式,也能在更大程度上激發學生的創造潛能。本文提出與專業背景相結合的C語言程序設計案例教學模式[1],以與專業知識相關的實際問題為教學案例,引入解決該問題用到的C語言知識點,通過對知識點的深入學習,最后反過來再解決教學案例的問題。這種模式可以有效地提高學生對所學知識與專業知識的銜接,自覺地在教學中建立起C 語言與專業應用的關系橋梁,培養學生運用計算機解決問題的獨特思維方式來解決專業中的實際問題[2],不僅能提高學生全面分析問題、解決問題的能力,也可實現學以致用,激發學生對專業學習的興趣。培養具有實踐能力、創新能力,適應社會需求的應用型人才。
本科院校工科專業的學生在學習過程中,雖然掌握了各知識點的概念、基礎語法、語句結構等,但在知識點的靈活應用、算法設計、程序編寫、程序調試上存在缺乏解決實際問題的科學思維、算法設計和編程實現等能力問題。因此,本文針對本科院校工科專業培養學生的目標,結合教師存在教學理念陳舊,教學方法簡單,過分注重知識的傳授,忽略了對學生實踐能力、創新能力的培養,提出對本科院校工科專業“C語言程序設計”教學進行創新型改革。
第一,采用“項目驅動式”的創新教學模式,通過教學項目引入知識點,詳解知識點后,再用所學知識解決教學項目提出的問題。
第二,在教學設計上,對課程知識點進行單元化設計,以單元知識點為中心,根據各專業工程教育認證指標點,設計與專業背景相融合的教學項目[3],將知識點引入、講解、并用相關的知識應用解決專業實際問題。
第三,在教學內容上,為每個單元知識點創建多樣化的教學資源包括教學項目、PPT課件、微視頻(帶有二維碼)、隨堂單元知識測試題。
第四,在考核方式上,應注重過程考核,將對學生出勤、平時作業、項目考核、期末考試等進行多元化考核。
在實際教學中運用“項目驅動式”的教學方法,通過事先設計好的教學項目,以案例的形式引出知識點,為解決教學項目中的問題,需要學習相關的知識點。首先,進行知識點的精講,通過經典的例題讓學生掌握知識點的關鍵內容。其次,讓學生做相應的練習鞏固熟練知識點。最后,將所學的知識點用來解決剛才教學項目中的問題以提高學生的學習興趣,充分培養學生解決實際問題的邏輯思維能力、分析判斷能力和學以致用的能力。
對“C語言程序設計”課程按照章節進行知識點劃分,主要包括分支結構、循環結構、數組、函數、指針、結構體、文件等 7大模塊。[4]首先,對每一模塊進行知識點單元化[5],分出若干個知識點。然后,進行專業調研來尋找專業中需要用編程來解決的問題,將專業課程中的問題與C語言中的某一個知識點進行融合凝練出科學、合理、具有創新的教學項目,教學設計方案如圖1所示:

圖1 教學設計方案
在圖1中,教學設計環節將課程單元知識點與專業問題融合后產生教學項目,下面以循環結構單元知識點為例設計教學項目,給出教學內容及教學過程。
教學項目(愛因斯坦出了一道數學題):有一條不超過200階的長階梯,若每步跨2階,則最后剩1階,若每步跨3 階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階。只有每次跨7階,最后才正好一階不剩。請問這條階梯共有多少階?
第一步:問題分析與算法設計。根據題意,可知臺階數位為區間[7,200]中的1個數。假設階梯數為n,則階梯數應該滿足下面一組同余式:
n % 2≡1
n % 3≡2
n % 5≡4
n % 6≡5
n % 7≡0
第二步:相關知識點引入。本項目通過循環語句可以對區間[7,200]中的每個整數進行判斷,使用for語句來實現。引入for語句,并進行詳細講解,for語句一般格式:
for ( 表達式1;表達式2;表達式3 )
循環體;
第三步:編程實現。
/*程序說明與注釋
#include
main( )
{
int n=1;/*n為所設的階梯數*/
for(n=7;n<=200;n++)
{
if( (n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5)&&(n%7==0) )
printf(“階梯數number=%d ”,n);
}
}
程序運行結果
階梯數number =119
多數高校使用傳統的考核標準,“C語言程序設計”課程以“平時成績+ 期末考試成績”的方式進行考核[5],比例為 2:8(或3:7)。由于期末考試成績的占比較大,大多學生是在考前突擊學習,通過死記硬背知識點和做題的方式來應付考試,即使學生取得了很高的成績,但是用C語言來編寫程序解決專業問題的能力不足,不能把C語言所學知識與專業相結合,這是應用型本科工科專業同學的一大弊病。因此,要注重過程考核,對每個知識點新增一個與專業相結合的考核項目,批改、打分計入總成績。可以以考勤(10%)、考核項目5個(50%,每個占10%)、期末測試(40%)的模式進行考核,提升學生用C語言知識解決專業問題的能力,培養工科學生的創新能力。
應用型本科院校培養學生解決實際問題的能力及創新能力至關重要,工科專業的學生利用C語言編程來解決一些專業實際問題是必備的能力。本文通過對C語言從教學模式、教學設計、教學內容、考核方式上進行創新型改革。將C語言課程進行知識點的單元化,將單元知識點與專業問題進行融合,凝練教學項目,在教學過程中先通過教學項目需要解決的問題將相關知識點引出,詳細精講知識點,掌握知識點后反過來用所學知識來解決教學項目中的專業問題。提高學生理論聯系實際、解決實際問題的綜合能力,將教學從單一的“結構化編程” 轉變為“結構化和面向對象”,激發學生學習和探索的激情,提高教學質量。