關于我們
書單推薦
新書推薦
|
計算思維——計算學科導論
本書共分7章,分別介紹計算與計算思維、充滿智慧與挑戰(zhàn)的計算理論(技術)基礎、計算思維之方法學、計算思維之算法基礎、面向計算之問題求解思想與方法、計算思維之程序基礎、基于計算之問題求解思想與方法、從“計算”到“文化”等。
本書特點:一是知識面比較廣、內容非常豐富;二是盡量體現(xiàn)“實例化、生活化、故事化、圖文并茂”的指導思想,以增強可讀性;三是內容比較新穎。 本書可作為高等院校計算機專業(yè)和非計算機專業(yè)的入門教材,也可供相關技術人員參考學習。
1. 對計算思維具有獨到見解。 2.既適合作為高等學校各專業(yè)學生計算機入門課程的教材,也可以作為計算機及相關專業(yè)“計算機導論”課程的教材。
前 言
2010年11月,在濟南的“大學計算機課程報告論壇”大會上,前教育部計算機基礎教學指導委員會主任陳國良院士做了關于“計算思維”的專題報告,筆者有幸參加了本次會議,首次學習并了解到了“計算思維”及其相關知識。那時,一邊聽陳院士的報告,一邊就在浮想聯(lián)翩——滿腦子的狹義計算思維。想到激動處,竟脫口狂言:“也許,我也能寫本計算思維方面的書!”彼時同事一臉的疑惑和莫言。會議開完了,諸事纏身,什么也不記得了。 2011年暑假,到風景秀美的張家界參加一個計算機方面的會議,會上又聽了一個專家做關于“計算思維”的報告,感覺自己真該做點什么了。會議結束后,在返回柳州的火車上,閑來無事,竟然規(guī)劃起《計算思維導論》的大綱來——大致勾勒了每一章寫點什么。 回到學校,一瞎忙乎,又忘記這回事兒了。 2012年春季,大概5月份,帶了幾個同事到武漢華中科技大學參加一個學術會議,再次聆聽到了陳國良院士等幾位專家關于“計算思維”的報告,深受啟發(fā)。又讓我產生了寫本書 前 言 2010年11月,在濟南的“大學計算機課程報告論壇”大會上,前教育部計算機基礎教學指導委員會主任陳國良院士做了關于“計算思維”的專題報告,筆者有幸參加了本次會議,首次學習并了解到了“計算思維”及其相關知識。那時,一邊聽陳院士的報告,一邊就在浮想聯(lián)翩——滿腦子的狹義計算思維。想到激動處,竟脫口狂言:“也許,我也能寫本計算思維方面的書!”彼時同事一臉的疑惑和莫言。會議開完了,諸事纏身,什么也不記得了。 2011年暑假,到風景秀美的張家界參加一個計算機方面的會議,會上又聽了一個專家做關于“計算思維”的報告,感覺自己真該做點什么了。會議結束后,在返回柳州的火車上,閑來無事,竟然規(guī)劃起《計算思維導論》的大綱來——大致勾勒了每一章寫點什么。 回到學校,一瞎忙乎,又忘記這回事兒了。 2012年春季,大概5月份,帶了幾個同事到武漢華中科技大學參加一個學術會議,再次聆聽到了陳國良院士等幾位專家關于“計算思維”的報告,深受啟發(fā)。又讓我產生了寫本書的沖動! 俗話說“事不過三”,該痛下決心做點什么了。可當時正在撰寫一本教學改革專著,須限期完成。2012年7月15日,專著總算“殺青”。7月16日,正式開始撰寫“計算思維”方面的書稿了。 回想起來,那時的我,手忙腳亂,日夜兼程。一邊著書,一邊聯(lián)系出版社,最后在廣西師范大學出版社的大力支持下,在國內“率先”出版了將近60萬字的《計算思維導論》。從“下筆”撰寫到正式出版拿到書,前后竟然不到4個月,為的就是“率先”和參加廣州會議(事后才知道,陳國良院士于同年同月出版了同名著作,不免汗顏)。 11月8日,筆者帶著幾十本書,屁顛屁顛地去廣州“大學計算機課程報告論壇”上交流。此程雖然收獲了業(yè)界不少人士好奇的眼光,但也招致了個別專家不屑的微詞——大意是“你等湊什么熱鬧、趕啥子時髦啊!”泄氣?No! 得意和任性的我,給陳國良院士寄了一本書。盡管此前從來沒有和陳院士打交道(除了遠遠地聆聽他兩次報告),盡管陳院士也于同年同月出版了同名著作,但后來還是得到了陳院士的許多褒獎!不免由衷感嘆,大家就是大家,不一樣的胸懷! 《計算思維導論》第一次只印刷了1100冊,我用課題費購買了1000冊,全部用于分發(fā)和交流了。盡管很多人沒有看到此書,但還是得到了不少肯定,直至今日,仍然有人在聯(lián)系筆者,希望提供教學資源和課件,以便教材的采用。還好,努力沒有白費。好消息一個接著一個來了! 2013年7月,教育部高等學校大學計算機課程教學指導委員會制訂并發(fā)布了極具戰(zhàn)略指導意義的《計算思維教學改革白皮書》(征求意見稿),我們編著的《計算思維導論》一書有幸成為主要參考文獻之一(總共5份參考文獻),也屬不易。 2013年10月,由教育部社科司組織評選“第三屆中國大學出版社優(yōu)秀教材”,《計算思維導論》榮獲“第三屆中國大學出版社優(yōu)秀教材”一等獎。 2014年11月,經過層層評審,《計算思維導論》被評為第二批“十二五”普通高等教育本科國家級規(guī)劃教材。 不知不覺兩年半過去了。 兩年半來,筆者一直在思考兩個問題:一是“計算思維”到底是什么?二是“計算思維”教育到底該怎么做? 第一個問題——“計算思維”到底是什么?相信也是教育界同行一直犯迷糊的問題。仔細想想,其實不怪大家迷糊。即便是“計算思維”的倡導者周以真教授,也沒有明確定義什么是計算思維(周教授在在美國計算機權威期刊《Communications of the ACM》上介紹“Computational thinking”時,用的不是系動詞“is”,而是“involves”),國內很多專家學者在撰文、報告時,也只是簡單地引述周教授的文獻,更有甚者,弄一大堆“云里霧里”的概念,讓大家更加迷糊。另外,王飛躍先生首次翻譯“Computational thinking”時把“thinking”翻譯成“思維”,本無可厚非,可不少人一見“思維”二字就斷章取義、望文生義了。 一時間,關于“計算思維”的各種不利看法和觀點滿天飛——有人說,腦科學還沒有搞清楚思維的機理,談什么計算思維?有人說,錢學森搞了那么久思維科學研究,也沒有搞出什么名堂,研究什么計算思維?有人說,計算機專業(yè)一直在教計算思維,有什么新鮮的?有人說,“計算思維”不過是一個嘩眾取寵的噱頭,兔子尾巴長不了;也有人說,教會學生使用Windows、Word、PowerPoint、Excel等工具,本身就是計算思維,因為著名學者EdsgerWybeDijkstra說過:“我們所使用的工具影響著我們的思維方式和思維習慣,從而也將深刻地影響著我們的思維能力!薄 更多人在觀望! 當然,也有不少人在努力地研究和探索。 筆者也陷入了深深的思索之中。俗話說,“解鈴還需系鈴人”。困惑之時,筆者細細研讀周以真教授的文獻,終有所獲。盡管周教授沒有明確定義計算思維,但卻明確地界定了“什么是計算思維,什么不是計算思維”,她提出的以下6點很值得大家仔細斟酌: ① 計算思維是概念化思維,不是程序化思維。 ② 計算思維是基礎的技能,而不是機械的技能。 ③ 計算思維是人的思維,不是計算機的思維。 ④ 計算思維是思想,不是人造品。 ⑤ 計算思維是數(shù)學和工程互補融合的思維,不是數(shù)學性的思維。 ⑥ 計算思維面向所有的人,所有領域。 這6點太重要了,這才是計算思維的核心和本質。 周以真教授說到了問題的要害,讓人由衷地敬佩!另外,周教授所指的“計算思維”是“Computational thinking”,而非“Computing thinking”,更不是“Computer thinking”,值得好好琢磨。 筆者仔細品味后,對什么是計算思維有了自己的認知——計算思維就是基于計算的、隱藏在一般陳述性知識和技術背后的、科學家們求解問題時的思想和方法,借用一句話,就是“Computational Thinking is about idea, not technology”。計算思維屬于科學方法論的范疇。 只有這樣的認知,計算思維才是概念化思維而不是程序化思維;只有這樣的認知,計算思維才是最基礎的技能而不是機械的技能;只有這樣的認知,才是人的思維而不是計算機的思維;只有這樣的認知,計算思維才是思想而不是人造品;只有這樣的認知,計算思維才是數(shù)學與工程互補融合的思維而不是數(shù)學性思維;也只有這樣的認知,才有可能面向所有的人、所有的領域! 在《計算思維導論》中,筆者就旗幟鮮明地指出計算思維屬于哲學方法論的范疇,并指出計算思維可以分為廣義計算思維和狹義計算思維;剡^頭來看,這兩個觀點沒有問題,但當時的認知還比較膚淺,多少有點瞎蒙的感覺。也正因為如此,筆者放下很多該做的事情,盡量抽出時間對《計算思維導論》進行修訂,期望以一種正確的認知觀反映計算思維,而不至產生誤導。這也就是本書全面改版的由來。 第二個問題——計算思維教育到底該怎么做?這也是廣大同行所關心的。幾年過去了,學者們通過立項研究等多種方式,出版了多本計算思維方面的著作和教材,一些學校也在努力“試點”,但計算思維教育似乎并沒有真正“落地”?陀^地說,計算思維到底該教些什么以及怎么教,還一直困擾著業(yè)界的大多數(shù)人。 不可否認的現(xiàn)狀是:計算思維似乎“狼煙四起”,業(yè)界多數(shù)人卻又“一頭霧水,莫衷一是”。以至各種理解與做法都有,大致分為四類。 一類是以“應用”做幌子,強調計算機基礎教育應該強化應用能力培養(yǎng),但一落到實處,還是技能培訓。確切地說,強化應用能力什么時候都沒有錯,關鍵是應用能力是分層次的,設計一艘宇宙飛船去太空深處探究奧秘也是應用,學會用Word編排文件也是應用,層次不一樣而已。 一類是以“濃縮”+“拼盤”的方式,講解計算機軟、硬件技術基礎的各種內容,如計算機系統(tǒng)組成、操作系統(tǒng)、數(shù)據(jù)庫、計算機網(wǎng)絡、信息安全等,幾乎涵蓋了計算機專業(yè)的所有核心課程。這樣一鍋“夾生飯”,對于教師和學生來說,真不知道如何咀嚼和下咽。 一類是站在計算學科教育研究的高度,圍繞“計算作為一門學科”討論計算學科的形態(tài)(抽象、理論、設計)、計算學科的基本問題、計算學科的知識矩陣、計算科學哲學、計算學科方法論等,給人的感覺是“著作”色彩很濃,作為“教材”,似乎并沒有怎么考慮教育的對象——剛入門的大一學生,他們能接受嗎? 再一類就是近年來,受“計算思維”影響,試圖尋求突破,在“狹義計算思維”的某些方面做了挖掘和整理,給人以新穎的感覺?陀^地說,“計算機思維”或“程序思維”更濃,“計算思維”不足。 筆者對計算思維的本質有了基本的認知后,對計算思維教育也有了進一步的認識,歸納起來,有如下幾方面的看法: ① 計算思維所蘊含的思想和方法,對拓展學生的“思維”空間、培養(yǎng)學生分析問題解決問題的能力非常有幫助,與高等教育強調創(chuàng)新與能力培養(yǎng)相吻合。分析圍棋高手的培養(yǎng),不難發(fā)現(xiàn),他們需要大量的時間研讀前人對弈過的棋譜,并從中悟出“道”和“術”,然后通過實戰(zhàn)提升自己的實力。而“大學計算機基礎”課程更像軟件使用說明書或者操作指南,側重于培養(yǎng)學生的技能。 ② 計算思維教育沒有太多現(xiàn)成的素材,需要深入挖掘和整理隱藏在知識和技術背后的、科學家們遇到問題時尋找解決辦法的思想和方法,這不是一件容易的事情。另一方面,計算學科雖然年輕,但能挖掘出來的“計算思維”內容卻非常豐富、素材相當多,不太可能全部納入教學內容,這就需要認真地篩選,最后確定一個最佳的集合,該集合應該涵蓋學科的不同層面。 ③ 計算思維屬于思想和方法層面上的東西,具有一定的抽象性。計算思維要“源于生活,高于生活,給人們以美的熏陶與享受”,這與大學教育是相稱的。大學教育本身就不應該那么功利,否則就與“職業(yè)培訓”相當了?v觀大學的課程,像數(shù)學、物理、化學、哲學等基礎課,無一不具有較強的抽象性。比較而言,原來的“大學計算機基礎”課程灌輸一大堆表象的、技術性的知識,培養(yǎng)所謂的操作技能,不管是內容還是難度都不怎么像一門大學的基礎課,充其量與大學物理實驗相當。另外,前者是程序性知識,
唐培和,男,教授,先后任廣西科技大學計算機學院院長、教務處處長。廣西高等教育學會計算機基礎教育專業(yè)委員會常務理事,全國高校計算機基礎教育研究會第六屆理事會理事,廣西高!敖虒W名師”。 長期從事計算機教學與科研,重點關注專業(yè)基礎課和計算機基礎教育。自知專業(yè)知識不夠精深,但還算廣博,提倡以博輔專,融會貫通。文風通俗,不飾粉墨,字如其人?芍^“三尺講臺畢生緣,一份癡情心血凝”。
第1章 計算與計算思維1
1.1 計算需求與計算技術的演化2 1.1.1 遠古時代的原始計算方法2 1.1.2 機械式計算技術6 1.1.3 機電式計算技術7 1.1.4 電子計算技術8 1.1.5 并行與分布式計算11 1.1.6 云計算與海計算12 1.1.7 未來的計算13 1.2 科學研究的三大方法——理論、實驗與計算14 1.3 計算(機)科學與計算學科15 1.4 計算思維18 1.4.1 什么是計算思維?18 1.4.2 狹義計算思維與廣義計算思維19 1.4.3 計算思維之應用21 第1章 計算與計算思維1 1.1 計算需求與計算技術的演化2 1.1.1 遠古時代的原始計算方法2 1.1.2 機械式計算技術6 1.1.3 機電式計算技術7 1.1.4 電子計算技術8 1.1.5 并行與分布式計算11 1.1.6 云計算與海計算12 1.1.7 未來的計算13 1.2 科學研究的三大方法——理論、實驗與計算14 1.3 計算(機)科學與計算學科15 1.4 計算思維18 1.4.1 什么是計算思維?18 1.4.2 狹義計算思維與廣義計算思維19 1.4.3 計算思維之應用21 閱讀材料:計算機發(fā)展史大事記24 第2章 充滿智慧與挑戰(zhàn)的計算理論(技術)基礎32 2.1 獨辟蹊徑的數(shù)據(jù)表示方法32 2.1.1 數(shù)據(jù)的表示——棄“十”選“二”的神來之筆32 2.1.2 有限的字長與大小不一的數(shù)據(jù)39 2.1.3 符號的表示——編碼41 2.1.4 鴻溝與代價42 2.2 從邏輯學到邏輯電路——思維可計算嗎47 2.2.1 生活中的“邏輯問題”47 2.2.2 邏輯與思維48 2.2.3 數(shù)理邏輯52 2.2.4 邏輯推理與人工智能55 2.2.5 邏輯門電路57 2.3 “九九歸一”的加法運算58 2.3.1 加法運算及其加法器的設計58 2.3.2 補碼運算——把減法當加法做61 2.4 計算的本質——圖靈機及其計算能力62 2.4.1 圖靈機模型62 2.4.2 圖靈機的工作原理64 2.4.3 圖靈機的計算能力67 2.5 計算機的構造——馮諾依曼機及其工作原理72 2.5.1 馮諾依曼型計算機的組成和工作原理73 2.5.2 思想與技術的演化75 2.5.3 馮諾依曼型計算機的特點及其局限性78 2.6 計算技術的開拓與發(fā)展79 2.7 什么都能計算嗎——難題及其可計算性82 2.7.1 難題何其多83 2.7.2 可計算性與計算復雜性86 2.7.3 難題大挑戰(zhàn)及其科學意義88 【閱讀材料】計算機系統(tǒng)(PC機)的硬件組成92 第3章 計算思維之方法學99 3.1 問題求解過程99 3.1.1 人類解決客觀世界問題的思維過程99 3.1.2 借助于計算機的問題求解過程101 3.1.3 兩種問題求解過程的對比104 3.2 數(shù)學模型——問題的抽象表示104 3.3 數(shù)據(jù)存儲結構108 3.3.1 順序存儲結構108 3.3.2 鏈式存儲結構109 3.3.3 索引存儲結構111 3.3.4 散列存儲結構111 3.4 客觀世界到計算機世界的映射方法112 3.4.1 面向過程的結構化設計方法學112 3.4.2 面向對象程序設計方法學116 3.5 時間與空間及其相互轉換122 3.6 抽象124 3.6.1 什么是抽象(Abstraction)124 3.6.2 計算學科中的抽象128 3.6.3 抽象的層次性128 3.6.4 程序中的抽象131 3.6.5 抽象與模型133 3.6.6 抽象與計算機語言134 3.7 串行與并行137 3.8 局部化與信息隱藏139 3.8.1 局部化139 3.8.2 信息隱藏(Information hiding)140 3.9 精確、近似與模糊141 3.10 折中與中庸之道142 【閱讀材料】計算機軟件及其軟件系統(tǒng)144 第4章 計算思維之算法基礎149 4.1 算法149 4.1.1 什么是算法149 4.1.2 算法的性質152 4.1.3 算法的種類153 4.1.4 算法的表示(描述)154 4.1.5 算法與程序159 4.1.6 算法的比較與分析161 4.2 算法設計的基本思想與方法164 4.2.1 窮舉法(也稱為枚舉法,Enumeration)164 4.2.2 遞推法(Recurrence)166 4.2.3 遞歸法168 4.2.4 回溯法(Backtracking)*173 4.2.5 分治法(Divide and Conquer)178 4.2.6 仿生法——蟻群算法(Ant colony optimization,ACO)*181 4.2.7 并行算法*184 4.2.8 算法設計與計算思維186 4.3 幾個常用的經典算法186 4.3.1 累加和、連乘積與最大(。┲187 4.3.2 查找188 4.3.3 排序191 4.3.4 邏輯分析與推理201 閱讀材料:MATLAB問題表示與計算207 第5章 面向計算之問題求解思想與方法213 5.1 大海撈針的搜索引擎213 5.1.1 網(wǎng)頁的自動下載與存儲214 5.1.2 網(wǎng)頁索引與匹配215 5.1.3 網(wǎng)頁排序方法218 5.2 瞞天過海的密碼技術225 5.2.1 有趣的對稱加密技術226 5.2.2 難解的非對稱加密技術229 5.2.3 數(shù)字簽名及其應用232 5.3 令人期待的人工智能235 5.3.1 人工智能時代正在快步走來235 5.3.2 人工智能方法論237 5.3.3 人工智能應用241 5.3.4 展望未來,人工智能會顛覆一切242 5.4 不可思議的自糾錯技術243 5.4.1 面臨的問題與挑戰(zhàn)243 5.4.2 重復傳輸244 5.4.3 冗余編碼246 5.4.4 校驗247 5.4.5 錯誤定位250 5.4.6 推廣應用252 5.5 柳暗花明的自然語言處理254 5.5.1 美好愿景254 5.5.2 原始的“逐詞替換”254 5.5.3 基于“規(guī)則”的方法256 5.5.4 從“規(guī)則”到“統(tǒng)計”259 5.5.5 基于統(tǒng)計的機器翻譯260 5.6 削尖腦袋的數(shù)據(jù)壓縮技術262 5.6.1 無損壓縮及其方法262 5.6.2 有損壓縮之“thinking”275 5.6.3 展望未來276 閱讀材料:計算機網(wǎng)絡277 第6章 計算思維之程序設計基礎280 6.1 數(shù)據(jù)的類型與本質280 6.1.1 我們熟悉的數(shù)與數(shù)據(jù)280 6.1.2 計算機世界中的數(shù)據(jù)282 6.1.3 數(shù)據(jù)的類型與本質283 6.2 變量的特定含義285 6.2.1 “先定義,后使用”286 6.2.2 變量得有自己“好聽”的名字287 6.2.3 變量是有類型的287 6.2.4 變量的作用域288 6.2.5 變量的生命周期289 6.3 有窮與無窮290 6.3.1 數(shù)據(jù)的有窮性291 6.3.2 程序的有窮性291 6.4 程序的基本控制結構292 6.4.1 順序結構292 6.4.2 條件選擇結構293 6.4.3 循環(huán)結構293 6.5 問題求解的本質過程294 6.6 效率與可讀性295 6.7 程序的構造特性297 6.8 上下文無關文法298 6.9 二義性298 6.10 嚴謹性299 閱讀材料:計算機語言概述300 第7章 基于計算之問題求解的思想和方法304 7.1 重復迭代,尋根問底——方程求根304 7.1.1 二分法(Bisection Method)304 7.1.2 簡單迭代法306 7.1.3 牛頓法308 7.1.4 其他求根方法310 7.2 有限劃分,無限逼近——定積分的計算312 7.2.1 問題求解的基本思路與方法312 7.2.2 求解算法315 7.3 千年求精,萬年求真——求解圓周率π316 7.3.1 關于圓周率的計算316 7.3.2 圓周率的計算史317 7.3.3 圓周率的計算方法319 7.3.4 圓周率的計算永無止境322 7.3.5 研究圓周率的意義322 7.4 大事化小,小事化了——有限元計算324 7.4.1 有限元方法的誕生324 7.4.2 什么是有限元方法324 7.4.3 有限元方法的基本思想325 7.4.4 有限元法求解問題的步驟326 7.4.5 有限元方法的應用326 7.4.6 有限元方法中的計算思維329 7.5 萬事俱備,不欠東風——數(shù)值天氣預報330 7.5.1 天氣預報的發(fā)展331 7.5.2 現(xiàn)代數(shù)值天氣預報原理333 7.5.3 天氣預報對計算技術永無止境的需求336 7.6 賭城之名,絕妙之法——蒙特卡羅法337 7.6.1 蒙特卡羅方法導引337 7.6.2 蒙特卡羅方法的基本思想與過程338 7.6.3 蒙特卡羅方法的應用與分析339 7.7 精確制導,百步穿楊——巡航導彈制導系統(tǒng)341 7.7.1 制導方法分類342 7.7.2 “戰(zhàn)斧”式巡航導彈344 7.8 紅樓遺夢,作者存疑——《紅樓夢》作者是誰345 閱讀材料:Python語言346 第8章 從“計算”到“文化”354 8.1 文化與計算文化354 8.2 計算文化的本質特征355 8.3 計算文化與傳統(tǒng)文化357 閱讀材料:一路走來的“云計算”359 附錄A ASCII碼字符集363 附錄B 幾種常用進位制數(shù)值對照表365 參考文獻366
你還可能感興趣
我要評論
|