靳小燕 魏慧琴 周圍
摘 要 C語言程序設計課程是大學理工科各專業培養學生計算機應用能力的一門重要的基礎課程,也是我校理工類學生選課人數最多的一門編程類課程。針對目前C語言程序設計課程教學中存在的問題進行教學改革與實踐。通過C語言程序設計的課程改革,建立高效的在線程序自動批改系統,進行題庫資源建設,融合專業特色,對不同專業的學生,可以結合其專業特點,講解一些和專業知識相關的案例,并進行實踐;培養學生學習程序設計課的興趣,提高編程能力。
關鍵詞 C語言程序設計 教學改革 在線批改 題庫 專業特色
中圖分類號:G424? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A ? DOI:10.16400/j.cnki.kjdkx.2021.03.055
Teaching Reform and Practice of "C Language Programming"
JIN Xiaoyan, WEI Huiqin, ZHOU Wei
(School of Computer and Information Technology, Beijing Jiaotong University, Beijing 100044)
Abstract C language programming is an important technical basic course for cultivating students' computer application ability in various majors of university science and engineering. Programming ability is one of the most demanding vocational skills in today's society. In view of the problems existing in the teaching of C language programming course, the teaching reform and practice are carried out. Through the curriculum reform of C language programming, an efficient online program automatic correction system is established, the resources of the question bank are constructed, and the professional characteristics are integrated. For students of different majors, some cases related to professional knowledge can be explained and practiced according to their professional characteristics; Cultivate students' interest in learning programming and improve their programming ability.
Keywords C language programming; teaching reform; online correction; question bank; professional characteristics
C語言是一種應用較為廣泛的面向過程的計算機高級語言,很多高等院校都開設了這門課。在我校,尤其是通信專業,電氣專業等本科生必選的計算機基礎課程,也是給其他理工科專業推薦的公共基礎課。主要是培養各個專業的學生掌握用計算機解決問題的方法,培養學生的邏輯思維能力,為后續的計算機課程或相關的專業課打下良好的基礎,比如學完C語言程序設計課,可以再學習C++程序設計;或者電氣學院的學生后續學習單片機課,其中的案例也是用C語言編寫的。由此我們可以說,C語言程序設計課程的教學質量的好壞會影響后續課程的學習效果。
C語言程序設計課程是我校開設的全校性限選課,共48學時,每年選課人數超過兩千人。
1 本課程教學中的問題分析
首先,學習目標不明確,學生學習的積極主動性不夠;C語言程序課程的學習有其自身的特點,就是要通過大量具體的上機實驗訓練,在實踐中提高編程的基本能力,并將程序設計的思想逐步理解和應用。尤其對于非計算機專業的學生,似乎不是太明白學習一門編程語言有什么用,也不太清楚此課程對他們自己的專業有什么樣的幫助。因此,在教學的過程中為學生建立明確的學習目標是非常重要的。
其次,在實踐教學中,由于缺乏高效的課程交流平臺,教師無法及時掌握學生的學習情況和學習效果。學生自己在課下的上機環節不能得到老師的及時輔導,通常遇到問題容易放棄,并且存在作業拷貝現象。隨著多媒體技術和網絡技術的快速發展,通過電子郵件來完成和傳統的作業批改方式已遠遠不能滿足當前的發展需要。
第三,目前這門課的教學基于同一個教學大綱,教師講授的內容范圍一致,沒有按不同專業分類。通過調查,了解到多數學生希望在進行綜合程序設計中能做和自己專業相近的項目,激發學生的學習積極性,取得良好的教學效果,為后續課程打下良好的基礎。例如:電氣學院后續專業課程“單片機”,需要用C語言編程。而平時我們對這一塊的訓練幾乎沒有。如何將C程序設計課程和學生專業相結合,建設適合不同專業學生學習的教學資源,是課程改革研究的重點。
2 課程教學改革與實踐
計算機技術和網絡技術的發展為網上學習提供了可能和保障。本課題首先研究了網絡教學的特點,結合C語言課程的教學大綱,規劃和設計出相應的知識模塊,圍繞這些知識模塊開發制作了本課程所需要的教學資源,比如PPT、各種題型的題目和難度各異的題目以及適用于不同專業的題目,并應用于教學中。
2.1 自動批改系統的實現
通過書面、電子郵件來完成程序實踐作業的方式和傳統的程序作業批改方式已遠遠不能滿足該課程的實踐環節的需要,依托現有平臺,建立了自己的題庫,實現了C語言程序設計課程的遠程作業提交自動批改,平臺系統具有對源代碼進行編譯和執行的功能,并通過測試數據(一般為5組或5組以下)來檢驗程序運行是否正確,每道題都有評判結果,可以比較被測程序的輸出數據和標準答案的情況,然后進行打分,學生也能及時看到自己設計的程序是否正確。
2.2 融合專業特色的C語言程序設計課程
在C語言程序設計課程的教學過程中,除了基本的C語言基本語法知識的介紹,程序設計方法的建立,將數學領域一些有趣的問題引入課堂中,調動學生學習的積極性,例如,針對數學專業的學生可以增加如下專題——數學黑洞問題,比如6174問題,任何不同的四位數(四位都一樣的除外),通過從大到小和從小到大的排列,得到差后再重復上述運算,至多7次,得到的答案都是6174。
算法可以分為以下幾個步驟:(1)分離整數中的各位數字;(2) 將各位數字重新排列成可能的最小數; (3)將各位數字重新排列成可能的最大數。要將各位數字重新排列成可能的最小數,這就涉及排序問題,排序算法非常重要,應用廣泛,從這一點,可以引導學生對排序問題進行研究,弄清楚有哪些排序算法,每種算法的思路和實現過程,開拓思路,尋找更好的算法。
對于電信學院的學生,增加如下案例,計算漢明距離,漢明距離是以理查德·衛斯里·漢明的名字命名的。漢明距離是指兩個字符串(等長)對應位置上的不同字符的總個數。也就是說,將一個字符串變成另一個字符串所需要換掉的字符個數。例如1011101 與 1001001 之間的漢明距離是 2。2143896 與 2233796 之間的漢明距離是 3。在一個有多個編碼的集合中,任何兩個編碼之間的漢明距離的最小值,我們稱它為最小漢明距離,這個值越大,碼組的抗干擾能力就越強,參考程序如下:
#include
int hamdist(char *a, char *b)
{
int dist = 0;
while (*a && *b) {
dist += (*a != *b) ? 1 : 0;
*a++;
*b++;
}
return dist;
}
int main()
{
char a[100], b[100];
fgets(a,100,stdin);
fgets(b,100,stdin);
int dist = hamdist(a, b);
printf("%d\n", dist);
return 0;
}
在程序中,可以定義數組,指針和函數,并學會使用fgets函數和函數調用等知識和編程小技巧。
在教學過程中,對于每個小問題都給出多種解決方案,讓學生體會在程序設計過程中可以在多種算法中靈活選擇,這樣就可以調動學生進行主動思維的積極性,課可以讓學生對所學的內容進行更好地理解。
2.3 學習資源的建設
首先將不同專業學習的共同內容按照知識點組織學習資源庫,然后再按專業組織不同的學習內容和案例,設計按專業分類的訓練題目。數字資源表現形式多樣性;注重資源建設和學生的交互性。有利于整體提高學生的實際編程能力,取得好的學習效果。題庫中的題目如圖1、2、3所示。
圖1
課程資源初步建成后,大部分C語言代課老師使用題庫中的題給學生布置作業,編程題和改錯題放在C平臺上,300多道選擇題放在教務處課程平臺上,供校內非計算機專業的學習程序設計課程的學生練習。通過對題庫的使用,以適合的方式讓學生進行試用,能提高學生的學習興趣,提高編程能力,取得了較好的教學效果。下一步將對反饋意見進行分析,更好地進行教學改革。
3 展望
將專業特色融合到計算機程序設計課程中,不但可以增強學生的學習興趣,而且可以提高學生的編程能力和自信心。經過教師們這幾年的教學實踐,我們看到教學效果還是比較好的。同時,對老師們提出了更高更嚴格的要求,需要花費更多的時間精力來備課,在課堂上需要額外講解與專業相關的案例,給平臺題庫補充更多的與專業相關的題目,不斷豐富課程資源,學習各專業的一些基本知識,課后及時對學生的問題進行答疑和解決。
對于目前C語言程序設計教學過程中存在的一些問題和不足之處,本文希望能夠理論與實踐相結合,探索C語言程序設計課的改革思路,優化教學內容和資源,重視基礎教學的同時,融合專業特色,提高學生的編程能力。
參考文獻
[1] 蘇小紅,王甜甜,張羽.基于大班翻轉課堂的混合教學模式探索與實踐.中國大學教學,2017(7):54-62.
[2] 何欽銘,顏輝,蘇小紅,等.“程序設計基礎”課程教學實施方案[J].中國大學教學,2010(5):62-65.
[3] 賴曉晨.程序設計課程創新教學模式探索[J].中國大學教學,2008(7):42-44.