官术网_书友最值得收藏!

前言

本書基于MIT的一門課程寫成,這門課程始于2006年,自2012年起,成為edX和MITx上的一門“大規模在線開放課程”(Massive Online Open Courses, MOOC)。本書第1版基于一個學期的課程,但隨著時間的推移,我不得不添加更多內容,再用一學期來講述課程已經不合適了。現在的這個版本適合于兩學期的計算機科學系列導論課程。

當我開始編寫第2版時,本以為只要加上幾章內容就可以了,但結果遠超預料。我重新組織了本書的后半部分,并將整本書中的代碼從Python 2換成了Python 3。

本書面向的是那些沒有或只有很少編程經驗,但希望掌握計算方法來解決問題的學生。書中的內容是一些學生學習更高級計算機科學課程的跳板,但對更多學生來說,則是正式學習計算機科學的一門課程。

正因如此,所以我們更強調課程的廣度,而不是深度。課程的目標是為學生簡述更多的主題,使他們在想用計算機完成目標時知道自己能做什么。盡管如此,這并不是一門“計算機鑒賞”課程,要求比較嚴格,而且有一定難度。讀者需要花費大量時間和精力才能真正掌握書中內容,使計算機服從自己的調遣。

本書的主要目標是幫助學生掌握并熟練使用各種計算技術,以得到有價值的成果。他們應該學會使用計算思維表述問題,并掌握如何從數據中提取信息。學生從本書中獲得的最重要的能力是,使用計算思維解決問題的藝術。

這本書很難納入傳統的計算機科學課程。第1~11章是典型的針對沒有或只有很少編程經驗的學生的計算機科學課程;第12~14章稍微高級一些,如果想學習進階技術,可以從這幾章挑選些內容,作為導論課程的補充;第15~24章介紹如何使用計算技術來理解數據,我們認為其中的內容應該成為計算機科學課程體系中的第二門課程(代替傳統的數據結構課程)。

第1~11章主要包含五個方面的內容:

? 編程基礎

? Python 3編程語言

? 計算問題的解決技術

? 計算復雜度

? 使用圖形表示信息

我們會介紹Python語言的大部分特性,但重點在于可以使用編程語言做什么,而不是語言本身。比如,第3章結束時雖然只介紹了Python語言的一小部分,但已經引入窮舉的概念、猜測與驗證算法、二分查找和高效近似算法??v貫本書,我們都會介紹Python的特性。同樣地,本書從頭至尾也會介紹編程方法。我們的理念是幫助學生們掌握Python,并成為一個優秀的程序員,能夠使用計算技術解決自己感興趣的問題。

書中示例都使用Python 3.5進行了測試。Python 3修正了Python 2各種發布版本(通常稱為Python 2.x)在設計上的很多不一致性,但它不是向后兼容的,這意味著大多數使用Python 2編寫的程序不能在Python 3中正常運行。因為這個原因,Python 2.x還在被廣泛使用。第一次使用Python 3中不同于Python 2的特性時,我們都會明確指出如何在Python 2中完成相同功能。書中所有示例都有Python 3.5和Python 2.7的在線版本。

第12~13章介紹了優化,這是一個雖然重要但很少包含在導論課程中的主題。第14~16章介紹了隨機規劃,這也是一個雖然重要但很少包含在導論課程中的主題。我們在MIT授課的經驗是,在一個學期的導論課程中,或者可以講述第12~13章的內容,或者可以講述第14~16章的內容,但不能二者兼顧。

第15~24章在設計上是獨立成篇的,內容涉及如何使用計算技術來理解數據。其中使用的數學知識不超出高中代數的范圍,但要求讀者具有嚴謹的思維能力,且不會被數學概念嚇倒。這一部分包括多數導論課程中沒有的內容:數據可視化、模擬模型、概率與統計思維,以及機器學習。我們相信對大多數學生來說,這部分內容遠比那些典型的第二門計算機科學課程的內容更有意義。

我們沒有在每章末尾設置習題,而是在每章的適當部分插入了“實際練習”。有些練習非常簡短,目的是使讀者確認自己確實明白了剛剛學過的內容。有些練習增加了一點挑戰性,適合在考試時使用。其余練習的難度比較大,可以作為課后作業。

本書有三個普適性主題:系統的問題解決方式、抽象能力,以及將計算思維作為思考世界的一種方式。學完本書后,你應該:

? 學會使用Python語言進行編程和計算;

? 學會系統性地組織、編寫、調試中等規模的程序;

? 理解計算復雜度;

? 將模糊的問題描述轉化為明確的計算方法,以此解決問題,并對這個過程有深刻的理解;

? 掌握一些有用的算法以及問題簡化技術;

? 對于那些很難得到封閉解的問題,知道如何使用隨機性和模擬技術進行清晰闡述;

? 學會使用計算工具(包括簡單的統計、可視化以及機器學習工具)對數據進行理解與建模。

編程本身就是一項非常困難的活動。正如那句名言所說:“在幾何中,沒有專為國王鋪設的大道?!?img alt="據傳,公元前300年左右,托勒密國王希望有學習數學的捷徑。對于這個要求,歐幾里得給出了這樣的回答。" class="qqreader-footnote" src="https://epubservercos.yuewen.com/AC43B1/14642180505206306/epubprivate/OEBPS/Images/note.png?sign=1749421001-BzRbhsvILrBv7bJHg34LktjvK28VCyPM-0-72e0e2b489ebb4aeced273fd8ad4e154">對于編程來說,也沒有捷徑可走。如果你想真正掌握書中的內容,光閱讀是不夠的,還應該親自運行書中的代碼。2008年以來,本書基于的各種課程都放在MIT的開放課程網站(OpenCourseWare, OCW)上。這里有授課過程的視頻錄像,以及一系列習題和考題。從2012年秋季開始,我們在edX和MITx上提供了在線課程,其中包括本書的大部分內容。我們強烈推薦你做做OCW和edX上提供的習題。

電子書

如需購買本書電子版,請掃描以下二維碼。

主站蜘蛛池模板: 温州市| 合江县| 沁阳市| 河津市| 台安县| 金塔县| 贵港市| 石首市| 五莲县| 敖汉旗| 阜新| 嵩明县| 武定县| 谷城县| 客服| 博湖县| 宁河县| 伊川县| 丰宁| 安阳市| 元谋县| 墨玉县| 镇巴县| 文安县| 蕉岭县| 馆陶县| 文登市| 郁南县| 永济市| 灌云县| 腾冲县| 罗平县| 巴塘县| 金秀| 桃园市| 建宁县| 布尔津县| 扬中市| 翼城县| 宣武区| 昂仁县|