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