酈麗 沈應兄
摘要:計算科學導論課程是培養計算機專業類學生計算思維的有效途徑。目前多數高校采用靜態流程圖和偽代碼的教學內容和教學方法,存在知識點古板,學生學習積極性差。本文結合計算思維和RAPTOR的特點,針對學生對流程圖仿真方式的接受能力強,以RAPTOR作為學習工具,通過師生配合,學生主動參與解決問題,培養學生的計算思維能力。
關鍵詞:計算思維;計算機科學導論;RAPTOR
引言
1972年,圖靈獎得主Edsger Dijkstra曾說過:“我們所使用的工具影響著我們的思維方式和思維習慣,從而也深刻地影響我們的思維能力。”在傳統《計算機科學導論》的教學中,老師主要傾向于對一些計算機方面知識、算法方面的介紹,學生也未能認識到本課程在后續學習中的重要性。RAPTOR是仿真環境,能把靜態的算法在學生沒有大多編寫代碼能力的前提下,把每個算法真正的用來解決實際問題,讓大一新生感受到編程的魅力。
1、計算思維與“計算機科學導論”課程的關系
1.1計算思維的概念
2006年3月美國卡內基·梅隆大學的計算機科學系主任周以真(Jeannette M.Wing)教授…在美國計算機權威期刊Communications of the ACM上對計算思維進行如下定義:計算思維是指運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。
1.2 RAPTOR
RAPTOR是the Rapid Algorithmic Prototyping Tool forOrdered Reasoning的縮寫,中文名稱是用于有序推理的快速算法原型工具。RAPTOR提供了一種可視化編程環境,為程序和算法設計的基礎課程的教學提供實驗環境。本文作者在長期的教學過程中發現,現在的大一新生從小學開設信息技術課程,經歷了初中、高中的計算機方面知識的學習,大部分學生仍然不具備熟練的程序設計基礎。另外《計算機科學導論》課程中涉及大量的算法問題,如:哥尼斯堡七橋問題、旅行商問題、漢諾塔問題等,這些都需要學生在理解問題的基礎上,通過對程序代碼的編寫去驗證算法,從而讓學生獲得算法訓練,為后續程序類課程的學習奠定基礎。原本《計算機科學導論》課程中,我們大多使用靜態流程圖的方式,給學生講解各類算法問題,或者有些高校使用偽代碼進行基礎算法訓練,這樣的實訓都是靜態的,學生無法真實體驗到編程帶來的樂趣。將RAPTOR引入大一新生的計算機科學導論課程,使用流程圖仿真方式進行簡單的程序設計,學生們表現出很大的興趣和高漲的熱情。
RAPTOR的特點:
編程語言簡單。RAPTOR仿真環境中一共只有6種語言,(1)賦值語句,是指給一個變量賦值,變量在使用前不需要申明變量的類型等,如給變量×賦值為3,則可以寫作x=3;(2)輸入語句,是指從鍵盤給一個變量輸入值,以實現人機交互的過程,主要有輸入提示和輸入變量兩部分組成,如從鍵盤給變量x輸入一個值,可以直接設置輸入提示為“input a numbertox:”,或者輸入提示也可以忽略不寫,輸入變量直接寫×即可;(3)輸出語句,是指從計算機中仿真運行的結果顯示在屏幕上;(4)選擇語句,是指根據條件真假選擇不同的執行分支。(5)循環語句,是指根據條件真假循環執行循環體語句。(6)調用,是指調用函數和子程序。
運算功能強大。RAPTOR仿真環境中一共有1 8種運算符,有算術運算符,如+,一,*,/等,有關系運算符,如>=,>,<,<=等,有邏輯運算符,如與、或、非等。
數據類型豐富。RAPTOR仿真環境中有數值型、字符串、字符、一維、二維數組,滿足大部分算法需要的數據結構。
結構化控制語句。
2、基于RAPTOR的計算機科學導論課堂教學和學習模型
2.1計算機科學導論課堂的教學目標
1985年,ACM和IEEE-CS開始對“計算作為一門學科”的存在性證明,報告認為:“計算機科學導論”課程應該要培養大學生面向學科的思維能力,讓學生能夠領悟學科的力量以及從事本學科工作的價值所在。報告希望該課程能類似于數學那樣嚴密的方式將學生引入計算學科各個富有挑戰性的領域中。
2.2基于RAPTOR的計算機科學導論課堂教學模型
傳統的教學模式:導人課程的理論知識,分析講解問題的實現過程。基礎知識抽象難于理解,學生只能被動地接受,很少能主動參與整個教學過程,無法體驗解決問題的思維過程。例如:遞歸是計算機科學的一種重要的解決問題的方法。遞歸是指一種(或多種)簡單的基線條件定義的一類對象或方法,并規定其他所有情況都能被還原為基線條件。遞歸的魅力在于用有限的語句未定義對象的無限集合。估計這樣的理論導人后,學生都已經完全蒙圈,老師到底要講什么?遞歸能解決什么實際問題?如何去解決呢?我認為大多數學生在計算機科學導論課程中,只是算法知識的普及,計算思維的培養,并非高深的學術研究,我們的教學應該盡量避免抽象理論,讓學生主動參與問題的解決過程中,從而培養學生使用計算思維解決實際問題的能力,如圖1所示,我們給出了基于RAPTOR的《計算機科學導論》課程學習模型。
2.3 RAPTOR對于計算思維能力的培養案例
遞歸算法的典型案例——漢諾塔問題(又稱河內塔)問題是源于印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子(假設三根柱子分別標號為:x,y,z),在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。主要的學習過程圖2所示。
首先,教師創設情境,提出問題。學生利用手機“漢諾塔”小游戲,積極參與到解決問題的過程中,分別記錄下移動1個、2個、3個……圓盤的過程,隨著移動的圓盤數目增加,學生會發現解決問題的過程越來越復雜,直到大部分學生都無法完成圓盤的移動。
其次,老師輔導學生,抽象描述問題。當盤子數目比較多的時候,問題比較復雜,我們先從簡單的情況開始分析。(1)如果移動1個盤子,只需要一步,直接把盤子從x移動到z即可。(2)如果移動2個盤子,我們需要移動三步:x上的小盤子移動到y;x上的大盤子移動到z;y上的小盤子移動到z。如果N比較大時,我們考慮能否將復雜的移動過程轉化為簡單的移動過程,即:要把x上最大的圓盤移動到z,必須先把N-l個圓盤移動從x移到y上。按照這樣的思路,我們抽象描述出移動N個圓盤的移動依次為:把x上N-l個圓盤移動到y上;把x上最大的圓盤移動到z上;把y上N-l個圓盤移動到z上。其中N-l個盤子的移動過程又可以按照同樣的方法解決,這樣的移動過程就是遞歸的過程,直到最后只剩下一個圓盤,就是N=l時遞歸程序中的“基線條件”為真,按照移動一個圓盤從x到z的方法移動。
然后,學生使用RAPTOR軟件,繪制main和move子程序流程圖,如圖3,圖4所示。
最后,RAPTOR仿真運行,運行結果如圖5所示。學生交流討論,完善思維方法,完成設計報告。
至此,根據基于RAPTOR的《計算機科學導論》課程學習模型我們完成了。
3、評價與總結
在《計算機科學導論》課程中對學生的計算思維能力進行培訓,目前處于探索階段,2017年第一學期在我校300名大一新生中進行實驗性教學,效果非常好,學生們積極參與到教學活動中來,經過兩個月的仿真訓練,有半數學生主要跟上課老師提出要學習寫代碼,并利用中國慕課網提前學習C語言程序設計,其中有一名同學通過自學以優秀的成績通過了國家計算機二級C語言。本文遞歸算法——漢諾塔問題,利用RAPTOR仿真環境,培養學生利用計算思維能力獨立學習、獨立解決實際問題,對后續課程的學生做好了一定的鋪墊作用。
參考文獻:
[1]WING J M. Communications of the ACM.2006(3):33-35.
[2]戰德臣,聶蘭順計算思維與大學計算機課程改革的基本思路.中 國大學教學.2013年第2期
[3]林旺,孫洪濤.基于軟件應用的計算思維能力培養教學設計.中國 電化教育.2014(11):12 2-126