匡春臨 蔣勝利


[摘 要] 針對高校新生亟需加強計算思維能力培養的狀況,分析在“C程序設計”課程中引入計算思維的必要性與可行性,提出在“C程序設計”教學內容及過程中全面引入計算思維思想,改驗證性為主的實驗教學為分析探究性為主,并對教改學生與傳統教學學生的考試成績進行了分析與比較。
[關鍵詞] 計算思維;C程序設計;教學內容
在世界信息化過程中,中國的“后發優勢”已經所剩無幾[1]。因此,加強以計算思維為核心的計算機科學教育,提升全民的數字素養,提升國家在信息技術領域的創新能力是當務之急。我國在2010年7月,迅速確定了以計算思維為核心的計算機基礎課程的教學改革,計算機教育界普遍認為大學第一門計算機基礎課程是計算思維能力培養的關鍵[2]。然而,有個普遍的觀點認為計算機只是工具,所以在計算機教育中還存在的很多片面觀點,即使開設了以計算思維為導向的計算機基礎課程,但缺少知識的內在聯系,沒有考慮教育對象的接受能力[3],在具體的實施過程中也不理想。C語言是完全模塊化和結構化的高級語言,具有運算符、數據類型豐富、與計算機硬件聯系緊密等特點。因此,作為計算機基礎課程群課程之一的“C程序設計”,從理論層面、實踐訓練層面以及難度把控上,都非常適合用以培養新生的計算思維意識。
一、“C程序設計”教學中存在的問題
近年來,“C程序設計”的教學內容及方法不斷得到改進,大大提高了學生的實踐能力,計算思維也被引入“C程序設計”課程的部分知識點或教學方法上[4],但仍存在諸多不足。尤其在一些應用型高校,普遍存在“重語法、練代碼,輕設計、少分析”的現象。教師只是把C語言當成一種編程語言,而缺少分析問題、解決問題的訓練,割裂“C程序設計”與學科間聯系的問題尤其突出。另外,以驗證為主的實驗也把學生禁錮在“重語法、練代碼,輕設計、少分析”的教條中。
二、引入計算思維的“C程序設計”
計算思維內涵豐富,“C程序設計”作為計算機專業的入門課,不能深入講授相關理論,但深入淺出地講解一些內涵知識,對培養學生的計算思維意識非常重要。因此,“C程序設計”課程要從教學內容和教學方法改革入手,摒細節,抓思想,加強思維能力的訓練,創造性地編寫C程序。
1.引入計算科學的思想,培養分析問題、解決問題的能力。在“C程序設計”課程中,要讓學生了解計算科學中形式化描述的概念,學會分析簡單的計算復雜度,理解并會用遞歸定義分析問題。學會使用符號系統對求解問題進行精確而嚴格的描述,對實際系統抽象建模。這個階段是學生計算思維意識的萌芽期,需避免過多的理論知識,如何深入淺出、理論聯系日常生活將是講授這些概念的關鍵。變量、數組、結構體等知識點,可以鍛煉學生的數據抽象能力。通過實例培養學生認識到,同一個事物在面對不同問題求解時,抽象出來的數據模型可以是不同的。功能驅動的程序設計、模塊化編程能夠培養學生的過程抽象能力。C語言函數和多文件編程就是理解這個概念非常好的素材。在實際教學過程中,可以把函數的教學直接放到結構化程序設計前,盡可能早地培養學生模塊化程序設計思想。
2.了解計算機工作的原理,明白自動計算的本質。馮·諾依曼體系的電子計算機問世后,“計算”已經無時無刻不在影響著我們的生活。在教學中,可以從計算機中的數制開始,讓學生了解自動計算的概念。僅僅用0和1兩個最簡單的代碼來表述世界上最復雜的事物,進行最復雜計算,這本身就是吸引學生關注的一個興奮點。當學生明白了日常生活中的數據是如何在計算機中以二進制的形式表示,以及如何處理這些數據時,計算思維就在學生的意識中播下了種子。在以數據為中心的程序設計中,作為馮·諾依曼機的核心模塊之一的內存,尤其重要。C程序設計的本質就是對內存的讀寫,C語言從最基本的常量、變量到數組、指針等數據,無不與內存有緊密聯系。學生掌握了內存的實質,才是真正理解C程序設計的內涵。在“C程序設計”中,內存是抽象的,學生必須理解內存是由若干個具有地址編碼的存儲單元組成的線性空間,以及程序設計如何在這個空間上進行數據的讀寫、內存單元的申請與釋放。
3.引入算法概念,掌握基本的算法。C語言作為入門課程,考慮其特點和學生的能力,可以引入基本的算法,如窮舉法、遞推法、迭代法、遞歸法以及分治法等。通過對這些算法的分析與訓練,逐步培養學生的算法意識,學會設計算法,并依據算法編寫程序,分析算法的復雜度,學會利用算法解決問題。在教學過程中,必須要讓算法設計與語法學習居于同等位置。
4.引入計算思維,強化實驗訓練。引入計算思維的實驗課,必須改驗證性的實驗為分析性的。學生寫出的程序不僅是要執行出來結果,更要讓學生開拓思維,用不同的算法、方法解決問題,并且要學會分析不同算法、方法之間的區別。這樣不僅可以提高學生編程的興趣,更重要的是訓練了學生分析問題的能力,有助于培養其創新思維意識。在實驗中引入時間或空間復雜度分析,變驗證性為分析性實驗,找到不同程序(算法)性能差異的原因,進而達到在限定復雜度內設計算法、編寫程序,還可以在班內搞對抗賽等活動提高學生的興趣。
總之,在引入計算思維的“C程序設計”課程的教學過程中,教師不僅需要培養學生動手寫代碼的能力,更需要引導學生去思考代碼的本質。圖1詮釋如何訓練學生的計算思維能力。
項目中,針對洛陽師范學院信息技術學院2018級學生實施傳統教學模式與計算思維教學模式的期末考試情況做了對比,對比情況如表1所示。其中,后者在優秀率上比前者要好,但在不合格率上要差。這個原因初步判斷一是樣本不夠大,二是設計的教學案例單調、難度缺少梯度、數量偏少。后續要對這些問題進行整改,同時對這些學生進行跟蹤調查,進一步了解引入計算思維訓練的學生后期學習情況。
三、結語
把計算思維的思想有機融入“C程序設計”教學,要避免出現“拼盤”式、“狹義計算思維”[3]的誤區,調整教學內容的側重點,采用講授程序轉變到分析語法本質的教學方法,摒棄代碼公式的訓練方式。計算思維能力的培養是一個循序漸進的過程,實踐中需要教師在教學過程中潛移默化地影響學生,灌輸計算思維的思想,切不能急躁冒進。
參考文獻
[1]周宏仁.互聯網+與制造業融合的發展趨勢[EB/OL].搜狐網,2018-03-19.
[2]陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學,2011(1):7-11.
[3]唐培和.計算思維——計算學科導論[M].北京:電子工業出版社,2015.
[4]鄭冰,寧鵬飛.基于JiTT模式的C語言教學中計算思維的培養[J].計算機教育,2018(10):101-104.