肖斌 汪敏 王兵
摘? 要:新經濟形態對計算機人才培養提出了新的要求,結合C語言程序在人才培養體系中的重要性,以及當前的教學現狀,將計算思維融入教學中培養學生的分析問題的能力和抽象建模的能力,使得學生的程序設計思維清晰化、規范化。同時結合MOOC平臺實施線上線下的混合式教學,保證教師實施有效過程監督。
關鍵詞:計算思維;C程序設計;MOOC;程序設計實踐
中圖分類號:TP311.5? ? ?文獻標識碼:A
Abstract:The new economic forms put forward new requirements for the cultivation of computer talents.Combining the importance of C language programs in the personnel training system with the current teaching status,this paper integrates computational thinking into teaching to cultivate students' analytical problems and abstract modeling,making students' programming thinking clear and standardized.At the same time,it is combined with the MOOC platform to achieve online and offline hybrid teaching,to ensure that teachers implement effective process supervision.
Keywords:computational thinking;C programming;MOOC;programming practice
1? ?引言(Introduction)
伴隨著大數據、物聯網、人工智能、云計算的飛速發展,實現了新技術與新產業的深度融合,產生了第四次工業革命下的工程新業態,帶來了工程科技人才培養的新要求。而程序設計是實現信息技術與新工科的關鍵,對未來技術和產業起到引領作用[1]。因此程序設計的工程實踐能力、分析設計能力、創新能力、終身學習能力成為新工科軟件工程人才的核心能力[2]。
2? C程序設計的地位和現狀(The status and current situation of C programming)
2.1? ?C程序設計語言的地位
C語言程序設計主要包含變量、語句、控制流程、數組、指針、結構體、函數等知識點內容的一門面向過程的程序設計課程。該語言很好地支持結構化程序設計,也是面向對象語言、數據結構的基礎。
通過C程序設計語言的學習,學生掌握變量、控制流程語句、函數、數組、指針、結構體的相關基礎知識,掌握程序模塊化編程的編程思想,具備利用計算機的思維方式分析問題進行數據表達和算法描述的能力、利用基本算法解決問題的能力,具備工程設計和工程的調試分析能力,達到利用計算機求解復雜科學問題的計算思維能力。能力培養體系層次關系如圖1所示。
2.2? ?C程序設計語言的教學現狀
在新工科背景下,針對C語言程序設計,需要培養基礎知識扎實,具有分析設計能力,具有工程設計能力的人才的三層綜合能力,但課程實際教學中往往停留在第一層,存在大量問題。
(1)C語言教學中,學生剛從高中升入大學,已有的學習模式與計算機思維的學習模式具有不一致性,記憶性的知識能夠學習,但抽象思維和邏輯思維能力比較弱,即計算思維能力較差,導致對問題的分析不透徹,編寫程序時不知道如何設置變量;不知道如何設計程序的結構;不知道什么時候定義函數、如何定義函數;不知道函數的粒度和職能范圍有多大;不知道數據如何存儲、算法如何實現[3]。學生缺乏這方面的引導和大量訓練。
(2)語法規則是記憶性的知識點,但許多教師在教學過程中會花費大量的時間和精力講述,由于課時有限,當課程結束時,學生只是機械性地記住了這些知識點的規則,但不能真正掌握和理解如何運用這些法規則,不能利用計算機解決實際問題。高校教育沒能夠完成大學生與社會的接軌。大學的教育要擺脫以傳授知識為主,應主要培養計算機專業學生的主動自學能力、抽象思維能力、理解應用能力和實踐操作能力。
(3)傳統教學導致教學時間有限,無法保證有效的過程監督機制[4]。課前學習和課后總結測試是保證學習效果的重要途徑,在實際教學中,主要依靠學生自覺完成,教師不了解學生的學習狀態和學習效果。另外,高校在程序設計類課程中,缺乏資金投入,往往采用大班上課,評閱作業存在有效性和滯后性等問題,而作業是教師掌握學生學習情況的重要途徑,導致教師不能全面掌握學生的真實學習效果,不能及時解決學生問題。問題積少成多,學生學習興趣受到挫敗。教師也無法通過有效的作業反饋調整上課內容,改進教學方法。
(4)英文語言基礎薄弱遇到計算機語言的初學狀態導致學生看不懂錯誤、理解不了錯誤,并缺乏分析程序、跟蹤程序的能力,不會解決編譯時碰到的語法錯,更不能解決邏輯錯誤。這與教學的時間投入、教學的方法,以及學生實踐經驗缺乏密切相關。學生需要提高閱讀程序的能力和調試程序的能力[5]。
(5)C語言程序設計是一門應用性、實踐性和現實性很強的課程,而課程教學內容在創新項目內容深度不夠,過多關注程序設計語言本身的訓練和數據的簡單呈現,而忽視了整體性與綜合創新性思維培養。創新實踐教學的總體規劃、內容設計等方面不合理,實踐教學效果差[6]。
3 C程序設計的教學組織方法(Teaching organization method for C programming)
3.1? ?計算思維構建C程序設計教學設計
計算思維是指以抽象化與自動化為特征的一種思維。學生之所以不會寫程序,不知道怎么寫程序就是這種抽象化和自動化能力不足的體現[7]。通過計算思維能給運用計算機科學的基礎概念進行問題求解、系統設計,將增強學生程序設計的能力。其計算思維活動序列圖如圖3所示。
在圖3中,抽象指的是對求解問題的一種描述,是對問題的表達和推演。在C語言中,把實際問題抽象成與其相應的形式化數學模型,然后構建數據結構,確定算法,最后編寫程序求解問題。具體而言,抽象就是用變量、函數、數組等數據結構和算法對需要解決的實際問題進行概括描述,抽象的過程實際上就是對實際問題確立數學模型的過程。抽象與實際問題的對應關系,見表1所示。
自動化就C語言而言,則是利用該語言的語法規則編寫語句,按照順序自動執行語句并進行自動轉換。運用該框架,構建數學模型、設計算法策略和數據結構,通過C語言實現問題工程,學生通過不斷的計算思維訓練和編程實踐,將有助于培養分析設計能力和工程設計能力,從而解決復雜工程問題,達到新工科人才培養的目的。但是C語言程序設計是面向大一新生的課程,理解抽象和自動化培養計算思維是比較困難的。需要在教學案例中針對實際的問題反復采用計算思維方式來分析問題,逐步培養使用C語言描述實際系統的思維。但這一映射過程達到熟能生巧的地步,學生就學會了如何定義變量,如何選擇邏輯結構,如何合理組織算法,如何編程實現客觀世界到邏輯世界的映射。如對以下問題的求解,見表2所示。
在教學中貫穿計算思維能力訓練,特別是在解決實際問題時展現科學分析問題過程,完成數學抽象,分析如何將數學模型映射為對應的數據結構和符合邏輯的算法設計,展示編程與調試,以及生成可執行的程序的過程,實現對計算思維的詮釋。這將保證學生的基礎知識、分析設計能力、工程設計能力的達成度。
3.2? ?基于MOOC完成自構建的過程監督體系
建構主義學習理論提倡在教師指導下的、以學習者為中心的學習,從而培養學生的自我學習能力以適應新工科人才的需要[8]。MOOC平臺是實現建構主義學習的有效平臺,通過該平臺,突出學習者的認知主體地位,體現教師的指導、幫助和促進作用,教師是整個學習過程中的組織者、幫助者和促進者,實現從傳授者和灌輸者的轉變。角色功能如圖4所示。
在該平臺中,教師將C程序設計中的基礎語法知識的相關內容發布到平臺中,學生根據教師指令,以及自身情況提前在平臺中有選擇的完成相關基礎知識的自主學習,在課堂教學中,根據學生的學習情況針對特定問題進行講解,節省了大量的課堂時間,教師可充分利用剩下的時間探討實際問題的解決方案,將有充分的時間進行計算思維、工程分析設計、工程規范、程序分析與調試方面的訓練。
同時,平臺具有記錄學生的學習痕跡的功能,將學生的學習時間、學習效果、學習程度等相關信息以統計的方式進行呈現,教師能及時發現學生的問題,實現快速反饋和分層指導,實現過程監督的有效性。同時將學習過程納入考試成績,可有助于提升學生對過程學習的重視程度,保證學習效果,排除期末臨時死記硬背應付考試的情況。
3.3? ?層層遞進實現知識內化的工程設計能力
學生在構建C語言知識體系時,可通過MOOC線上平臺完成基礎知識體系的構建,形成C語言的關鍵字、規則、規范的識記。在線下,在課堂活動中,通過計算思維訓練形成分析、設計、實現實際問題的求解,在求解過程中,教師融入工程設計的一些理念、框架培養工程設計能力。在C程序設計中主要思想見表3所示。
程序設計的學習從模仿開始,但在知識學習的積累過程中,要逐漸培養自己的思維邏輯,教師要積極引導學生進行思維訓練,鼓勵學生拓展思路,積極探索,采用不同方式實現一題多解,尋求更健壯、更容易維護的算法。實現知識內化到高階思維的轉變。
4? ?程序設計實踐探討(Practice discussion)
針對C語言程序設計,實踐是提升分析問題、解決問題的唯一途徑。只有在實踐過程中才能發現問題,才能找出自身的不足。在不同階段開展不同的實踐,見表5所示。
對于實踐的考核,一直以來是一個比較困難的問題,實踐過程存在抄襲的問題,如何判斷是否抄襲,如何阻止這一現象發生的最好方式就是實施過程監督,過程監督的載體就是實踐筆記,筆記中記錄實踐中遇到的問題,以及解決這類問題的方法,對實踐過程進行歸納和總結,并進行反思。每個學生遇到的問題和解決方案是不一樣的,容易發現抄襲的學生。同時,實踐過程中形成的讀書筆記,將是一份寶貴的財富,歸納總結將加速學習的進步與提高。
5? ?結論(Conclusion)
為滿足人工智能引導下的“新工科”人才培養需求,將計算思維融入課程教學中,可使學生發散、模糊、混亂的程序設計思維清晰化、規范化;通過課程的實踐環節訓練能夠有效培養學生的計算思維、建立程序設計編程思想和編程規范和框架;并基于工程思想解決實際問題。并結合MOOC平臺提高學生自我學習的能力,并為教師提供了更為充分的時間開展計算思維和內化教學設計,培養學生的分析設計能力和工程能力。
參考文獻(References)
[1] 教育部高教司.新工科建設指南(“北京指南”)[J].高等工程教育研究,2017(04):20-21.
[2] 趙廣輝.面向新工科的Python程序設計交叉融合案例教學[J].計算機教育,2017(08):23-27.
[3] 顧麗紅,丁淑妍.面向計算思維的蒙特卡羅C語言程序設計案例探究[J].計算機教育,2018(01):105-111.
[4] 蘭麗,胡曉輝.工程認證背景下基于“雨課堂”改進“C語言程序設計”課程關鍵教學環節[J].計算機時代,2019(01):102-104.
[5] 季麗琴.以“編、改、調”三部曲改革C語言實踐教學[J].計算機教育,2018(04):114-116.
[6] 蔡美玲,張錦,竇亞玲,等.工程教育理念下《程序設計基礎》實驗教學改革探索[J].計算機工程與科學,2018,40(S1):21-26.
[7] 光蓉.融入計算思維的C語言實驗教學設計[J].實驗室研究與探索,2015,34(10):81-83;103.
[8] 于波,劉佳,張云晶,等.基于C語言課程的新工科人才編程能力培養支架式教學研究與實踐[J].吉林化工學院學報,2018,35(08):28-31.