全書分為兩大部分,第一部分為可視化編程工具RAPTOR應用基礎;第二部分為問題求解案例,分為“枚舉和數論”、“游戲與博弈”、“圖論”和“學科應用”4個部分。書中案例大部分為設計型實驗,取材于學生自選并實現的算法作業。本書著眼于以學生為學習主體精神指導下的實踐與創新活動,充分體現現代大學生的思想與表達方式的多樣性、難能可貴的創新探索和旺盛的求知欲和好奇心。為讀者跨入計算機算法的大門開辟了富有趣味、簡便快捷的途徑。
《基于RAPTOR的可視化計算案例教程》適合作為大學計算機、計算思維導論和計算機科學導論課程的配套實驗教材,也可以獨立設課,還可以供自學者學習參考.
算法思維是計算思維的核心之一,在以往的大學計算機和計算機科學導論課程中,作者苦于沒有適宜的教學平臺來表現計算機科學思維,更談不上讓普通高校學生在接觸計算機課程的初期,就有機會來體驗和探索計算機科學的豐富樂趣與博大精深。
本書是作者在三年來“計算概論”教學實踐的基礎上,通過收集整理西安交通大學少年班預科二年級學生的算法作業編寫而成的。目的是為計算機科學的初學者提供一個面向問題求解的實踐方案。
全書主要包括兩大部分,第一部分為可視化編程工具RAPTOR應用基礎;第二部分為問題求解案例。書中案例大部分為設計型實驗,取材于學生自選并實現的算法作業。
作為一種新型的教學工具軟件,RAPTOR迄今對大部分國內讀者來說仍然是比較陌生的。所以本書前兩章主要介紹RAPTOR編程環境、圖形和視窗編程基礎和常用算法的實用程序。供初次接觸RAPTOR環境的讀者參考。需要對RAPTOR可視化編程工具進行深入了解的讀者可參考由清華大學出版社出版的《RAPTOR程序設計案例教程》。
本書的問題求解案例是從作者教學活動中積累的上百個案例中選取的。入選案例體現了學生思維的多樣性,分為“枚舉和數論”、“游戲與博弈”、“圖論”和“學科應用”4個部分。本書作為算法實驗的入門讀物,創新性主要體現在第2章“RAPTOR圖形與視窗交互”、第4章“游戲與博弈”和第5章“圖論”中,這些內容充分體現了可視化計算手段在提高算法的表達能力和趣味性方面的優勢,對深入引導學生的計算思維能力可以起到示范作用。大學生具有求知的好奇心,本書中可視化算法的探索是在教師引導、學生自主選題的基礎上完成的,而探索的成果體現在全書尤其是第6章“學科應用”中。
本書案例的編寫基本依照了波利亞(George Polya)問題求解的四部法則(理解問題、制定方案、實施方案、回顧與反思)進行。全書案例的電子文件放在清華大學出版社網站上(http://www.tup.com.cn),◆基于RAPTOR的可視化計算案例教程讀者可以下載后試運行,進行算法復雜性評估,并改進或者將其用于同類其他問題的求解。
為了讓大學新生能夠了解算法案例問題的求解過程,本書盡量保持原始案例的編寫風格和多樣性,這就意味著這些算法案例并不完美,存在很大的改進余地。這是本書在算法案例部分沒有給出習題的主要原因,這一部分的習題就是改進和完善本書中的案例,或者將其中的某些實現方法應用到讀者自身可以聯想到的算法實現,這些可以作為讀者自主學習的作業。
本書由程向前負責全書的構架設計與文稿編寫,周夢遠負責全書案例RAPTOR流程圖設計、改進與調試。本書選取了西安交通大學少年103、104、111、112、113、114班的高航(求解哈密頓回路的存在)、李浩成(SCC的求解)、張錢東(24點計算的解空間探索)、陳明博(矩陣算法)、楊金成(穩定婚姻算法等)、滕一銘(中國郵遞員問題)、朱煚(求關系網的最小分割)、夏子豪(視窗下的鼠標交互)、何自惟(求解冰激凌車問題)、馬騰(古希臘點燈術)、黃喆(圖形視窗下輸入圖并產生鄰接矩陣)、姜博馨(人機猜數字游戲)、田凌云(視窗下的鍵盤交互)、段嘉煒(鐘擺的動畫效果)、李婧涵(階梯數求解)、楊澤(素數環)、郭寧(狐貍與鵝的游戲)、于弦(求解繩子問題)、郭力豪(細菌繁殖與隨機圖)等同學的作業,以及軟件103班王嘉偉(用隨機法求解居住隔離模型)所提交的算法實現案例,作為全書的基本素材。
上述可視化算法案例的交流視頻由少年班同學自行錄制和制作,并在優酷網站上發布,有興趣的讀者可以在線觀看,以了解算法案例的原作者的設計和實現意圖。
西安交通大學教務處拔尖辦為少年班“計算概論”課程的教學改革提供了項目支持,作者在此表示衷心感謝。
由于時間倉促,本書在文字和案例上一定存在瑕疵,懇請讀者批評指正。
作者
2014年1月于西安交通大學