張鋼 冉娟 朱鵬飛 張寧
摘要:為了避免程序設計入門課程教學容易忽略的“思想”和“方法”問題,提出引入基于流程圖可視化軟件Raptor作為程序設計工具,詳細闡述“Raptor流程圖+算法設計”教學模式的優勢,最后總結教學實踐體會,說明教學效果。
關鍵詞:Raptor;程序設計;計算思維
1 背景
數學思維強調的是數與形的邏輯關系、演算推理能力,計算思維則是強調問題求解的操作過程和機器實現。在信息技術快速發展和廣泛應用的當今社會,計算思維已不知不覺地體現在社會生活各個方面,成為了現代社會不可缺少的基本技能。在教育部高等學校大學計算機課程教學指導委員會的推動下,通過各高校的教學改革實踐以及各種論壇的廣泛交流,目前已經形成了基本共識,即:大學計算機基礎課程的核心價值就是培養學生的計算思維。要想以培養學生計算思維能力為核心,就要使計算思維如同邏輯思維一樣,學生在這種思維指導下學習,不僅是掌握計算機科學知識,而且要讓計算思維成為每個學生應具備的基本能力。既然是每個學生都必須掌握的思維能力,該如何培養學生具有這種思維方式?又該如何讓學生學會用計算思維的方式思考問題和解決問題?這顯然不是某門課程能獨立做到的,它需要滲透到每一門課程中,把這種抽象的思維方式融入到學生的生活和今后工作中。
長久以來,各高校都將“C語言程序設計”作為新生一入學后必須掌握的一門程序語言設計,其目的是為了教會學生程序設計的“思想”和“方法”,能夠運用其思想和方法來解決實際問題。但通過多年的教學實踐發現:學生剛開始學習時,興趣十足,愿意花費很多時間來研究與學習,但隨著后續學習過程中語法的增多和算法設計的增大,學生不得不將課程學習的重心從程序設計方法轉移到語法規則上,忽略程序設計的思想和方法,久而久之,學生面對這些煩瑣的語法時就失去了對程序設計的學習興趣,無形中在他們的大腦中就形成了程序設計課程難、學不會等印象,導致了C語言程序設計課程教學效果的下降。
這就必須改革教學內容和教學方法,試著探索在程序設計中拋開煩瑣的語法規則,真正體現程序設計的“思想”和“方法”,實現學習程序設計的目的就是讓學生學會解決問題,讓計算思維成為學生應具備的基本能力。為此,我校率先在2014級開設了“Raptor可視化程序設計”課程,將Raptor作為程序設計工具,讓學生從簡單易懂的程序流程圖人手,學習程序設計的“思想”和“方法”,將學生學習重心放到程序設計的本身上,強調對問題的求解與實現方法,這樣不僅能激發學生的學習興趣,還有利于學生思維方式和思維能力的培養。在此基礎上,提出以“Raptor流程圖+算法設計”為教學改革思路,從基本問題到綜合問題不斷逐步深入,通過利用“發現問題一分析問題一尋求多種解決方案一多種方案比較優化”的“任務驅動式問題求解”的訓練方法,從而實現解決實際問題的教學模式。
根據以上思路,以“計算思維”為導向的程序設計課程教學目標應集中體現在以下方面:
(1)知識能力:沒有煩瑣語法的程序設計,課程強調程序設計的“思想”和“方法”,在知識能力目標上,要讓學生首先掌握程序設計基本概念,然后是程序設計的思想、設計方法、調試方法。
(2)技術能力:學習程序設計的目的就是為了解決各種實際問題,能夠將實際問題以抽象化和程序化的形式表示出來,在教學過程中不僅要注重對學生分析問題、抽象問題能力的培養,更要注重對問題求解與數學建模、算法優化等能力的培養。
(3)創新能力:突出計算思維能力的培養是程序設計教學的教育價值,因此應倡導算法思維的多樣化,不僅能培養學生的實踐能力,還能培養學生的創新能力。
2 基于流程圖的可視化軟件Raptor
Raptor是一種基于流程圖的可視化編程工具,它具有以下特點:
(1)由各種相互連接的圖形符號構成可執行的流程圖,最大限度地減少了程序語言的語法理解。
(2)操作簡單,學生只需要通過拖拽操作就可將不同圖形符號放置到所需要的位置上,工具軟件就可以自動將這些不同圖形符號連接在一起,形成一個完整的流程圖。
(3)簡單易懂,由于流程圖與自然的思維過程相近,能夠比較簡單地讓學生掌握和理解程序的設計與算法。
Raptor除了具有流程圖特色外,還具有其他諸多重要特點,例如,計算操作的原子化和算法的執行步驟統計等,為算法設計、算法優化、算法復雜性分析提供了有力的實驗或驗證手段。
3 “Raptor流程圖+算法設計”教學模式
融入計算思維的程序設計課程的教學內容要以“程序設計”為中心,從基本問題到綜合問題逐步深入,通過利用“發現問題一分析問題一尋求多種解決方案一多種方案比較優化”的“任務驅動式問題求解”的訓練方法,來實現實際問題的解決,從而達到提升學生計算思維能力的目的。具體實施包括以下幾個方面。
3.1 課程教學內容循序漸進,便于思維訓練連貫性
課堂教學內容的選擇應從新生對程序認知能力實際出發,選取更多趣味性和貼近生活的案例,由基本問題到綜合問題逐步深入,讓學生能夠循序漸進掌握程序設計方法,也便于思維訓練的連貫性。表1為“猜數游戲”任務案例。
3.2 強化課程實踐環節,提升學習興趣
根據《大學計算機基礎課程教學基本要求》所提出要加強實踐教學,注重能力培養,提升學生的計算思維能力。在教學過程中,根據學生對編程不同的認知能力和層次水平,將該課程的實踐內容分為基礎題、中級題和高級選作題三類,讓學生根據自己層次能力來完成題目。基礎題目一般包括雞兔同籠問題、判斷明年是否是閏年、20以內累加和、創建數組等;中等題目一般包括水仙花數、100以內的奇偶數之和、百萬富翁換錢、出售金魚等;高級選作題目一般包括打印等腰三角形、抓交通肇事犯、字母出現頻率的統計等。除此之外,恰當的趣味程序設計內容也提升了學生對程序設計學習興趣和對知識點的掌握。
3.3 思維多樣化。提升計算思維能力
算法設計實踐旨在訓練學生抽象思維能力,在程序設計課程的教學活動中,教師應尊重每位學生在思維能力和心理特征上存在的個體差異,倡導多樣化的算法思維,鼓勵學生對問題能夠“一題多解”,通過分析找出不同解法的優缺點,并根據其優缺點完善自我的程序,從而激發學生的思維活動,提升學生的計算思維能力。
3.4 課程教學方法的創新
程序設計強調理論聯系實際,如何從培養計算思維能力的角度,把課堂講授、上機實踐、課后輔導3個環節有機地結合起來,需要對教學方法不斷總結和創新,主要包括:
(1)引入討論教學法。將學生作為教學主體,師生共享。鼓勵學生發散思維,引導學生思考和分析不同算法的優缺點,進而對程序算法進行簡化和優化。如:在數組中查找數據(見圖1和圖2),大多數學生采用二重循環的算法實現,引導學生思考如何改為一重循環,然后對兩種算法為何執行的算法效率不同進行比較與分析。這樣不僅能調動學生對程序設計課程的學習興趣,并且可以啟發學生自主思考,從而為培養學生計算思維能力打下基礎。
(2)案例分析教學法。以教師為主,學生分享為輔。教學過程中通過多種案例分析對一個知識點舉一反三,讓學生不僅掌握知識點,也學會靈活應用。
(3)興趣分組教學法。通過學生自愿組合的方式,將學生分成若干小組,每次布置作業后,隨機抽出小組成員對程序作業進行講解,小組間互為評分、提問,不僅能夠充分調動學生動手實踐能力,并且也能鍛煉團隊內的協作精神。
4 教學實踐體會
在2014級和2015級開設的“Raptor可視化程序設計”課程實踐,不但取得了良好的教學效果,而且也得到了學生的認可。據學生問卷調查顯示:90%的學生認為Raptor這種簡單明了的程序設計方式不僅容易讓學生理解和接受,而且通過對學生學習思考能力的培養和對程序設計學習熱情的引導,能夠讓學生對學習程序設計產生強烈的學習動力和學習興趣。在克服對程序設計的恐懼感的同時,培養了學生嚴謹認真的思維邏輯能力,增強了學生之間的交流與溝通、共同探討解題思路和方法、團結協作的精神。
在當今信息技術快速發展的時代,Raptor作為一種簡單易懂的可視化編程軟件,可以使用流程圖的方式來模擬程序的設計,體現利用計算機來求解問題的過程和方法,它不僅增強學生學習程序設計的興趣,而且通過對問題的思考、討論、交流,出示解決問題的流程圖并運行結果,使程序設計中原本抽象的教學過程變得更加清晰,讓學生親歷知識的產生和形成的過程。應當在教授計算機技術的同時,加強思維教育意識,讓學生增強運用計算思維的能力,使計算思維成為當代大學生的基本技能。