孫守卿 鞠傳香 劉曉紅
摘要:計算思維是當前教育界廣為關(guān)注的一個重要概念。該文結(jié)合編譯原理實驗課程中的實驗內(nèi)容,以培養(yǎng)學生的計算思維為核心,從實驗內(nèi)容、實驗過程及考核方式三方面,對編譯原理的實驗課程實施改革,從而提高學生運用形式化方法抽象問題、描述問題、解決復雜問題的能力。
關(guān)鍵詞:計算思維;計算參與;形式化描述;關(guān)注點分離;
中圖分類號:G642? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2018)34-0090-01
1計算思維概述
計算思維是通過抽象、約減、遞歸、轉(zhuǎn)換和仿真等方法,把一個復雜問題轉(zhuǎn)換為可解問題的思維方法。計算思維是使用計算原理解決問題的一系列心智技能的集合,是邏輯思維、數(shù)學思維、創(chuàng)新思維、工程思維等多種思維的組和應(yīng)用。
周以真教授2006年第一次明確描述了計算思維,認為計算思維是一種使用計算機科學 的基礎(chǔ)概念解決問題、設(shè)計系統(tǒng)和理解人類行為等涵蓋計算機科學的一系列思維活動。[2]
2011年美國國際教育技術(shù)協(xié)會和計算機科學教師協(xié)會( ISTE&CSTA) 聯(lián)合推出的計算思維操作性定義中規(guī)定計算思維包含:提出問題、組織和分析問題、表征數(shù)據(jù)、自動化解決方案、分析和實施解決方案、遷移六個要素。九項核心概念和能力:數(shù)據(jù)收集、數(shù)據(jù)分析、數(shù)據(jù)表征、問題分解、抽象、算法和程序、自動化、模擬、并行化。[1]
2 編譯原理實驗教學目標
編譯原理課程是大學計算機相關(guān)專業(yè)的重要課程,編譯原理實驗教學的目標是希望學生掌握程序設(shè)計語言編譯程序構(gòu)造的一般原理、基本設(shè)計方法和實現(xiàn)技術(shù)。目前編譯原理實驗課的內(nèi)容主要有詞法分析設(shè)計,語法分析設(shè)計、中間代碼生成及優(yōu)化這幾部分。實驗內(nèi)容主要為驗證性實驗,學生只是單純編程實現(xiàn)特定語言如PL0語言的詞法分析和語法分析等算法的驗證。
以培養(yǎng)計算思維為核心的編譯實驗課程,主要訓練學生從計算原理、思想和方法的角度完成對自然語言、程序設(shè)計語言的詞法、語法完成形式化描述,訓練學生的抽象能力;通過對正規(guī)式的構(gòu)造、算法的實現(xiàn)、遞歸下降子程序的驗證實驗幫助學生理解遞歸的思想,訓練學生的算法思維和程序思維。通過對小型編譯器的構(gòu)造,培養(yǎng)學生的系統(tǒng)思維、工程思維及合作思維同時提高學生解決復雜工程問題的能力。
2.1 計算思維培養(yǎng)在編譯原理實驗教學中的實踐
(1)以編譯程序的構(gòu)造為整體目標,采用“自上而下”逐層細化的方式,設(shè)計實驗內(nèi)容。編譯原理實驗內(nèi)容及計算思維培養(yǎng)邏輯框架如下圖1所示:
(2)按照由淺入深、循序漸進的原則組織實驗。從學生的認知角度出發(fā),遵循螺旋式地擴展加深實驗內(nèi)容,直至復雜系統(tǒng)。實驗類別既包含驗證型實驗又包含設(shè)計型綜合實驗和研究型實驗,做到既能使學生在實驗的過程中鞏固了理論知識又能提高抽象問題的能力、算法分析的能力、程序設(shè)計的能力。真正做到創(chuàng)新思維的培養(yǎng)和實驗內(nèi)容有機結(jié)合、融會貫通。
2.2 編譯原理實驗教學組織過程
(1)實驗教學方法以任務(wù)驅(qū)動為主,有效利用網(wǎng)絡(luò)教學平臺。
首先,借助網(wǎng)絡(luò)教學平臺,教師將實驗的所有資料以及實驗任務(wù)提前發(fā)布到網(wǎng)絡(luò)教學平臺。學生可以從網(wǎng)絡(luò)教學平臺上下載學習和實驗課程相關(guān)的資料,完成課前的自主學習。這樣在實驗課程開始之前,學生對實驗項目內(nèi)容以及所使用的軟件工具已經(jīng)有了基本的了解。對實驗所需的環(huán)境,需抽象的語言集合,如TEST語言的詞法規(guī)則和語法規(guī)則有了初步的認識。
將實驗教學從以基本知識學習為主轉(zhuǎn)變?yōu)橐詥栴}求解和創(chuàng)新思維為主,使學生能夠主動探究實驗任務(wù)的解決方案。學生在自主完成實驗任務(wù)的過程中,可以將問題發(fā)布到網(wǎng)絡(luò)教學平臺的論壇中,進行討論。也可以給教師留言,教師可以及時為學生解決問題提供線索,增加了學生之間、師生之間的討論和交流。通過討論和交流,學生可以對實驗問題的解決方案有更多的認識,可以在實驗的過程中不斷更新、遞進完善自己的解決方案,與此同時,學生的創(chuàng)造力、算法思維以及批判性思維都得到了培養(yǎng)和訓練。
(2)采用SDUTOJ在線測試平臺為支撐。
將實驗題目發(fā)布到SDUTOJ系統(tǒng)中,借助該平臺,可以打破實驗教學的時空限制,學生可以隨時隨地進行實驗代碼的提交、調(diào)試、線上自動評測等。教師可以隨時掌握學生實驗提交的具體情況,并根據(jù)提交數(shù)據(jù),對實驗進行重點講解。同時,利用SDUTOJ系統(tǒng)進行隨機代碼查重,有效防止學生之間的代碼復制現(xiàn)象。
(3)線下答辯。對于課程最后設(shè)計一個小型的編譯器的綜合性實驗,采用線下小組答辯的方式。主要檢查學生對編譯系統(tǒng)各部分具體實現(xiàn)的過程、算法及據(jù)結(jié)構(gòu)的應(yīng)用情況、算法的創(chuàng)新性等。
3實施效果
通過實施該教學方法,學生在完成編譯原理實驗任務(wù)的同時,既加深了學生對編譯原理概念知識的理解,又鍛煉了編程能力,同時,培養(yǎng)訓練了學生對復雜系統(tǒng)進行抽象、約減的思維能力、解決復雜工程問題的能力。
參考文獻:
[1]劉敏娜,張倩葦.國外計算思維教育研究進展[J].開放教育研究, 2018,24(1):41-53.
[2]Wing, J.M.Computational thinking[J]. Communications of the ACM,2006,49(3):33-35.
[3]Wing, J.M. Computational thinking and thinking about computing[J]. Philosophical Transactions of the Royal Society, 2008,366(1881):3717-3725.
【通聯(lián)編輯:王力】